Effective testing removes errors. In any particular case, how do we know how much testing we should aim to do?
Should we do full testing or only partial testing?
The basic forms of testing are as follows:
- Full testing starts no later than the requirements phase, and continuous through acceptance testing.
- Partial testing begins any time after functional design has been completed, with less than optimal influence requirements and functional design.
- Endgame testing is highly validation oriented, with no influence on requirements or functional design.
- Audit level testing is a bare bones audit of plans, procedures, and products for adequacy, correctness, and compliance to standards.
To enable an effective test effort, we need a software development process that produces:
- requirements specifications (required for full testing);
- functional design specifications (required for full, partial and endgame testing);
- Internal design specifications (required for maximum effectiveness of full & partial testing).
From testing perspective, full testing means we must have reasonably clear and complete requirements specifications. One of the first things testers can do to improve their process is to press for access to the kind of specification that they need.
For partial or endgame testing we need at least the functional design specifications. For maximum effectiveness we need the internal design specifications because internal information of this kind tells us how the product has been constructed.