With changes in development testing methodologies, people often wonder if Engineering teams will ultimately replace Quality Assurance (QA) teams by incorporating QA responsibilities into the development lifecycle. This debate has been ongoing within the software industry for years. Inevitably, the question boils down to whether testing should be accomplished by separate and dedicated Quality Assurance (QA) teams or whether testing should become more embedded into the Engineering development process to deliver the best possible application.
This debate is complex and requires an understanding of how these distinct roles, and testing strategies, have evolved.
The changing roles of the QA team and the evolution of software development go hand-in-hand. Previously, testers on QA teams were not required to have a lot of development experience. Their focus was to make sure that the software functioned as designed.
Approaches such as Waterfall SDLC methodologies influenced old QA models, where work flows downhill and testing occurs after development.
As SLDC moved towards agile methodologies, the QA tester’s role shifted to operate as an integrated function within development teams earlier in the development process. Testing is also now performed by many people on a team, including developers. This shift aims to automate testing as much as possible, supporting newer CI/CD Dev/Ops models where software is continually integrated and deployed into production to meet demanding cycles.
QA testers are now expected to be more knowledgeable about the development process so that automated testing fits in with current CI/CD structures.
That said, there is still a debate as to whether or not the QA tester’s role has a place in Development.
The QA tester’s role has shifted dramatically because they now work under a “shift left” methodology. If we look at the process of a project moving forward from left to right, “left” refers to the earlier stages. So, under this methodology, testing begins much earlier in the process of development.
To adequately implement a “shift left” philosophy for software quality assurance, testing occurs at the earliest possible stages.
This change in testing has led to a simultaneous shift in the roles of engineers and QA professionals. Let’s look at the advantages and disadvantages of testing by QA professionals versus developers doing evaluation and testing.
However, the answer may lie somewhere in the middle of a pure QA or blended Dev/QA option. What’s needed is to transition from separate QA and Development teams to a more cohesive model where testers and developers work collaboratively. An approach that is commonly referred to as the Quality Engineering (QE) model.
With the advances in CI/CD tools and reporting software, such as Airbrake, it becomes possible to integrate testing into the entire development process. Many companies have essentially removed the distinction between developers and testers.
Here’s how it works: Developers do most of their own testing; however, they are supplemented by a team of QA testers who provide frameworks and complete testing within the development process.
In QE, testers create specialized automated test cases that work directly with code built by developers. It might even make sense to have developers write these tests, with testers providing input and feedback on testing scripts.
In addition to this, developers can write many unit-test cases for their code, making it possible for deployment to occur rapidly for individual modules. However, there does need to be a concerted effort to organize tests into a cohesive whole. New development must not break old code, so a solid library of integration and regression tests, organized by QA testers, is necessary for maintaining quality code.
One fundamental necessity for developing a QE model is automation. Whereas traditional QA has been manual, testers now require specialized development know-how to adapt to CI/CD models of rapid deployment. QA engineers working under a QE model should aim towards becoming engineers themselves. This way, testers will be able to think more like developers while learning how to use advanced tools to ensure the entire product works well. By becoming engineers themselves, QA testers will be able to improve the quality of the process and validate the end results to ensure the product remains viable.
Throughout the entire product lifecycle, QA and engineers should work together. By integrating QA testers into the development process, it becomes possible to implement effective “shift-left methodologies.” Furthermore, by maintaining QA principles, you can ensure that the final product is functional as a user expects. And the whole team can also expect fewer “cleanups” with a QE process.
Ultimately, the end goal should be to move from a QA model to a QE model. With the latter, you can ensure that your applications are running more smoothly during the development process, reducing the time it takes to bring a quality product to the marketplace.
The question shouldn’t be, “Should a QA team or an engineering team handle testing.” Instead, you should ask yourself, “Am I using a QE model?” Using a QE model for testing is the most effective way to implement a “shift-left” methodology during the development process. The end product will require less “cleanups” and allow you to deploy quality code quickly.