In the earlier days of software development, coders used to develop software without thinking about an integrated approach since there was rarely a need to involve multiple people. With the advent of complex systems where Lines of Code(LOC) runs into millions and software development being the responsibility of multiple coders and stakeholders, the industry felt the need for a system that can integrate various phases together. Keeping this in mind various processed were introduced to help manage software development.
These processes in simple terms are known a Software Development Life Cycle (SDLC).
SDLC provides a planned and standardized process for all phases of any System Development stage. Each phase tracks the development of the system, from project planning or feasibility study to maintenance of the system. (Click on the image below to view in full size)
When does Software Testing Life Cycle (STLC) start in SDLC?
Though it may sound unusual, testing involves almost 50 percent of the project. Testing begins right from Requirements phase and goes thorough design phase, coding phase, testing phase, installation, to maintenance of the project. On developmental process, STLC involves continuous testing to ensure the correctness of the implementation and if the development processes are followed.
Life Cycle Phase
|
Verification Activities
|
Elaboration
|
Requirements Analysis
– This phase analyses the customer’s requirements and developers’ specifications. Also, both product requirements and validation requirements should be established on this phase.
|
|
Verification Testing is applied on this stage. It is the static testing of development products. On this stage, testers check the completeness and correctness of the test plan, thoroughly analyzing test cases. They should also verify if requirements do not conflict with each other. Also, on this stage, testers start generating test data.
|
Design
– On this phase, detailed design of the system is built and verified complete.
|
|
On this phase, testers verify if the design met the objectives of the requirements, if the design is being effective and efficient on the hardware designated. Also, testers build test strategy and test plan at this stage.
Unit testing of developers is already applied here.
|
Program (Build) Phase testing
-Actual testing during the construction stage of the development.
|
|
Integration Testing is applied on this phase. Testers will determine the type and extensiveness of tests needed. The system runs tasks that involve other applications or database to verify it is performing accurately.
|
Test
|
Test application system
|
System Testing is used in this phase. Testers test the entire system, verifying test plan is followed, test cases are executed to validate if the software met the requirements and specifications.
Acceptance Testing is also involved in this phase. Users will be able to evaluate the software and verify if it has met what they need and require.
|
Installation
|
Place tested system into production
|
The software in this phase will be released to production after the testing team confirms the software is ready for production use.
|
Maintenance
|
Modify and retest
|
Tester must do Regression testing for any changes on this phase. Also, they should update test plan and other documents for the changes.
|
Maybe you’re wondering why STLC is important? It’s because all errors are costly, and it is more costly if the error is discovered later in the life cycle. It is researched that if an error propagates from the first phase to the last phase, it must be paid for four times.
- First cost – because the program has been developed inaccurately. This involves writing wrong specification, or improper documentation of the system, and coding the system wrong.
- Second cost – Testing team has not able to detect the error.
- Third cost – wrong specification and coding must be removed or corrected.
- Fourth cost – the system must be retested to confirm if the error is now fixed.
Based on the statements above, it is important to verify every single phase of the development process to prevent costly mistakes and delivering high quality systems.