- Show that program does what is intended
- Execute program using artificial data
- Demonstrate that software meets requirements
- Discover defects
Verification and validation
- System is fit for purpose
- Are we building the right product?
- Are we building the product right?
- Analysis of the system to discover faults.
- Static verification.
- Code and document reviews.
- Manual process.
- A very effective ability to find hidden errors.
- Exercising and observing product behaviour
- Dynamic verification
Stages of testing
- Development testing, during which the system is tested to discover bugs and defects
- Release testing, during which the system is tested to check that it meets its requirements
- User testing, during which the system is tested in the user’s environment
- The system is tested to discover bugs and defects
- The system is tested to check that it meets its requirements
- The system is tested in the user’s environment.
- Several individual units are integrated to create composite components. Component testing should focus on testing component interfaces.
- Some or all of the components in a system are integrated and the system is tested as a whole. System testing should focus on testing component interactions.
- Individual program units or object classes are tested. Unit testing should focus on testing the functionality of objects or methods.
- Partition testing
- Guideline-based testing
- Groups of inputs with common characteristics
- Based on experience in knowing types of errors and where they occur
- A class of inputs or outputs of which it is reasonable to expect that the system will behave the same way for all members of the class—for example, all strings with less than 256 characters
Test-driven development process
- Identify the increment of functionality required.
- Design tests for this functionality and implement them as executable programs.
- Run a test along with other implemented tests. The test will fail.
- Implement the functionality and re-run the test. Iterate until the test works.
- Move on to implement the next chunk of functionality.
- Users work with the development team to test the software as it is being developed.
- The software is released to selected users for testing before the formal system release.
- Customers test a system to check that it is ready for deployment.
- The software is tested by a team different than the development team.
- The purpose is to show that the system meets its requirements.