Software Testing Life Cycle (STLC) is like a roadmap that guides how we test software, starting with planning and ending with making sure everything works as intended. As we explore the details of STLC, we’ll take a trip through how it has developed, its core principles, various phases, and the important role it plays in today’s software development.
Table of Contents
If you want to learn software testing in detail. Check out our course on software testing tutorial on our Youtube channel.
Meaning of Software Testing Life Cycle (STLC)
To make sure that the goals for software quality are met, a series of specific actions are carried out during the testing process. The entire process of testing is known as the Software Testing Life Cycle (STLC). This process is divided into six phases, where each phase has particular objectives and deliverables.
Phases of Software Testing Life Cycle
1. Requirement Analysis
In this phase, testers carefully review the software requirements documentation. This involves understanding the expected features, functionalities, and constraints of the software.
If there are any ambiguities or uncertainties in the requirements, a requirement traceability matrix (RTM) is made to determine the test case requirement. To summarize this phase, we will say that the following activities are done in this phase:
- Reviewing the software requirement document (SRD)
- Addressing the issues or ambiguities in the requirements
- Figuring out the required test cases and software testing tools
2. Test Planning
After understanding the requirements, the testing team defines the overall test strategy, including the testing levels (unit, integration, system, etc.), testing types (functional, performance, security, etc.), and the approach for test execution. At the end of this phase, the test strategy document and testing effort estimation documents are delivered.
3. Test Case Development
In this phase, the test documents, which include the test case ID, description, preconditions, test steps, and expected outcomes, are created by the testing team. The quality assurance team, stakeholders, project managers, and sometimes even the development team then evaluate these test documents.
4. Testing Environment Setup
This phase can be initiated either parallel to the test case development phase or after its completion. In this phase, the necessary infrastructure, tools and conditions for executing the test cases are configured. This includes servers, workstations, network configurations, operating systems, databases and all other components required to support the software to be tested. This phase also includes the implementation of security measures in the test environment that correspond to the security conditions in the production environment.
5. Test Execution
The activities that take place in the test execution phase include:
- This involves following the defined test steps, inputting data, and observing the actual results. Both manual and automated testing methods may be employed based on the nature of the test cases.
- Recording the actual results, if any discrepancies between the expected and actual results are found then they are documented as defects or issues.
- After fixing defects, Regression testing is performed to ensure that new changes or fixes haven’t introduced new defects or negatively impacted existing functionalities.
- If performance testing is part of the testing scope, various performance tests, such as load testing or stress testing, may be executed during this phase to assess the software’s performance under different conditions.
- Test execution reports are generated to provide insights into the results of the testing activities.
6. Test Closure
Test closure is the final phase of the software test lifecycle (STLC), in which the test activities are formally completed and documented. The test team prepares for the release of the product. This phase includes several activities, including the following:
- Review of Test Objectives: The test objectives established in the test planning phase are revisited to ensure that each objective has been addressed during the testing process.
- Execution of Planned Test Cases: Ensure that the results of all planned test cases have been documented. Any outstanding or skipped test cases should be justified and explained.
- Review of Defect Status: This includes identifying which defects have been fixed, which are still open and which have been deferred to future versions.
- Release of Testing Environment: If the testing environment was set up separately, it is released for other purposes as part of the closure process.
- Creation of Test Closure Document: A document is created that includes all test closure activities, including the testing objectives, schedule, scope, and resources used.
- Handover of Test Artifacts: The test artifacts, including test cases, test data and other relevant documentation, are handed over to the project team or archived for future reference.
- Collection of Feedback: Feedback about the testing process, tools used, and collaboration within the team is collected. Suggestions for process improvements are documented.
- Formal Handover of the Project: The testing team formally hands over the project to the next phase in the SDLC, whether it be the deployment phase or another release cycle.
Importance of Software Testing Life Cycle
STLC is an important process for ensuring the quality of software applications due to multiple reasons, which are as follows:
- It helps in the early identification and rectification of defects in software development. It reduces the cost and effort associated with addressing problems later, during, or after the implementation phase.
- Any major issues during or after the software release are less likely to occur because of this process.
- It helps in ensuring that the software behaves as required in different situations.
- The documents created during the life cycle promote traceability, which allows stakeholders to understand the testing process and the status of each test activity.
- It helps in ensuring that the software complies with industry-specific regulations and standards, such as ISO standards or regulatory frameworks in healthcare or finance.
Software Testing Approaches
A software testing approach is a set of principles, methods, and procedures that guide the testing process for a software application. Different projects may adopt different testing approaches based on factors such as project requirements, constraints, and development methodologies. Some common software testing approaches include:
1. Waterfall Testing: This approach involves performing the various testing levels one after the other without repeating any level. This testing is done only after the development phase is complete.
2. V-Model: This approach is similar to the waterfall model, but focuses on the testing processes in each development phase. It follows a sequential path, forming a V shape, and is also known as the Verification and Validation model.
3. Agile Testing: Agile testing is a testing method used in Agile development. It focuses on working together, short cycles, and quickly adapting to changes to consistently deliver small improvements.
4. Iterative Testing: Iterative testing involves repeated testing cycles throughout the software development process to refine and enhance quality, adaptable to various methodologies.
5. Incremental Testing: In this testing approach, system functionality is broken down into smaller increments or components. Each increment is tested independently before being integrated into the complete system.
6. Smoke Testing: Smoke testing is like a quick check to see if the main parts of a new software are working okay. It helps make sure the software is stable before doing more detailed testing.
7. Regression Testing: It is frequently performed after bug fixes or new feature additions. This test approach ensures that new code changes do not negatively impact existing functionalities.
8. Acceptance Testing: This testing is to check whether the software meets the specified requirements and is ready for release. It involves user acceptance testing (UAT) to ensure that end-users are satisfied with the product.
What are the Entry and Exit Criteria for Testing?
Entry Criteria: Entry criteria in software testing refer to the conditions or prerequisites that must be satisfied before testing can begin for a particular phase or level of testing. The entry criteria may vary depending on the project and the testing phase, but some common entry criteria are as follows:
- The code of the software under test should be developed and ready for testing.
- The testing environment, including hardware, software, and network configurations, should be set up and ready.
- Test data required for executing test cases should be available.
- Test planning activities, including the creation of test plans and test cases, should be completed.
- Detailed requirements documentation should be available for reference during testing.
- Testing resources, including testing tools, should be allocated and ready.
Exit Criteria: These are the conditions that must be met for testing to be considered complete and the software to be considered ready for release. The conditions included in this criteria are as follows:
- All identified test cases should be executed.
- All major errors should be verified and fixed.
- The code coverage metrics should meet the predefined criteria.
- Performance testing criteria, such as response times and throughput, should be met.
- Regression testing should be performed to ensure that new changes have not introduced regressions.
- User acceptance testing (UAT) should be completed successfully.
- Formal approval should be obtained from relevant stakeholders, such as the project manager or product owner.
- A comprehensive exit report summarizing the testing activities, results, and readiness of the software for release should be prepared.
Difference Between STLC and SDLC
Key differences between STLC and SDLC are illustrated in the table below:
Parameters | Software Testing Life Cycle (STLC)
| Software Development Life Cycle (SDLC)
|
Purpose | To ensure that the software is thoroughly tested and meets quality standards before being released | To deliver a high-quality software product that meets the specified requirements on time |
Scope | STLC is a subset of SDLC. It starts after the completion of the coding phase in SDLC and continues until the software is ready for release. | SDLC covers the entire software development process, from initial requirements gathering to final release and maintenance. |
Phases | Phases in STLC include requirement analysis, test planning, test design, test execution, and test closure. | Phases in SDLC include requirements gathering, design, coding, testing, deployment, and maintenance. |
Conclusion
In summary, the Software Testing Life Cycle (STLC) includes different testing phases and is a specialized phase within the broader Software Development Life Cycle (SDLC). It specifically concentrates on testing activities to ensure the quality and reliability of the software product. It operates within a specified timeline, aligning with the testing needs after the completion of certain development phases.