Does Software Testing Improve Quality, Actually?
The Twitter debate: Do testers improve quality, help improve quality, or only pass info to others who do so?
Lately, I’ve been closely following a super interesting Twitter discussion about whether or not testers improve software quality. Yes, we find the bugs, but are we just the messengers? Or are we active participants in the construction of great digital products?
I’ve never liked the characterisation that a tester doesn’t actually improve quality, they provide information that can be used to improve quality. It’s too much of a hands off, not my problem, abdication of responsibility attitude and it has never reflected the way I work.
— Gregory Paciga (@GregPaciga) October 13, 2019
Basically, Paciaga complains about what is often said that testing does not really improve quality, but the objective is to give information that can be used to improve quality. It’s like washing your hands, taking the responsibility and passing it onto another (to developers, a PM, the CEO, etc.).
In this sense, and according to much of what several people have said in the chain of tweets, I loved the quote that Enrique Almeida tweeted that Monica Wodzislawsky from CES shared during her talk at the JIS.UY 2019 conference in Uruguay:
“El mejor tester no es el que encuentra mas bugs, sino el que logra que mas bugs sean arreglados”. Lo dijo Mónica Wodzislawski en el https://t.co/fLIJb5TDVz y estoy 100% de acuerdo.
— Enrique Almeida (@ealmeida) October 4, 2019
The quote is in English originally by Cem Kaner:
“The best tester isn’t the one that finds the most bugs, but the one that manages to get the most bugs fixed.” – Cem KanerClick to tweet
More so now thanks to the world of agile development, where we are all responsible for quality, testers are also part of the decisions made in the team such as what to focus on, whether or not to release a functionality, how to solve things, and much more.
Some time ago, I’d been philosophizing about this with Gabriel Montero (of Peregrinus) when we were preparing our talk for Argentesting 2018 by reviewing Cem Kaner’s famous definition of testing, “Testing is an empirical technical investigation done to provide stakeholders information about the quality of a product or a service. ”
That definition says that once the service or product is done, you have to test it and provide information. At the time, we discussed how we felt that testing should have another focus, not only to detect and report errors, but to prevent them.
Hence it makes sense that testers participate from day zero, since in the requirement definition meetings (user stories, use cases, etc.) the tester will ask questions thinking about how he or she will conduct testing later, which gets the developer already thinking about how to solve the possible problems that might arise and code for testability, which will surely help to avoid many bugs. This way of planning is more cost effective than testing at the very end waiting for someone to finally detect, report, correct and verify bugs.
In addition there is another problem with Kaner’s definition: merely providing information leaves us testers out of the decisions, taking away our responsibility. We must have a more active role and contribute to quality and take responsibility, together with the rest of the team, for product quality.
I believe testing is not about delivering information to a developer to then do what he or she wants with it or for a Project Manager to decide whether to deploy a new feature into production or not.
In today’s world, testers have the goal of responsibility for quality and our participation in these important decisions should be reflected in the definition of testing.
What do you think? Do testers improve software quality?