In this complete guide to the software testing life cycle (STLC), we will look at multiple components. The components are software development life cycle (SDLC), STLC phases (test planning, environment setup, test execution), entry criteria, exit criteria, deliverables, and benefits of automating SDLC vs. STLC 💡
The software development life cycle (SDLC) is a process that teams use to produce quality software in a methodical style. The purpose is to meet customer expectations by a certain time utilizing a cost-effective approach. SDLC was designed to handle complex business systems that require processing and analyzing data. The following are 6 phases and a diagram representing SDLC:
The first phase plans and gathers significant requirements from stakeholders. Stakeholders can include customers, team members, and subject matter experts (SMEs). The information is evaluated to determine what is practical for the software project.
In addition, risks and opportunities are discussed during this phase. All of the requirements are used to plan a feasible approach. A couple approaches are:
- Technical Approach – the expected services that will meet the stated technical scope of work (SOW)
- Operational Approach – the steps taken to transition from a software’s current condition to an end-result condition
In the design software phase, the team moves forward with every requirement and creates a design document specification (DDS). The main question from a DDS perspective answers, “How are we going to build the software?”.
With the approved requirements, the comprehensive software architecture defines processes for each module. Individual processes and modules represent data flows and communication. Usually, the DDS designer uses pseudo-code, business rules, screenshots, and diagrams (hierarchy, detail logic, entity-relationship, business processes) to outline the functionality.
The develop software phase begins when a developer receives the design document specification (DDS). All of the components are transformed from a high-level overview into source code. The previous planning and specifications operate as a guide for implementing the required functionality.
Testing affirms the quality of the software. The QA team refers to the system requirements document (SRD) or user stories to verify each functionality. Therefore, in this phase, the goal is to ensure quality and confirm every functionality works as expected 🎯
If a bug is discovered, then the reproducible steps are notated and then assigned to the development team. A developer fixes the bug and sends the resolved bug back to QA. Generally, the QA tester who discovered the bug, also retests the bug and verify it is no longer a bug. Testing is performed until the software operates according to the business needs and customer’s standards.
At this deployment phase, the team has already resolved bugs and satisfied agreed specifications. Finally, the software is released to production. It is available for the market so customers can use the software.
The software maintenance phase is vital for SDLC. It safeguards that the software continues to perform as per the requirements. The team transitions from developing and testing software to maintaining the software. Based on feedback from the development team and end-users/customers, the following actions happen:
- Fix bugs reported by the QA or end-users/customers
- Enhance software by adding new features
- Upgrade to new software versions
Maintenance mode consists of adding new code or altering existing code 💻 The development department creates new features and deals with enhancement requests. QA department persists in testing the software and finding bugs if they exist. In addition, the end-users may find defects and developers fix the reported issues.
The software testing life cycle (STLC) is a series of tasks performed to ensure that the software meets definite quality standards. It involves analyzing requirements or user stories, creating test plans, designing test cases, executing test cases, reporting defects, and reporting test results.
The STLC happens after the software is developed and before the software is released to the market. Its purpose makes sure there are no showstopper bugs released via the development team or critical defects caught by the end-users. The following are 6 phases and a diagram representing STLC:
The first phase consists of analyzing requirements or user stories. Normally, it usually kickoffs after the requirements are gathered during the SDLC. The QA team seeks to gain an understanding so gaps in the requirements are identified and know what tests are necessary.
After studying the requirements, testing priorities are selected, and the scope is determined for establishing a testing foundation. The requirements may be non-functional and/or functional. Note that Waterfall methodology analyzes requirements while Agile methodology analyzes user Stories.
A test plan is a document that outlines the strategy for testing an application. It explains the objectives, processes, and team. Some of the elements in a test plan document include:
- Test Objective
- Test Assumption
- Test Environment
- Test Coverage
- Test Risk
- Test Features
- Test Approach
- Test Resources
- Test Activities
- Test Schedule
Planning for a test is meaningful because it takes the vision from analyzing the requirements and transforms those insights into a strategic document 📜 The test plan keeps stakeholders on the same page.
A test case is a document that includes pre-conditions, test data, test steps, expected results, and post-conditions. Prior to designing a test case, a creator can implement test techniques to increase the coverage of an application.
Prior to designing a test case, the creator can achieve deep coverage by implementing test techniques. Some known techniques are boundary value analysis (BVA), equivalence partitioning testing, and path testing.
They are developed via test scenarios to validate a particular requirement. Sometimes the test cases are reviewed by other team members. At the appropriate time, the test cases should be updated to validate new functionality and existing functionality.
In the test execution phase, a tester begins running test cases based on the designed test cases. Execution walks step-by-step through the software and then compares the expected results and actual results. Testers run many test cases within a certain allocated time frame. The objective is to sign off after securing software quality.
Occasionally bugs are used interchangeably to describe a flaw in the software. Other times, a software development team refers to a bug being discovered internally while defects are discovered externally by customers.
Either way, it’s a discrepancy between the expected and actual results. Reporting the bugs/defects involves a process of informing stakeholders. While executing a test, the QA team observes a problem and reports the problem. That’s when the process of tracking the bug starts in the STLC 🐞
Most organizations have a tracking system where the bug/defect goes through its own life cycle. The life cycle is a way of maintaining the status of the reported issue. It’s no longer an issue until a developer fixes the bug/defect and QA team confirms the fix.
Reporting test results is a process that includes summarizing and communicating information to stakeholders. The summary quantifies test metrics, prominent risks, etc. Some examples included in the test report are:
- Total number of executed tests
- Total number of passed tests
- Total number of failed tests
- Total number of defects
- Total number of resolved defects
- Total number of outstanding defects
SDLC and STLC have phases that extend each other. For example, the SDLC encompasses gathering requirements and testing software. The STLC incorporates analyzing requirements before creating a test plan.
When it comes to setting up the test environment, this activity can be carried out in the SDLC or STLC. Although essential, the QA team is not responsible for constructing the test environment. Developers generally set it up so testers can start execution. The following is a breakdown of each phase for SDLC and STLC:
|1||Plan / Gather Requirements||Analyze Requirements / User Stories|
|2||Design Software||Plan Test|
|3||Develop Software||Design Test Cases|
|4||Test Software||Execute Test Cases|
|5||Deploy Software||Report Bugs / Defects|
|6||Maintain Software||Report Test Results|
For the SDLC, a plan is established and requirements are gathered from stakeholders. The STLC starts analyzing key information (requirements or User Stories) to gain an understanding of the software.
The software development team creates a DDS based on approved requirements. It contains processes and modules to communicate data flows. The QA team generates an outline that entails the strategy for testing an application.
The SDLC transforms information from a DDS into source code. This is where developers start writing code to create software functionality based on requirements. In the STLC, testers begin designing test cases with expected results to validate the requirements.
Phase 4 overlaps the SDLC and STLC. For the SDLC, the QA team confirms software is operating correctly by referring to the SRD. However, the STLC starts executing test cases looking for a discrepancy between the actual and expected results.
At the deployment phase for SDLC, specifications have been met and the software is placed in production. The QA team and/or customers report problems in the software. If there are issues, then the development team fix the issues and assign them to testers to confirm the fix.
The maintenance phase is crucial for SDLC because it assures the software continues to perform according to the requirements. In addition, bugs/defects are resolved, and new features, and new versions are added to the software. With the STLC, results are reported to stakeholders to provide an update on the testing efforts.
Hope you found this article helpful & feel free to comment any questions you may have ✅