No products in the cart!
Please make your choice.View all catalog
In the software development life cycle, quality assurance (QA) is often the last step before code is released—it’s almost an afterthought. Because of this, it is also usually under-resourced, with inadequate people, processes, tools, and time dedicated to it. This is evidenced by a 2022 report from Katalon, which surveyed more than 3,000 software professionals and found that only around half of respondents were satisfied with their team’s QA efforts. It’s no surprise, then, that 67% of respondents said their primary software quality goal was to improve QA processes and practices.
Quality assurance is not typically the remit of product managers, but I argue that it should be. There is no one on a product team better equipped to ensure that the product vision is delivered without issues that could cost you customers—or worse, cause your company to lose market value.
Ideally, QA should be ongoing throughout the entire product life cycle, and product managers should lead the charge. During my 25 years in the field, I’ve found that the following QA best practices and tips—which can be implemented regardless of the process being used—yield higher-quality code and happier customers.
There are four main areas that define quality software:
The software does what it was intended to do. For example, if you’re designing expense management software, it should properly calculate things like taxes and totals. QA test plans should cover all functional tests, ideally in an automated fashion, so that any newly introduced code does not cause existing functions to break.
The user experience should be easy, intuitive, and efficient. The software should also perform well consistently. Expense management systems, which are typically used on Fridays or Mondays when people are submitting expense reports, should perform well even during these high-use periods. Performance testing should be included as part of a complete QA plan.
The software should be operational as intended and error-free. An important aspect of QA testing is covering as many potential error and edge cases as possible, so that the software can cope in any circumstances. For instance, it should know how to handle an expense that’s entered as a negative versus a positive number.
The software must be secure and protect user data. This is key for both consumer-based and business enterprise software. Investing in good penetration testing and other security testing is vital.
Product managers should facilitate a mindset and attitude shift across the team in order to build and maintain a culture that enables the creation of high-quality software. The following QA best practices include both overarching principles and more specific ideas that offer quick wins to gain buy-in and momentum on your journey to robust QA.
Promote high-quality software and make the investments in resources to ensure good QA. When I was head of product at a startup, I was given the budget to hire a small QA team and obtain the necessary test automation software. I made it a point to develop a good relationship with the engineering team so that we were able to adjust the design, development, and release processes to incorporate QA gates. With this investment in QA, we were able to produce software faster and with fewer issues.
QA is not something that only the QA team should think about—it starts with a product manager defining the product through a detailed set of requirements and comprehensive acceptance criteria. I learned early on in my product management career to slow down and consider all the potential ways a user could make a mistake or misinterpret a function. It’s easy to write a product requirements document (PRD) that focuses on the best path or default scenario, but a good PRD should include error and edge cases too, so that you can build the most intuitive experience possible. Instilling this kind of QA mindset in your team starting from the early stages of development leads to higher-quality software.
Additionally, implementing test-driven development (TDD) methodologies can be very effective in promoting a QA mindset. Whereas a non-TDD team would write the code first and then the test cases afterwards, which often results in reworking code, TDD means test cases are written upfront as part of the requirements and used continuously throughout the development process to ensure that the code passes all tests before being released.
Test results should be well documented, particularly when a test fails. A clear process—including tools that enable quick and seamless recording of test results, which are automatically routed to the developer—will help the product team be more efficient.
At each stage of development, put QA milestones in place. The earlier an issue is caught, the less disruption and effort it takes to address it. Setting up mid-development QA integration tests, for example, means code can be brought together and tested in order to uncover issues or failures before the final release candidate is built.
Automated testing and bug reporting tools are essential in producing high-quality software quickly, particularly in continuous integration and continuous delivery environments—and they save a lot of time. I’ve often utilized Jira plugins, such as Xray or Zephyr Scale, to help manage QA test cases.
There are also AI tools, which have recently become available, that can help with some areas of QA, such as making the maintenance of automated tests easier. Many automated tests rely on a single method of identifying a screen element, such as its name or location. Currently, if a developer moves or renames a screen element, the automated test will fail, despite the functionality staying the same. With AI, the screen element can be identified using many more attributes, enabling changes without the test failing. Then, over time, the AI learns which attributes to rely on in order to accurately identify the screen element.
Another area in which AI can assist QA efforts is autonomous testing. You can train AI by showing it how users navigate your application in production. The AI then creates automated test scripts that mimic common user flows. This, combined with the maintenance of automated tests, means you can achieve higher coverage with more robust tests that require less maintenance. Check out AI-based testing tools like Appvance, SauceLabs, and Testim.
Pair programming—a common practice in coding whereby one developer writes code and the other reviews it—can help catch bugs before they’re ever introduced. Even as a product manager, I’ve often found it helpful to have a colleague look over my requirements document, for example. Implementing peer reviews at every stage, even during the discovery and design phases, can help create a stronger product. It may be a good idea to have someone from the QA team review the acceptance criteria of your user stories to ensure they are clear and complete.
For software that runs on multiple platforms, such as web, iOS, and Android, testing should be done on all the platforms and even on different versions of operating systems and browsers. Specific load testing is important in determining if there is significant performance degradation at peak loads. With new browser, iOS, and Android releases coming out at different times, it’s important to run tests on a regular basis and not just during your own application release cycle. I recently learned this lesson the hard way when a new version of Android came out and caused our Android application to be unavailable for download because we hadn’t upgraded it.
After putting a QA process in place, ensure you evaluate it regularly, noting what aspects are working or not working, and how they can be improved. After a sprint, a development team will typically hold a retrospective, reflecting on what happened in the iteration and identifying actions for improvement going forward. Hold a similar meeting for your overall QA processes and procedures, or incorporate QA assessment into your existing retrospective.
It’s critical to invest in QA in order to produce high-quality software. As a product manager, you can put some immediate steps in place to guide this effort:
By making QA a priority and building these techniques into your product processes early on, your products will undoubtedly be higher quality. Ultimately, this will not only enable your team to work on new innovations, rather than fixing bugs, it will also enable you as the product manager to realize your product vision faster.