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.