This Underrated QA Testing Principle Can Save You Time, Money and a Headache

Shift left involves software testers earlier and at every stage of the software development process. This test-early-test-often approach ensures the earlier defects are found, the less costly they are to correct.

QualityWorks
QualityWorks Blog
Published in
7 min readSep 21, 2022

--

By: Stephanie Jones

As software testers, we sometimes feel like the heroes of our software teams — ones who are called upon to fix problems in a pinch. Quality assurance plays a unique role within the software development process; we lead the charge, ensuring that software quality is of the highest caliber. But, testers can’t do it alone. To be superheroes, we need the support of our team.

As software development methodologies evolve, many guiding principles are emerging, all driven by the same goal — to deliver higher quality software, faster. The shift left principle is one guiding principle that’s saving software teams time, money and headache.

As a software tester and quality assurance consultant, I have first-hand experience working with teams that either embrace or choose not to embrace shift left. In this article, I’ll show you why left is right, and provide tips on how to implement software testing at every phase of development.

What is Shift Left?

Shift left involves software testers earlier and at every stage of the software development process. This test-early-test-often approach ensures that the earlier defects are found, the less costly they are to correct.

Source: Requirements Analysis in QA. GS Lab, Sarika Gadmade. This graph shows the correlation between poor requirement analysis at every phase of the development cycle, and the relative cost to correct defects. As development progresses, costs increase. The “Maintenance” phase is most costly.

Requirements Phase

The first step to delivering high quality software is to ensure the entire development team, including QA engineers, have a clear, in-depth understanding of project requirements and the team’s definition of success. Agile software development projects typically begin at the requirement gathering stage.

The process of defining the product scope and requirements presents an early opportunity for software teams to start thinking about quality. At this stage, QA testers study user stories, workflows, and design mockups.

As testers review requirements, they begin to visualize what the system will look like and are able to identify frailties, including conflicting, overlapping or ambiguous areas of the software logic.

They work alongside stakeholders to redesign fundamental flaws within the system. As requirements are fine-tuned, QA iteratively reviews the latest changes, comparing them to the initial requirements and product scope. This ensures that no deliverables are lost and the final product ultimately delivers on expectations.

Although this is an elementary process, the initial requirements gathering stage is crucial in establishing the long-term success of a project. By identifying and rectifying software defects early, teams can avoid the exponential cost of correction for issues found beyond the requirements stage.

Design Phase

Once the requirements are fine-tuned, the team begins to detail how the software will work. Architectural decisions are made, including user interface and programming languages. Templates and best practices are also established at this phase.

In a typical design phase, software teams:

  1. Define detailed workflows of how users should interact with the system; then
  2. Determine the environments in which the application should operate.

When involved in design discussions, QA testers kickstart their test plans by identifying use cases and deciding on types of testing that are critical for success. Once the designs are complete, the QA team defines acceptance criteria for user stories, sizes stories, and gives a final sign-off to ensure no contradictory flows exist and all technical requirements are met.

Designs are not static; they change often. Revisions should involve the QA team to validate for quality and update test cases accordingly. Keeping testers up-to-date on the latest changes and incorporating their feedback early reduces unnecessary delays due to miscommunication.

Code Phase (Software Development)

Within the traditional scrum framework, product owners prioritize the backlog, detailing which features are of high importance. At the beginning of each sprint, the team chooses which tickets they’ll address first, based on impact, viability, and effort needed for implementation.

The QA team reviews user stories, then begins to develop test cases. When tickets are complete, testers provide feedback on bugs and areas of improvement.

By verifying features as they are built, the QA team can provide real-time feedback that helps the development team correct defects while the logic is still fresh in their minds. Testing at this stage saves time by correcting smaller bugs before they become bigger bugs, and improves the overall quality of the software by enabling testers to focus their efforts on catching harder, edge-case bugs.

This iterative testing and development continues until the minimum viable product (MVP) is attained. At this point, testers begin regression testing to verify the system in its entirety.

Test Phase

Regression testing is arguably the most important testing throughout the software life cycle and serves as a segway into traditional testing. It evaluates the system from top to bottom, accounting for the initial requirements and modifications. Regression testing takes place many times and at different stages of the software life cycle. The most aggressive regression testing takes place after most of the functionality is completed and a minimum viable product (MVP) is attained.

The MVP represents a working version of the software that meets all requirements outlined by stakeholders. It is usually a functionally-complete, skeletal version on which improvements are made to enhance the user interface and experience.

QA testers perform regression testing on this MVP to validate the system from top to bottom. They test a wide variety of use cases and user flows — both negative and positive paths — to ensure that the application behaves as expected.

Throughout this process, QA also verifies the user experience and makes recommendations for improvement. The QA testing and coding stages are iterated and the application is regressed continuously until:

  • Improvements are approved by stakeholders;
  • Defects are corrected and tested;
  • Stakeholders are satisfied with the product;
  • The QA team is satisfied with the overall quality; and
  • There are no easily identifiable bugs within the system.

I cannot stress how important testing is at this stage. Even if testing is neglected at any other step in the development process, it absolutely should NOT be neglected here. The test stage is the final step before the software is made available to the end user, and is the last chance to make a great first impression. Every practical scenario should be tested and retested to ensure maximum test coverage and minimum bugs.

Maintenance

Once the bulk of development is complete and the system is verified, it is time for the application to be made available to users. Pushing an application to the production environment is a big step in the software cycle; it invites users to experience the result of your team’s hard work.

You may think this stage is an ideal point to hand over testing to the development team, or even abandon testing entirely since the heavy lifting has already been done. However, the QA team is still needed as they are more familiar with the nuances of the system, and QA-testing generally has a more quality, user-oriented approach than Dev-testing.

Automated testing comes in handy during the maintenance stage by reducing repetitive tasks and allowing testers to focus on finding edge cases and new vulnerabilities. Automation also enables productivity and efficiency, by allowing testers to concentrate their efforts on other tasks, like testing new features and improvements.

Conclusion

Software development teams aim to create amazing software that meets requirements on time and within budget.

While project managers, product owners, and dev leads are critical to achieving high quality software, early QA involvement is an often-overlooked step and missing secret ingredient.

By bringing testers on board at the very beginning of the development cycle and involving them at every step of the process, QA can supercharge the project team by eliminating costly vulnerabilities.

While no software will ever be 100% bug-free, having an independent testing team like QualityWorks ensures that critical bugs are squashed early, and your team delivers the highest quality software possible.

To learn more about this topic and our suite of quality assurance services, visit our website or connect with us on Facebook, LinkedIn, Twitter, and Instagram.

About the Author

Stephanie Jones is a QA professional with more than two years of experience. She is trained in various manual and automated testing techniques and has worked on a variety of software projects ranging from social media applications to test management tools. Stephanie is passionate about using tech to help people live better lives.

--

--

QualityWorks
QualityWorks Blog

Enabling Developers to Deliver High-Quality Software Effortlessly