A glowing black shield with a yellow checkmark appears over overlapping web pages, symbolizing the assurance of software quality through professional QA.

“A good dev doesn’t need a tester” – this was an opinion once voiced out by a colleague of mine, and for me personally, it provoked a lot of thoughts. Is it really so? What is the best way to assure software quality, and can a company cut back on QA? 

What is Quality Assurance (QA)? 

To understand why a QA engineer is needed and what is wrong with software developer testing, let us first of all look at what quality assurance is. By definition, it is a set of processes, practices, and activities to ensure that the developed software meets the quality expectations and requirements. QA starts even before there is any code written, with the analysis of specifications, as even at this stage, there might be issues and inconsistencies found, which can prevent creating bugs at further SDLC stages. Other aspects this process encompasses are test design, keeping up documentation, test reporting activities, and various types of change-related testing.  As you see, it is quite a complex notion, and only a small part of it is testing the actual code, which can be performed by the developers. 

Issues not depending on devs 

Surely most QAs have noticed at some point that more skilled developers are less likely to have bugs in their code, however, flawless code doesn’t mean there won’t be issues with the environment, regression, conflicts, etc., which are caught by testers who constantly keep an eye on the whole product. This is not to mention possible third-party issues that might arise. And this proves that good developers don’t necessarily mean no bugs. 

Should Developers Test Their Own Work?

The answer is definitely “Yes”. We don’t want to confuse you here, it’s just that developers do a completely different type of testing on a different level. 

They Don’t Have Time

 First of all, developer testing should at least check the so-called Happy Path – the most common and probable positive flow – before the task is moved on to QA. This saves the tester’s time spent on trying to test a piece of functionality that is not working completely, or which is blocked by environmental issues. Secondly, there are special types of testing performed only by developers – unit testing and integration testing. This is writing tests to check whether the separate components are working properly and if there are no integration issues. QAs come in on the next level of testing, which is called system testing, checking the whole system and separate functionalities, and they also may perform acceptance testing together with the other stakeholders.  

Unconscious Bias

Checking the above-mentioned Happy Path is not so time-consuming, but more thorough test activities require more working hours. Testers also work full time preparing test designs and thinking through all the possible test cases. A considerable part of software verification is negative testing – this is trying out various types of invalid inputs to see if the system can handle them correctly. Developers simply don’t have time to do all this.

Slows Down Release Times

If to consider the question in terms of psychology, you reveal that developers are aimed at writing perfect code, this is their ultimate goal, and thus they do not assume that there might be anything wrong with the features produced. A QA, on the other hand, has a mindset to find out how the product can malfunction, and so will be more likely to find bugs. Even automation QAs who do the coding have a different thinking customized for testing. This is an unconscious bias that defines QA vs developer testing and is acquired and sharpened with years of experience.  

QA Testers Are Specially Trained

One person cannot perform several tasks simultaneously, and testing programmers may become a bottleneck. If we assume that developers write and then do code QA, it will mean that they do this concurrently. It extends the time to release and may slow down the overall process of software creation and developers’ performance. QA engineers work simultaneously with the team, while some tasks are in developers’ hands, they attend to those ready for testing, and by the end of a sprint, most features are verified. 

Focus

A developer and a tester are different jobs. To become a QA, you need some special education. There are theories and practices of testing that must be mastered. QAs can prepare to and pass their own specific certifications and later refine their knowledge and skills through further education and training. Developers are no doubt good professionals, but in their own sphere, and they may lack professional insights of a QA to become test developers. 

Jack of all trades 

Of course, an employer can even be so lucky as to find a good developer with a refined artistic view and knowledge of the business domain and decide to do without designers or BAs alongside QA. But how much cutting back will the product stand, and how much will the diversely skilled developer concentrate on writing code? It is for sure more efficient to resort to professional QAs, who take their time not only to perform the set tasks but also usually put in extra effort to gain QA specific knowledge and experience, communicate with colleagues, and have a wider view of how software can be tested more thoroughly. 

How to Find the Best QA Testing Team

Like developers, QAs can be hired in-house or outsourced from a company like Honeycomb Software, where the quality of the product is assured by the team of highly skilled QAs who work together, pass their knowledge and experience to each other, and let the developers do their job even better. You can always ask for references to the previous projects the QAs were working on and find the ones that suit your needs best. You can also make sure that the QA service not only includes testing the ready code for issues, but is a complex of all the proactive QA activities intended to prevent issues from emerging in your software. 

Conclusion 

Quality is one of the crucial aspects of software, users may be really annoyed if they face issues in your product. The choice to leave testing to developers is questionable. You may be 100% confident in the skills of your software development engineers, but you hired them to code, let them concentrate on it, and you will see that in the long run, having a dedicated QA for testing will complement the professionalism of your developers. 

Roksolana Karamysheva 

Head of QA Department & Business Analyst at Honeycomb Software