The six phases of the software testing life cycle

Rodrigo Alves Costa
Software Testing Daily
15 min readDec 25, 2022

--

There are many variants of the software testing life cycle.

Any organization adopting agile must also consider its software testing strategy. Organizations should choose a testing strategy that fits the needs of the project. The aim is to ensure the highest possible product quality while using the available resources without increasing the project costs.

The Software Testing Life Cycle Phases
The Software Testing Life Cycle Phases

While organizations can customize their testing methodology to meet specific needs, the following main phases form the foundation of the Agile Software Testing Life Cycle.

Phase 1: Requirement Analysis in the Software Testing Life Cycle

The requirement analysis phase aims to determine areas and requirements to be tested.

Selecting requirements to test
Requirement analysis

A thorough understanding of the feasibility of the project requirements is necessary. The engineers should examine each requirement and identify tests to ensure the project has tests to cover the requirement. Some of these requirements may be untestable, and the development team should establish a plan for addressing and verifying them.

When the analysis phase is complete, you should be able to elaborate a test plan that covers critical areas of the project deliverables.

Requirement analysis challenges in the STLC

Many test projects need to improve in the scope and planning phase.

What should be a careful review of a project’s requirements document can quickly become a blind flight. Wild speculation creates problems as the team needs help to determine the success criteria for the requirements.

Some planners need to pay more attention to the testing effort for the project. Lack of focus or priority at this stage leads to increased project risk and unexpected failures and bugs in the product when it is released.

Other project managers plan to test less, which leads to wasted resources and frustrated project members.

Scope creep, e.g., uncontrolled requirement discovery into the project scope during test execution can lead to many problems. Scope creep leads to project delays, higher costs, and frustration during the project. In fact, according to a recent survey, 31% of all testers report that testing is more than necessary to ensure a quality release.

Requirement analysis best practices in the STLC

  • Consult key business users when determining the scope of the test.
  • Use user feedback to identify the critical business processes to test.
  • Identify common difficulties or issues that negatively impact user experience.
  • Make sure the test plan includes tests for critical business processes. Since this is where users spend most of their time and resources, testing will bring higher returns.
  • Ensure a clean and error-free user experience for critical processes.
  • Plan to test common issues to ensure the product fully meets user needs.

Requirement analysis benefits in the STLC

A solid test coverage plan can save you time and money during the project.

By focusing on the essential requirements, your tests target the critical areas in the project. Requirement-based testing brings a higher return on your investment and reduces time and costs.

The project team should also understand and accept key testing priorities. By setting these priorities before testing begins and getting buy-in from team members, you can fix problems before they occur.

Phase 2: Planning in the Software Testing Life Cycle

The second STLC phase, test planning, is essential, as it guides much of the work to follow. Test planning takes the insights found during requirements or product analysis and turns them into a documented QA strategy.

Test planning
Test planning

The test team leadership determines what resources and efforts will evaluate the release. The resulting test plan documentation informs testers and other departments how the testing work will commence, keeping everyone on the same page. This plan is beneficial if other organization members participate in testing and bug remediation, such as developers executing unit tests and writing hotfixes.

With the information gathered in the requirement analysis in the previous phase, the QA team moves ahead in planning the testing process. The Software Testing Life Cycle's most crucial phase is test planning or strategy. All of the testing strategies that will be utilized to test the program are defined during this phase.

The Test Lead determines the cost estimates and efforts for the entire project at this phase. Here, various test activities are planned and strategized together with the analysis of resources, which increases the effectiveness of the planning phase and aids in achieving the testing target.

Software testing can’t be valued without practical tools, especially when performing automation testing. Choosing the right tool for software testing is planned in this phase. There are various tools out in the market for performing software testing.

The test plan spells out several details of the testing work, including the scope, objectives, types of functional and non-functional tests (both automated and manual), and details for the test environments. Once these details are determined, test management sets roles and timelines for the work. Finally, the testing team can determine what deliverables it will provide upon completion of the STLC phases.

Planning challenges in the STLC

Since test plans are supposed to help keep everyone on track, you don’t want the test plan itself to stall any part of the process.

Translating business requirements into technical requirements for testing is the most challenging and critical testing component. If you can adequately translate issues and requirements management into test cases, testers can successfully fulfill all the testing scenarios. And then, the feature is ready to release.

Going one level down, the granularity level of tests should also be detailed for every logical step of a test case. It should be parallel to how the user story defines that step. For example: “As a user, I would like to log in to my banking app, providing my user credentials (username & password) so that I can verify my account balance.” If you test too many things simultaneously, you will not know what has failed. It’s essential to triage quickly when testing, so you want to be granular with your tests.

Coverage and speed are running themes in software testing. This remains the case regarding how you describe test plans. The key to a good naming convention is to use as many contextual aspects as possible. Include variances, so you know how everything is related. Start from the test plan, then include the test cases, and the name of the CI job. Bound them together by the same contextual aspects, whether by tagging or naming them using the same convention.

Planning best practices in the STLC

  • Include test strategy and objectives, schedule, estimation, and deliverables in the test plan.
  • Identify resources required to perform testing, including test tools and training requirements.
  • Know the definition of done for every test.
  • Keep test cases concise.
  • Organize tests by tagging and appropriate naming conventions.

Planning benefits in the STLC

A good test plan will help you release on time without sacrificing quality. It provides a common framework that ensures no missed steps and everyone is on the same page. A perfect test plan will help speed development if everyone follows the same practices.

Make sure everyone understands the defined procedures and why they are in use. If you are making changes, people will better adapt to change when they understand its benefits.

Test Plans help determine the effort needed to validate the quality of the application under test. The test plan serves as a blueprint to conduct software testing activities as a defined process, which is minutely monitored and controlled by the test manager.

It is also easier to enforce a good process when you work out of a universally-accessible tool that aligns everyone along the product journey. For example, you can create test plans and test cases in tools that also integrate with tools you use to code and run automated tests — and then provides reporting and visibility of the entire process. This way, everyone sees progress and can make decisions without switching between interfaces.

Phase 3: Design in the Software Testing Life Cycle

During the test design phase of the STLC, detailed test cases, or test scripts, are created.

The test scripts should use the requirements identified during the planning phase as a base: business users’ feedback form the basis for up-to-date use cases for the scripts, which, on the other hand, should be based on a business process or a mission-critical product function/feature.

Test design and implementation — courtesy of https://www.softwaretestinghelp.com
Test design and implementation — courtesy of https://www.softwaretestinghelp.com

At the end of the test design phase, you should have test scripts that cover all the main project requirements, each based on an actual business process addressed in the product.

Design challenges in the STLC

Test scripts written in the design phase of the software testing life cycle include both manual and automated testing.

Automated testing is a process designed to accelerate the fast-paced requirement testing of agile development. Rapid testing methods are necessary to keep up with Agile’s rapid deployment and release schedule. Automated testing uses specialized software to control and direct the execution of tests, increasing testing speed.

Typically, we recommend automating test scripts when the same tests need to run multiple times with different data and conditions or when testing is tedious and difficult to perform manually.

Despite these perceived benefits, there are challenges associated with automated testing. Automation is expensive and can be time-consuming to implement. Depending on the business complexity of testing, the benefits of automated testing may be limited.

Errors in automated testing can lead to significant problems and costly mistakes. An organization that relies too heavily on automated testing, or attempts to automate testing that is better done manually, increases the project’s cost, schedule, and risk.

These challenges have caused many companies to question the return on investment (ROI) for automated testing.

Maintaining the constructed test scripts can also be a challenge. Business processes change over time, especially when they are dynamic. If the team doesn’t install a process to update the test scripts or use the latest and most relevant user data, your tests will become buggy and obsolete.

Design best practices in the STLC

  • Use business processes instead of simple instructions for a more user-friendly and comprehensive test scenario.
  • Each test script should be based on actual use cases and business processes rather than product functionality.
  • Consult with users and business process owners to ensure test case validity.
  • Create a process for maintaining and updating test scripts to ensure they continue to be a powerful tool for users and the project team.

Design benefits in the STLC

Test scripts and testing, in general, can annoy many developers, programmers, and IT professionals. However, the activity represents a crucial step in the software development lifecycle.

Carefully plan when to use manual and automated testing to maximize your return on the testing process. Choose the proper method for each test script to reduce costs. Use business processes as the basis for your test scripts.

Phase 4: Environment Setup in the Software Testing Life Cycle

The test environment provides the setting where the actual testing occurs. The environment setup phase is a crucial STLC phase that requires help from other organization members. Testers must have access to bug-reporting capabilities and the application architecture to support the product, and these elements are necessary for testers to be able to do their jobs.

Once ready, testers establish the test environment’s parameters, including the hardware, software, test data, frameworks, configurations, and network. In this STLC phase, testers adjust these environment parameters depending on what the test case requires. For example, most of a product’s users might be on an Android device, use a particular version of a Chrome browser and have a certain amount of processing power on those devices — these are parameters the test environment would include.

Smoke tests within these test environments provide a very early and rudimentary check that the software is ready for more comprehensive testing. These smoke tests against the builds are part of the deliverable in this STLC phase.

Environment setup challenges in the STLC

There are many challenges related to setting up and maintaining test environments.

Typically, test environments replicate the production environment, so creating multiple integrated environments, while provisioning infrastructure and platform in a repeatable way, while maintaining monitoring and synchronized software version updates is not only complex but also a tedious task.

Test environment setup in software development
Test environment setup in software development

Test data management across the whole environment’s landscape, quickly debugging and solving test environment issues, and ineffective resource usage planning can affect the actual output. Also, it may lead to conflict between teams.

A test environment may be located geographically apart. In such a case, the testing team has to rely on the support team for various test assets (software, hardware, and other issues). Sometimes the test setup gets too elaborated in cases of Integration Testing. Test results will be corrupted when the development and testing teams use the testing environment simultaneously.

Specific tests require complex test environment configurations. It may pose a challenge to the test team.

Environment setup best practices in the STLC

  • Understand the test requirements thoroughly and educate the test team members.
  • Connectivity should be checked before the initiation of the execution phase.
  • Check for the required hardware and software licenses.
  • Browsers and versions.
  • Planning out the Scheduled use of the test environment.
  • Automation tools and their configurations.

Environment setup benefits in the STLC

Preventing an undesirable outcome is one of the biggest arguments for having a test environment when manipulating large amounts of data.

A test environment is also helpful in testing the deployment of software updates. It lets you test the actual roll-out of the update and provides a place where you can learn new functionality without the pressure of being in your live database. Test environments are often referred to as “sandboxes” because you can go in and play around.

Cost-benefit analysis is also a crucial benefit of environment setup in the STLC. There is a trade-off in that monetary costs are associated with setting up and maintaining a test environment.

It should be noted that creating and maintaining a test environment will require time and resources. But if you compare those costs against the time you spend manually fixing a mistake or re-doing work after restoring a backup, you will likely find that the ROI for a test environment is very high.

Choosing to have a test environment can be likened to having insurance. It may be unused nine out of ten times, but a test environment will pay for that one time you need it.

Phase 5: Execution in the Software Testing Life Cycle

During execution, the team performs the tests, logs deviations, identifies defects, and measures variations between actual and expected test results.

The testers follow the plans developed in the first phase and use the test scripts written in the second. The tests should be carried out strictly according to the plan. Testers should log any discrepancies, defects, bugs, problems, or errors as they are detected. Defects and discrepancies should be assigned to the test cases and then retested to ensure the validity of the test results.

Test execution pass/fail criteria
Test execution

At the end of the execution phase, the test plan should be complete, with identified and documented defects, if any. This bug and test report document are essential for managing the project and ensuring a quality release.

Execution challenges in the STLC

Many of the challenges in the execution phase of the Software Testing Life Cycle relate to documenting the work.

Testing often becomes a minor issue in a fast-paced software development and release environment. The team sacrifices critical testing to get the release out faster, and this can lead to bugs and problems that are only discovered after the release.

Another recent survey of IT test decision-makers in the US and UK reported difficulties in using software and testing tools as their biggest challenge to successful test execution. Tools that could be more user-friendly and require extensive, time-consuming training for non-technical testers can increase costs and limit testing efficiency.

Execution best practices in the STLC

Requirements Traceability Matrix — courtesy of http://artoftesting.com
Requirements Traceability Matrix — courtesy of https://artoftesting.com
  • Log the tests performed to ensure they support all requirements. Tracking coverage in projects that use and maintain an RTM should be easy.
  • Use the RTM to analyze work done on a project. With this data, the QA team can better estimate later work cycles. By using the RTM, software testers can avoid unnecessary and redundant rework, reducing the overall cost of the testing effort.

Execution benefits in the STLC

Dealing with and identifying the bugs in a software release is the goal of the execution phase. Preparation and work in the planning and implementation phase result in more effective and efficient execution.

The work done in the execution phase results in a higher-quality software release. The work is standardized to ensure testing is complete, and the team has every opportunity to catch a bug before release.

Phase 6: Closure in the Software Testing Life Cycle

In the closure phase, the team reports, monitors, and analyzes the errors found in the previous phases. The team should document the status of each error in the project log.

The closure phase should include a defect analysis so the team can better understand the impact on the product and the risk and effort involved in fixing them. This bug investigation allows the team to make an informed and proactive troubleshooting decision and better control the project’s cost.

Test report and documentation
Test report and documentation

Regarding bugs/defects, at the beginning of an agile cycle, they may get pulled into the iteration or placed in the backlog to be fixed in future iterations. The testing, troubleshooting, and programming work are done simultaneously in Agile. The closure phase ensures that the team can quickly recover from critical errors and leverage agile’s fast pace of work.

The report developed in the closure phase helps manage the work. It should contain monitored statuses of errors, documented steps, and efforts to fix them.

The goal of the closure phase is to handle errors proactively. Upon completion, the team should have a report detailing each bug’s risk and the final status of the bug in the product. The team should also link test cases and scripts to the test results to create a comprehensive risk management report.

Closure challenges in the STLC

Usually, software development teams focus exclusively on working software and the technical aspects of errors and bugs, disregarding the business processes that determine the requirements behind the product. This oversight creates a gap in the log and an incomplete assessment of the risk associated with each error.

Risk assesment
Risk assesment

Ultimately, the software product is a tool for the user, not just a collection of executable code. It is crucial to provide a use case for each test script. The development team needs to consider the business processes and requirements to ensure the product’s usability while they fix bugs.

A survey of IT leaders in global business organizations confirmed this challenge. Respondents named the lack of business-oriented test reports the biggest challenge in the evaluation phase.

Closure best practices in the STLC

  • The test scripts and use cases should form the basis of your evaluation phase.
  • Link the test results directly to the test scripts developed in the implementation phase and used in the execution phase.
  • Track and monitor every defect with a risk management report. A defect goes through various stages since its creation as it is processed, retested, and evaluated. This process is known as the Defect Lifecycle or Bug Lifecycle. Closely tracking the defect/bug is essential to the evaluation phase.
  • Record the effects of defects. This log can be used in future projects to more accurately determine and plan the scope of work before any project begins.

Closure benefits in the STLC

The closure phase is crucial for creating a working software product and avoiding unnecessary costs and expenses in future projects. Future project teams can use the risk management report to more accurately evaluate and develop best practices that enable continuous improvement.

The outcome of the closure phase should also be an impact analysis, enabling the project team to manage the project and its costs better while ensuring a high-quality, working product with each release.

Optimizing software development with the STLC

Agile focuses on producing working software products through short iterations of effort with less documentation. As already mentioned, this offers more flexibility for the project team and better change management.

Another advantage of agile development is the company’s ability to release products quickly at the end of each iteration, enabling the IT team to provide business users with continuous value through new functionality and updated, customer-centric product releases.

This process is called continuous delivery. We will talk about it in our next blog post.

--

--