We are always looking to
improve the quality of our software products
and would welcome any feedback or suggestions
on how any product may be improved.
Design
Process
VERIFICATION AND VALIDATION
Verification involves checking that the
product conforms to its specification.
Validation involves checking that the
product meets the expectations of the
customer.
Requirements validation techniques, such
as prototyping are useful here. However,
flaws and deficiencies in the requirements
can sometimes only be discovered when
the system implementation is complete.
To satisfy the objectives of the Verification
and Validation process, both static and
dynamic techniques of component checking
and analysis are used. Static techniques
are concerned with the analysis and checking
of product representations such as the
requirements document, design diagrams
and the source code and may be applied
at all stages of the process. Dynamic
tests involve exercising an implementation
and can only be used when a prototype
is available.
Static tests include product inspections,
analysis and formal verification. Static
techniques can only check the correspondence
between a product and its specification.
They cannot demonstrate that the product
is operationally useful.
Product testing is still a good way of
testing and involves exercising the product
using data like the real data processed
by the product. The existence of product
defects or inadequacies is inferred from
unexpected system outputs. Testing may
be carried out during the implementation
and after.
When defects are found these are removed
by debugging. Defects in the code are
located and the product modified to meet
the requirements. Testing is repeated
to ensure that the change has been made
correctly.
THE TESTING PROCESS
The testing process proceeds in stages
where testing is carried out incrementally
in conjunction with system implementation.
UNIT TESTING
Individual components are tested to ensure
that they operate correctly. Each component
is tested independently, without other
system components.
MODULE TESTING
A module is a collection of dependent
components such as a collection of procedures
or functions. A module encapsulates related
components so that it can be tested without
other system modules.
SUB-SYSTEM TESTING
This phase involves testing collections
of modules that have been integrated into
sub-systems. The Sub-system test will
concentrate on the detection of interface
errors by rigorously exercising these
interfaces.
SYSTEM TESTING
The sub-systems are integrated to make
up the entire system. The testing process
in concerned with finding errors that
result from unanticipated interactions
between sub-systems and system components.
It is also concerned with validating that
the system meets its functional and non-functional
requirements.
TESTING STRATEGIES
A testing strategy is a general approach
to the testing process rather than a method
of devising particular system or component
tests. Different testing strategies may
be adopted depending on the type of product
to be tested and development process.
THREAD TESTING
Thread testing is an event based approach
where tests are based on the events that
trigger system actions. As part of the
testing process the product is analyzed
to identify as many threads as possible.
Threads are not just associated with individual
events but also with combinations of inputs
that can arise.
Threads are identified from an architectural
model of the system that shows interactions
and from descriptions of system input
and output.