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 is quality assurance. By definition it is a set of processes, practices and activities to ensure that the developed software meets the quality expectations and requirements. QAing 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 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 which 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 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 which is not working completely, or which testing 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 design 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 which 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 blocker. If we assume that developers write and then do code QA, it will mean that they do this consequently. It extends time to release and may slow down the overall process of software creation and developers’ performance. QA engineers work simultaneously with all the team, while some tasks are in dev’s hands, they attend to those ready for testing and till the end of sprint most features are verified.
Focus
Developer and tester are different jobs. To become a QA, you need some special education. There are theory and practice of testing which must be mastered. QAs can prepare to and pass their own specific certifications and later refine their knowledge and skills by 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 business the domain and decide to do without designers or BAs alongside with 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 inhouse 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 the references to the previous projects the QAs were working with and find the ones that suit your needs best. You can also make sure that the QA service does not only include testing the ready code for issues but is a complex of all the proactive QA activities intended to prevent issues 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% percent 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