The main objective of testing is to find defects in requirements, design, documentation, and code as early as possible. The test process should be such that the software product that will be delivered to the customer is defect less. All Tests should be traceable to customer requirements. Test cases must be written for invalid and unexpected, as well as for valid and expected input conditions.
A necessary part of a test case is a definition of the expected output or result. A good test case is one that has high probability of detecting an as-yet undiscovered error.
- Define the expected output or result.
- Don't test your own programs.
- Inspect the results of each test completely.
- Include test cases for invalid or unexpected conditions.
- Test the program to see if it does what it is not supposed to do as well as what it is supposed to do.
- Avoid disposable test cases unless the program itself is disposable.
- Do not plan tests assuming that no errors will be found.
The probability of locating more errors in any one module is directly proportional to the number of errors already found in that module.
- Testing and evaluation responsibility is given to every member, so as to generate team responsibility among all.
- Develop Master Test Plan so that resource and responsibilities are understood and assigned as early in the project as possible.
- Systematic evaluation and preliminary test design are established as a part of all system engineering and specification work.
- Testing is used to verify that all project deliverables and components are complete, and to demonstrate and track true project progress.
- A-risk prioritized list of test requirements and objectives (such as requirements-based, design-based, etc) are developed and maintained.
- Conduct Reviews as early and as often as possible to provide developer feedback and get problems found and fixed as they occur.