It’s not uncommon for QA to be thought of as a roadblock, existing only to slow down the software development lifecycle, raise bugs, and tell developers their code is broken. Well, those are indeed some of a tester’s responsibilities. And it’s true; QA can slow down development, but it’s important to consider how in the long-term, this can actually speed up the overall software development process.
In other words, you can actually speed up development by slowing down. Seems odd, right? Here’s how…
QA testers find bugs before the customer.
If QA is doing their job, they should be finding bugs before the customer does. By the time bugs are introduced into production, your developers are already building the next feature. Their focus is on something new and different; not what’s already been shipped. When a bug is introduced in production, this doesn’t just look bad to your customers, it requires your developers to stop whatever they’re working on, shift gears, and refocus on something they’ve been away from for days, weeks or even months. This is a huge hit to productivity. With proper testing, you can avoid those surprises and keep things moving in a forward direction.
QA testers can identify usability issues early on.
Similarly, QA testers are excellent feedback providers. QA can identify issues with usability before the user is even exposed to them. This saves the time of having to re-design and re-code features after they’ve already been shipped. When QA is integrated with the development team, quality becomes an inherent trait of the entire team.
Dedicated QA ensures developers are focusing on development.
Developers are employed to write code. Let them write code and stay focused on that. If you practice test-driven-development, keep doing it, but let QA handle the real heavy parts of testing before release. Integrate testing into the development process and you’ll find that developers are more efficient.
In the agile world, we’re focused on working fast. After all, that’s part of being agile. But it’s important to let QA apply the breaks once in a while. This doesn’t mean your QA team should always be testing everything. Work fast when working fast makes sense. Identify areas of risk, and let QA provide feedback, investigate, and test. The sooner you discover an issue or error, the sooner you can get back on track to building awesome software. By closing this loop and injecting quality into the process, you’ll end up with a higher quality product and your team won’t be running around distinguishing self-inflicted fires.