This piece focuses on the lessons I have learnt on software testing. I'll be updating it as I learn more, so stay tuned...
Lesson 1: Read the specification documents so that you understand the software completely enough to test it. Another way to achieve this is to ensure that you are closely involved in the analysis and design of the software. This way, you would have a full grasp of the system and how it’s supposed to work.
Lesson 2: It is impossible to eliminate all the flaws of a software solution. The purpose of testing is to reduce the risks associated with rolling out the software and not to eliminate all flaws.
Lesson 3: The fact that testing does not reveal a bug does not mean that the application is bug-free.
Lesson 4: Build test cases from the list of requirements. This is important to ensure good coverage and traceability of the requirements.
Lesson 5: Prioritize your test cases. It is impossible to test everything, especially since the time allocated to testing in most cases, is limited. Prioritizing your test cases will ensure that you cover the critical areas, at the minimum.
Lesson 6: Decompose your software into a number of 'axes' which represent the different aspects of the system to be tested. Here are the areas your test should focus on:
- Functionality - Use Case Scenarios & Requirements Space
- Backup & Recovery
- Error Handling
- Third-party applications
- Code Structure
- User Interface Design, Elements & Controls
- Internal Interfaces (between modules of code)
- External Interfaces (between the system & other applications)
- Input Space (all possible inputs)
- Output Space (all possible outputs)
- Physical Components (Manuals)
- Data (Data Storage & Elements)
- In testing data sources, always ask yourself: Is the data generated by a formula? If yes, test that the formula works the way it should. Also, ask yourself, what are the sources of the data used in calculation? If data is imported from another source, test that the source database has the same value as the destination database. Data may get missing during import, export, transfer or migration operations.
Lesson 7: Focus on the areas that show the most defects while maintaining a broad coverage of other areas.