What do we mean when we speak about Quality Assurance?

Quality Assurance is a process that seeks to ensure that a product complies with certain quality standards. It is a systematised way of defining quality requirements and product evaluations based on them.

The term QA is sometimes confused with QC (Quality Control) but, although they share some characteristics, there are some distinctions that make them unique. QA processes produce guidelines and standards that a software product must meet in all phases of its development, while QC is rather focused on finding bugs and fixing them.

In Software development, the practices carried out by a QA engineers aim at preventing a software product from malfunctioning. In this specific area, we can name it SQA (Software Quality Assurance). A QA engineer  will usually try to identify use patterns that may affect the quality of a program or the experience of the user.

The importance of QA in business

The QA role has become an important profile for developers and Product Owners because it implies having a systematised error-prevention mechanism that mitigates the amount and seriousness of flaws that the user will encounter.

On the other hand, having a professional profiles focused on QA implies “unlocking” development time, this is, it allows developers to be exclusively dedicated to write code.

Tester or QA?

Designing tests is a key aspect of the QA role. I myself spend a fair deal of my time on testing. And this is because, although testing is not the only activity for QA engineers, it is a process that saves time and resources if done before taking the product to a client.

Now, we must differentiate between the Tester profile from the QA profile. A Tester will be testing the program, finding bugs, and reporting them. QA engineers are involved in virtually all phases of the production of the software, not only to report failures but also to establish standards and testing guidelines that ensure the quality of the program.

It is true that a QA engineer can take on the tasks of Tester. So to speak, a QA engineer could adopt the role of the tester. On many occasions, if the needs of the company require it, a QA engineer could run the tests and in fact it makes sense because it is them who will be most familiar with the established quality standards. 

Currently I perform the rol of QA engineer. Therefore I document test cases prior to software development and test the software. However, I also document procedures and workflows, and develop tools that can be used by other testers to ensure software quality. 

That said, QA and tester should not be confused with each other since, as the paradigm blog  lays out, a QA engineer could be defined as a Tester that has taken on more responsibilities and has become more involved in the software production phases.

Main tasks of a QA engineer

Not all organizations assign the same duties to their QA specialists, but generally speaking we can highlight the following:

Product review: With the help of the Product Owner, QA engineers must end up having a high knowledge about the product. Once the Product Owner has specified the functionality and purpose of the software, QA engineers review its documentation. The objective is to become familiar with the product in order to get an idea of how it should work. 

Document acceptance criteria: When QA engineers have in mind what the product should behave like, they documents a series of minimum requirements that the product must meet before it is released to the market.

Develop a test plan: Once the acceptance criteria have been documented, a QA specialist starts documenting a detailed testing plan with the objective of ensuring not only basic software functionalities but also that the entire code behaves as the Product Owner has defined it.

Tests execution : In case they are in charge of testing functions, the QA engineer will execute the necessary tests, manually or automatically, using the acceptance criteria and the previously established test plan as testing standards.

Report bugs: If any functionality of the software does not pass the tests, the QA engineer will report errors and documents exactly how they occurred so that developers can identify a solution to the problem.

Troubleshooting: One of the reasons why the QA profile is so useful is that it helps identify the source of the failures. When a QA engineer is properly trained and has enough technical knowledge they can  provide more more information as to what might need fixing. For example when I started as a QA engineer I simply reported failures providing input data and sending the logs along so developers could investigate what was wrong with the program. Nowadays I assume that the actual value of QA engineers lies on advancing this investigation process as much as possible, so I develop tools to parse the logs to search for errors and tracebacks. Thanks to this, developers can start fixing the bug right away or with very little investigation work. 

Conclusion

The tasks performed by a QA engineers produce several tangible benefits. On the one hand, the company saves money since fixing a bug is much more expensive than preventing it in the initial phases. As the djagnostars blog shows, the cost of a bug increases exponentially as we get closer to the deployment phase. Likewise, ensuring product quality improves the company’s reputation. The Professionalisation of the QA role has increased the efficiency of the Software industry to the point that the it has become essential for tech companies.

Leave a Reply

Your email address will not be published.