background
sourceUrl

Exploring the Role of QA

When I began my journey into the modern craft of computer programming (one or two lifetimes ago), practices were vastly different from what we see today. Back then, programmers had much more ownership over the products they developed.

The Evolution of Development Roles

Being a programmer (that was the word we used) included a variety of tasks: UI/UX design, quality control, database administration (DBA), network maintenance (really!), and, of course, coding. Over time, many of these tasks have been gradually removed from developers’ responsibilities and assigned to professionals specifically trained for them.

If someone had told me in 1990 that UI design would eventually be handled by designers instead of programmers, I would have laughed out loud. Back then, graphic designers were seen as artists who made drawings and didn’t understand the intricate behaviors of controls in operating systems like Windows or even MacOS.

Eventually, more and more development tasks were specialized, resulting in significantly improved outcomes. By the late 90s, applications with richly designed graphical interfaces had completely taken over.

The Emergence of QA Professionals

Another task that became specialized and professionalized was Quality Assurance (QA). Previously, it was often the boss—there were no Project Managers or Product Owners—who would test the application briefly before it was shipped. QA testing or test engineers were luxuries afforded only by very large companies.

Today, nothing could be further from the truth. Every development team now has one (or several) QA professionals dedicated to ensuring product quality. Maybe he or she will appear at certain key moments of the project (They don’t have to be always there). They make sure that the created product meets all the client’s acceptance criteria and help find and eliminate bugs quickly and efficiently.They also make tests that devs can’t do so easily (testing in several browsers, operating systems, mobile devices, different sizes, etc).

The Human Element in Software Development

As programming is a human endeavor, and humans are not particularly adept at thinking like machines, we inevitably make mistakes that are inherent to software development. It is impossible to conceive of software development as an activity that could be error-free. As Steve McConnell states in Code Complete:

“Industry average experience is about 1-25 errors per 1000 lines of code for delivered software. The software has usually been developed using a hodgepodge of techniques. Cases that have one-tenth as many errors as this are rare; cases that have 10 times more tend not to be reported. (They probably aren’t ever completed!)”

The Role of a Good QA Professional

A good QA professional is almost invisible in the course of a project, speaking through the tickets they raise for various developers. These tickets can address bugs or issues that do not meet acceptance criteria.

A proficient QA professional will have all the necessary tools and environments to conduct unconventional tests. They will support developers by performing additional tests, pushing the boundaries to ensure robustness. For instance, if a lead developer has two phones for testing their application, the tester will use at least three or four, seeking to reproduce various scenarios—even the most unexpected ones. This saves time for other team members, who can focus on implementing more features rather than repeatedly verifying functionality across different devices.

Manual Testing vs. Automated Testing

A skilled tester will not limit themselves to manual testing. Instead, they will assist developers in adding a suite of tests beyond unit tests or integration tests, using tools like Selenium, Cucumber, or Appium). This helps weave another layer of safety nets that capture regressions, bugs, or any issues that might delay or harm the project.

The Personality of a Good QA Professional

Being a successful QA professional requires a particular personality type. They need to be detail-oriented and methodical, focusing meticulously on the smallest aspects of the software. Unlike programming, which demands a certain level of creativity, QA work thrives on consistency and precision. This distinct separation of tasks ensures that the software is thoroughly tested without the creative deviations that might be beneficial in coding but detrimental in quality assurance.

The Value of Fresh Perspectives in QA

Changing the QA professional at different stages of the same project is a good practice. The human mind tends to skip over familiar things, which in software development can lead to missed issues. Each stage of the project should be evaluated afresh to catch any problems. By introducing new QA professionals at different phases, companies can ensure that every part of the software undergoes rigorous scrutiny, reducing the chances of overlooked errors.

The Importance of Integrating QA

Testers are not just a fundamental part of the team; they should be viewed as the developers’ unconditional allies. They are the last line of defense before the product reaches the users. Having a competent tester who combines manual testing with automated testing is crucial to ensuring project quality at every stage.

The days of “programmers develop the application and find the bugs at the end” are long gone. This approach has no place in modern development environments, as quality cannot be added at the end of a product’s lifecycle. Quality must be present in every step of the product creation process.

At Zarego, we believe that QA is not an afterthought but an essential part of any project. We practice this belief by integrating QA at every stage, ensuring that our products meet the highest standards of quality from start to finish.

Newsletter

Join our suscribers list to get the latest articles

Ready to take the first step?

Your next project starts here

Together, we can turn your ideas into reality

Let’s Talkarrow-right-icon