Several of you have asked me about testing and its relationship to the software development life cycle. Basically testing follows a life cycle that corresponds to every phase of the development life cycle.
During the project planning phase, the project manager must decide what things to be tested based on the Software Requirements Specification (SRS). This is the time where the test leader and the project manager work together to create the Software Test Plan (STP) that describe the scope, the testing framework, test method, test schedule, function to be tested or not tested, what types of test to be done at different phases of the life cycle, the environment for testing, and the assignment for each tester.
During the requirement phase, test team members must review the Software Requirements Specification (SRS) and the Software Test Plan (STP) to make sure that they understand the requirements and what should be tested. They will add more details to the Software Test Plan to make sure that they have covered all functions that must be tested. After completed, the revised Software Test Plan will be sent to the development team for review to ensure the correctness, completeness of the plan. Both teams will discuss information regarding project schedule and coordinate development activities with the test activities. This is important since both developers and testers must work together on test cases, test data, test scripts as well as any additional tests to make sure that the final product will meet customer’s requirement. The revised Software Test Plan will also be sent to customer for review and approval. Once approved, it means that if all tests pass, the software product meets the customer’s requirements.
During the software design phase, as developers put more details into the design, testers must work with developers to add more details to the test plan and test cases. They have to determine which tests can be automated and which one must be done manually. This is also the time to identify any risk issues and plan to mitigate them. Test team must define test data for each test case, build the test scripts for all automated tests and revise testing schedule, if needed.
In the coding phase, as developers working on their codes and prepare their tests (Unit tests and Functional tests), testers must also complete all their test cases, test scripts, test drivers and other additional tests as required in the Software requirement specification (SRS) for example, Security test, Stress test, Smoke test, and Performance test etc.
In the testing phase, after the developers complete their unit tests and functional tests. Test team must execute all remaining tests including stress and performance test cases, all results must be documented such as number of defects, number of tests passes or failed, status of defects, if needed testers must also revise test cases or add new tests cases (If there are requirements changes or code changes) and retesting test cases and perform regressing tests. Test team must also prepare for acceptance tests conducted in customer’s environment as well as anything that must be verified.
After the project is completed, the test team must evaluate all testing activities, testing process and plan for future improvement. In this phase, the test team will analyze its testing process and document good things and bad things. They must make sure that if they made any mistake, it will not be repeat in future projects. No project is perfect, no test is perfect so there always be opportunity for improvement and the more they can improve, the better they would do next time. Testing is an important function of any good software organization and having better testing team, the better quality product can be expected.