The contentious issue of Developer based testing vs QA based testing
Developers make the code – to build the application. Testers break the code – to test the application and ensure its defect free. The Development and QA teams may seem two different teams on two different paths. However, the end goal of both teams is the same – a quality product that satisfies the customer.
Organizations nowadays are pivoting towards Agile DevOps delivery resulting in the developer-tester silos being shattered in the software development process. The organizations are also intending to reduce the cost of testing without impacting application quality. With the need of rapidly shipping new features in time-boxed sprints, there is an ongoing thought-provoking trend of making the developers perform testing. This is called the Developer-based testing or Development testing.
What exactly is Developer-based testing?
The main role of a developer is to code new features or enhancements as per the requirements. However, it is also also important to ensure that the new code does not give rise to any defects when integrated with existing functionality of the application. So testing the code as soon as it is developed ensures quicker defect identification.
Currently, most of the developers perform unit testing, and few code-based tests to ensure that the particular unit of the application meets its design requirements and behaves as intended. Developers take the common approaches to write these tests – either Test Driven Development (TDD) or Behavior Driven Development (BDD).
Should developers test their own code?
Yes, because this is a good thing as it expedites the process of exposing and fixing coding errors. It helps in reducing uncertainty in a unit. However, any additional testing responsibility put on them may take away the coding time that they are pro at and lead to decreased coding productivity.
Why QA-based testing is so important and cannot be overlooked
A chef may whip up exotic dishes with exotic ingredients, but unless the consumers are satisfied, it wouldn’t matter. Same goes for an application. A developer may perfectly write a zero-error-code as per the requirement. But what if a page loads a few seconds late due to performance and load issues? What if there are security issues? “Our code is error-free’ will not come to the rescue and help you save face!
Development testing aims to eliminate coding errors before the code is passed on to the QA team. A developer focuses on a particular requirement or rather one part of the application and may not have a bird’s eye view of the entire application’s working or additional features being developed by other developers. A product that has good functionalities would still lose its face value if it’s not user-centric.
QA-based testing focuses on the holistic approach and covers the full spectrum of testing like Security Testing, Performance and Load Testing required to discover a host of issues that would otherwise go unnoticed until production.
The Final Destination – A Good Product and A Happy Customer
A perfect blend of both Developer-based and QA-based testing would ensure easy defect identification along with quality feature release. Hence, equal focus needs to be given on functional testing as well as non-functional testing that will help in bridging the gaps between business logic and user experience.
Grumbles of the Developers
Now that we have settled the Developer/QA based testing controversy, let’s get into the head of how a developer thinks and bust the typical stereotypes.
Does the development team think ‘QA does not provide any value?
![Why Developers hate testers](https://www.webomates.com/wp-content/uploads/2021/02/Why-Developers-hate-testers-300x248.png)
If yes, it’s time to rethink your testing strategies. Following are the 4 major challenges faced by developers, and effective ways to resolve them..
![QA testing helps to improve product quality](https://www.webomates.com/wp-content/uploads/2021/02/QA-testing-helps-to-improve-product-quality.png)
- Lack of a Strategic Agile Testing Plan
Benjamin Franklin has rightly said, “Failing to plan is planning to fail”.
Agile Testing is a continuous testing approach spanning all the phases of development until the delivery to the end customer. Ensure end-to-end functional and non-functional testing for a hassle-free release.
The Agile Testing Quadrants aid in understanding the relationship between various types of tests which help the team address the business and technological needs by employing stringent testing approach, both manual and automated, at different phases.
- No bugs are reported by the testing team – Go exploratory!
Is testing just proof that no errors are found in the developer’s code? Not all defects are due to the developer’s coding errors. What happens when there are zero defects in the code but it still fails? Go exploratory – A place where no scripted test has gone before!
The basic aim of exploratory testing is to pinpoint how a feature works under various conditions. It helps you scrutinize the potential risks by combining exploratory testing with regression testing. Read for more : QA Testing
No comments:
Post a Comment