When the competition is just a few clicks away, you can’t afford to ship poor quality software; if you do, you’re begging for your clients to become former clients. However, getting yourself familiar with the topic of software quality can be challenging. With so much jargon and constantly changing technical terms, it’s hard not to feel overwhelmed. In this post, we’ll make your burden a bit lighter by covering the “QA vs. testing” dilemma.
Many people might think that Quality Assurance (QA) and testing are synonyms. Others might correctly understand there’s some fundamental difference, but might find it hard to articulate. Regardless of which group you’re in, this post is for you. We’ll explain how QA and testing differ, and why you need both to ensure you’re shipping high-quality code.
Let’s Start With Testing
Let’s start by coming up with a working definition of software testing. Software testing is the activity of verifying that a given piece of software works as expected. Though there’s a plethora of types of testing, I think this definition sums it up nicely. And, though manual testing is still useful in many situations, nowadays most of the time when you say “testing,” you mean “automated testing,” since automated testing is the foundation of a CI/CD pipeline.
One important facet of testing is that you typically do it after the fact. Testing is the activity of verifying whether the built product meets expectations. Sure, there are techniques like TDD, where you start by writing a failing test before the actual production code. But many would argue that TDD is a development process, not a testing technique. I agree. Even if you do TDD—and in most scenarios, you should—you still have to employ other forms of testing after the fact, including testing in production.
We can sum it up by saying testing is a form of quality control—that is, a verification that the completed product has the expected quality.
What About QA?
QA stands for quality assurance. It’s a set of strategies you employ to assure—hence the name—the quality of the product.
So, while testing and other forms of quality control are things you do after the fact to check for defects, QA is a set of strategies you employ from the start to ensure defects aren’t introduced and requirements are met.
The actual QA activities your team will do might vary depending on the size of the team, the type of app developed, and the software development methodology used. But they might include:
- Definition of code standards
- Implementation and maintenance of a code review practice
- Definition and configuration of linters/static analysis tools
- Training/mentoring developers on best practices
- Creation and maintenance of up-to-date internal documentation
- Definition of processes to ensure user requirements are being met—e.g. the writing of automated acceptance testing
The list above is far from exhaustive, but should give you a general idea of what QA involves. As I’ve said, the actual details might vary across teams and organizations. For instance, for teams that use BDD—behavior-driven development—QA staff will certainly take part in conversations with the domain expert and the creation of the automated scenarios.
In organizations that practice a formal review and sign-off of features at the end of each iteration, QA will be there to ensure features were delivered according to the specifications.
Quality Assurance vs. Quality Control: You Need Both
As you’ve seen, I’ve included testing in my list of QA activities. The reasons for that are two-fold.
For one, the lines between QA and testing have certainly become thinner in the last decades due to test automation and movements like shift-left testing. The advent of CI/CD and DevOps culture demolished silos inside organizations; the lines between development, testing and operations are now blurred, which is generally a good thing. No more conflict of interests: We’re all on the same team.
And the other reason is that, the way I see it, testing was always a part of QA. If QA is a set of strategies a team adopts to ensure their product is of the highest quality, then testing activities must be a part of QA.
If you want to learn more about testing and QA, you might be interested in the Software Tester Certification Boot Camp by Cprime. Thanks for reading.