As long as we learn, fix and enhance the features, Mistakes are ok to be made!
While mistakes or defects/bugs in software terms are inevitable and that is why testing is important in a software lifecycle.
Lifecycle in software generally denotes stages or phases that are executed sequentially in a process.
Like software development lifecycle, testing also has a lifecycle and it consists of six phases.
It is not mandatory to follow all the phases, also there can be other testing phases in the process, based on the requirement. STLC helps in ensuring the software quality.
The major testing phases in Software Testing Life Cycle (STLC) are
In an ideal scenario, the next step of a STLC cannot be started until the step before it is completed. Each phase of the STLC has an entry and exit criteria.
Entry criteria is nothing but prerequisites that have to be met before starting the testing phase. Exit criteria is more like a checklist that needs to be fulfilled before finishing that particular testing stage. The same is presented as a deliverable.
Requirement Analysis:
This is the first step in the Software testing life cycle (STLC). In this step the quality assurance team gathers the requirements. They understand the application under test and check the expectations of the stakeholders (like technical leads, architects and business analysts). In this step, they decide what all features can be tested. This helps in identifying the scope of testing. If any feature cannot be tested, the team will communicate during this phase, so the stakeholders can plan for other mitigation strategies. They will decide functional & non-functional strategies in this step. Also scope of automation testing will be decided in this stage.
Entry Criteria: Requirement Specification Document, Acceptance Criteria and Product Architecture.
Exit Criteria: Feasibility Report and Requirement Traceability Matrix (list of all questions with answers, that are to be resolved).
Test Planning:
Test Planning, also known as test strategy, is the most important phase in STLC. Here the person in charge of the testing process, a testing lead or manager will decide on the effort and cost involved for the entire testing process. Based on the requirement analysis, a test plan will be determined. This phase determines what needs to be tested and how much resources, tools will be needed for the test. At the end of this phase, there will be a projected time, effort and cost estimations. Risk analysis is also a part of the test planning phase.
Entry Criteria: Requirement Traceability Matrix, Automation Feasibility Report.
Exit Criteria: Test Plan with timeline, resource allocation, cost and risk analysis.
Test Case Development:
Once the test plan is created, the Quality assurance team starts preparing the test cases. The testing team will prepare test cases for each and every single unit under test. One important thing to be noted is test cases should be efficient and can be adapted under different scenarios. In case any test data is required they are gathered during this stage. The test coverage should be maximum, once all the test cases are created. If any automation is involved, automation scripts are developed at this stage.
Once test cases are done, they are sent to QA lead and business analysts for review and modify if anything is required.
Entry Criteria: Approved test plan.
Exit Criteria: Test cases and scripts involved in automation.
Test Environment Setup:
Test environment configured and deployed by the developer or the customer. In this stage all the tools required for testing like selenium, Appium etc. Test servers are also installed at this stage. This stage doesn’t depend on test case development, hence, can be done in parallel along with test case development. The testing engineers prepare smoke test cases to ensure the readiness and stability of the testing environment.
Entry Criteria: Project Architecture & System Design and Detailed Test Plan.
Exit Criteria: Approved Test Cases & Stable Test Environment.
Test Execution:
Once the test environment is ready, the approved test cases are executed to test the features of the application under test. When a test case fails, a corresponding defect or bug is reported to the development team through a bug tracking system. Usually with every failed test, a bug or defect will be associated. Once the development team fixes the bug, the same test is done again until the test is passed. Some test cases are marked as blocked due to some defect or feature in the application. Tests that are run successfully are marked as passed. A report is created with passed, blocked and failed tests. All the bugs fixed or unfixed are marked along with the test case for future reference.
Entry Criteria: All the previous steps are done.
Exit Criteria: All the test cases are executed, and results are documented.
Test Cycle Closure:
This is the last step in the software testing life cycle. Evaluation of the whole testing lifecycle is done in this phase. Bug reports and test reports are analyzed to find the severity and features that had most defects. Test metrics and test closure reports are prepared in this phase. The projected test metrics like cost, resources and time is compared with actual metrics and the report is submitted to the teams.
Entry Criteria: Test result documentation.
Exit Criteria: Test closure report.
Just like development, various methodologies can be used in the testing lifecycle. Some of the commonly used methodologies are agile model, waterfall model, V model and spiral model.
Agile Model:
This is most used in recent trends. The iterations of testing and development is done together, across the lifecycle. It is most beneficial for small projects. Customers can enhance the features and test them across the lifecycle.
Waterfall Model:
This is one of the old methodologies. It is simple and easy to use. It is a downward flowing waterfall model; each phase has to be completed before starting the next phase. Only projects with specific requirements are done with this model. Main disadvantage is the time consumed to complete the lifecycle and scope cannot be adjusted.
V Model:
This method is created to overcome drawbacks of waterfall methodology. This is more like an enhanced waterfall model. It is also known as verification or validation model. Development and testing are done parallelly, on both sides of V. Here also there is no overlapping of phases, just that development and testing can be done parallelly. This is also good for short term projects.
Spiral Model:
While other methodologies are good for small projects, spiral models are mainly used for large projects. It is a combination of linear and iterative development. The features/units are grouped into spirals, which can be done together. Spiral model is most accurate for capturing the requirements and better risk management.
It is very important for a Testing engineer to know the software testing lifecycle. Do you need to enhance your skills in testing? We have courses for manual testing and automation testing. Contact us to enroll.