Software testing belongs to a wider topic, Verification and Validation, where testing procedures try to achieve these goals.
- Verification: Check whether we are building the product right
- Validation: Whether we are building the right product
Some authors propose several strategies to improve software testing results:
- Quantify Requirements long before the testing begins: So testers can measure how close the product is to the client’s idea.
- Specify testing goals: Time between failures, cost of fixing a failure, etc
- Understand the client’s behaviour and develop a profile: Focus software testing on its real usage
- Testing plan featuring ‘Quick Testing Cycles’
- Self-ControlProduct: Failure detection
- Formal Testing Techniques: (Alright, they might be cool but too expensive)
- Continuous Integration
Strategies for Testing Software
- Verification of each module to check whether it implements the contract it relays on.
- Since some other components it depends on might not be yet available, some interface simulation must be developed.
- The goal of this process is to test the interaction between modules and prevent any problema when interconecting interfaces
- Top-Botton Aproach needs to generate simulators for no yet available modules
- Bottom-Up Approach tests first low-level modules and keeps adding higher-level ones so no simulation is needed
- Regression Tests are needed to be sure that when some modules has been modified all other keeps working ok
- Smoke Testing is a lightweight tests which aims to detect problem in a early stage. It must be tested daily
- Focuses to check whether the product stays close to the requirements
- Uses Alpha (developer + user) and Beta (only user) tests