What does a QA do in software development exactly?
In this article, Andrii Hilov, QA Team Lead at ITRex, explains why your QA team is not idling even if they find fewer bugs. Also, you’ll learn why you should always hire QA engineers to augment your in-house or outsourced IT team instead of having code tested by software engineers.
Understanding QA goals and why they're not limited to bug tracing
Depending on the type and complexity of a software solution you’re looking to build, you might need a part-time QA specialist or a dedicated QA team assigned to your project. And their responsibilities stretch far beyond pinpointing bugs and reporting them to the project manager and development team.
In particular, quality assurance goals span:
Error prevention. Recent surveys indicate that software engineers spend around 20% of their time fixing bugs. Multiply that time by the average software engineer’s hourly rate, and you’ll realize how much flawed code could cost your company. The price of correcting errors also increases exponentially with the time in the software development workflow — and that’s not to mention the long-term implications of releasing bug-ridden software into production, like security vulnerabilities, diminishing customer experience, and reputational losses. So, the key purpose of quality assurance in software development revolves around finding bugs before they cause significant damage. To accomplish this feat, a QA team prepares for testing long before laying their hands on a software solution. These preparation activities include reviewing test documentation, writing a test plan and test cases, choosing appropriate testing tools, and configuring the test environment.
Software status tracking and assessment. To make well-informed decisions in software projects, the project manager and the client need up-to-date information about the software product they’re working on. Quality assurance goals, among other things, include providing this information at any given period along the software project timeline. It’s worth mentioning, however, that quality assurance engineers do not choose the best time for a software solution to go live. Instead, it’s the customer who makes the final decision. Having consulted the QA team, a client may even decide to roll out a software solution containing documented bugs and errors! For instance, you can make such a decision when the time frame for releasing your product is relatively tight and the tradeoff between the reward — i.e., outpacing the competition or enabling a critical feature — is larger than the risk of launching it with minor bugs. Either way, you need to detect, document, and prioritize these bugs, and that’s also one of your QA team’s goals.
Requirements validation. The primary role of QA in software development is to confirm that your software solution functions as expected and meets all the criteria defined by the software requirements specification (SRS) document. When quality assurance specialists perform manual or automated testing and identify bugs, they create a ticket in a bug-tracking software system like Jira or ClickUp for the development team. Once the development team fixes the errors, the testing cycle repeats. Thus, finding bugs is not the purpose of quality assurance; rather, it’s a side product of QA activities.
QA teams sometimes fail to find any bugs. And that's ok
Now that you’ve wrapped your head around QA goals and objectives, let’s go back to the question we raised at the beginning of this article.
What does a QA team do in software development if their bug reports contain zero defects for days on end?
There are several reasons why QA specialists may not find any bugs in your software:
The software has been thoroughly tested. If the software solution has undergone thorough testing, it is less likely that bugs will be present when the QA cycle repeats or the product goes into production.
The software has a simple design. Applications with a limited feature set, integrations, and simple user interfaces are less likely to contain bugs than software with more complex architecture and performance requirements.
The software is built using best practices. Software engineering teams that write clean and well-documented code, follow coding standards, and use version control often deliver software products with few errors. These bugs get detected and corrected early in the testing process, and no further flaws will manifest themselves in later stages.
The testing process could have been more comprehensive. A lack of time, resources, or skills might prevent QA specialists from testing your software solution thoroughly. As a result, some errors could be overlooked.
The bugs are not reproducible. Sometimes, QA specialists may not find any bugs because the errors do not occur consistently. Various factors, including the complexity of the software, the use of third-party libraries, or the presence of external dependencies, may lead to such situations.
No matter the cause, you should not underestimate the importance of QA in software development, let alone toy with the idea of allowing developers to test the code for you.
Don’t get me wrong: it’s fine for developers to write and execute automated tests in cross-functional Agile teams. Or even test software manually.
However, in such teams, where project roles are often shared, the primary goal is to release working software or features faster, reducing time to value and gathering feedback early on. Here we might be dealing with the risk vs. reward issue described in the previous section. And your project might thus accumulate technical debt, leading to performance issues and significant debugging costs in the future.
Other reasons for hiring dedicated QA specialists are as follows:
Knowing how to code does not equal knowing how to review the code for potential errors
Developers seldom enjoy testing, while QA experts do
Software engineers’ hourly rates are usually higher than those of quality assurance specialists
Developers and QA engineers normally have different soft skills. For QAs, attention to detail, the ability to analyze complex systems, and multi-tasking take center stage. On the other hand, software engineers often work in collaborative environments and focus on a single task at a time.
So, even if your QA team has found zero bugs today, don’t be tempted to lay off quality assurance specialists or entrust testing tasks to the primary development team. Even though this approach might reduce your paycheck in the short term, the cost of losing your customers due to poor software performance or bug-related cyberattacks can be multifold higher.