Digital Signal Processing Reference
In-Depth Information
2.7.3 Levels of Testing in the Development Cycle
Adigital design goes through several levels of testing during development. Each level is critical as an
early bug going undetected is very costly and may lead to changes in other parts of the system. The
testing phase can be broken down into four parts, described briefly below.
2.7.3.1 Module- and Component-level Testing
A component is a combination of modules. White-box testing techniques are employed. The testing
is usually done by the developer of the modules, who has a clear understanding of the functionality
and can use knowledge of the internal structure of the module to ease bug fixing.
2.7.3.2 Integration Testing
In integration testing, modules implemented as components are put together and their interaction is
verified using test cases. Both black-box and white-box testing are used.
2.7.3.3 System-level Testing
This is conducted after integrating all the components of the system, to check whether the system
conforms to specifications. Black-box testing is used and is performed by a test engineer. The testing
must be done in an unbiased manner without any preconceptions or design bias. As the codings of
different developers are usually integrated at the system level, an unbiased tester is important to
identify faults and bugs and then assign responsibilities.
The first step is functional verification. When that is completed, the system should undergo
performance testing in which the throughput of the system is evaluated. For example, an AES
(advanced encryption standard) processor, after functional verification, should be tested to check
whether it gives the required performance of encrypting data with a defined throughput.
After the system has been tested for specified functionality and performance, next comes stress
testing. This stretches the system beyond the requirements imposed earlier on the design. For
example, an AES processor designed to process a 2Mbps link may be able to process 4Mbps.
2.7.3.4 Regression Testing
Regression testing is performed after any change to the design ismade as a consequence of bug fixing
or anymodification in the design. Regression tests are a sub-set of test vectors that the designer needs
to run after any bug fixing or significant modification in an already tested design. Both black-box and
white-box methodologies are used. Fixing a bug may resolve the problem under consideration but
can disturb other parts of the system, so regression testing is important.
2.7.4 Methods for Generating Test Cases
There are several methods for generating test cases. The particular choice depends on the size of the
design and the level at which the design is to be tested.
2.7.4.1 Exhaustive Test-vector Generation
For a small design or for module-level testing, the designer may want to exhaustively generate all
possible scenarios. However, the time taken by testing increases exponentially with the size of the
Search WWH ::




Custom Search