Agile development helps organizations deliver fast, but under no circumstances does it say that you can do it with crappy quality. If you try to do things faster and cut corners just to produce low-quality products for your customers, you will quickly find that the consequences of ignoring quality do not allow the team to function at all.
To produce high-quality products, do it fast and without accumulating technical debt, the team has to build the infrastructure to do so. The classic example for such infrastructure is a CI system based on unit tests that run to test the stability of each build before releasing it for testing. In case of failure it can trigger an alert for the team to address the problem. An automated test framework provides a safety net for the team and more freedom to refactor or add new code, as the build is continually tested.
We all have stories about the frustration of testers when they are waiting all day for a build that was not ready due to one stupid bug or another. And even if they did manage to install it, chances are that they wasted hours reporting bugs that could easily be found using Q1 tests (Unit, Component, etc.).
For those of you who think that the frustration of testers is just their own problem and (as I once heard from a VP of engineering) they should “deal” with it, I want to say that you getting it all wrong. This type of frustration is just a symptom for deeper problems such as:
Testers do not have the opportunity to test the product with edge cases and complex test scenarios as their time is wasted on installing bad builds.
Lack of confidence from your team when refactoring their code.
Waste of time due to bugs found in happy-path scenarios and the use of unstable builds.
The accumulation of technical debt that will reduce the team’s ability to generate business value.
Tester frustration cannot be ignored. Agile teams must strive to implement coding practices such as TDD and continuous integration (CI). These practices are crucial as they increase the overall quality of the product and the efficiency of the entire development process. This has a direct impact on programmers, testers and how they benefit from one another.
The involvement of testers in the early phases of code implementation ensures that both sides are familiar with the new code being implemented. By the time the team is done with these coding and testing activities, the feature has been covered by low-level tests that improve its stability and increase its overall quality.
Working with high-quality builds makes a big difference in the day-to-day work of Agile testers, as they no longer waste their time on bad builds and can now focus on tests that matter. Testers can spend their time finding critical bugs that programmers have not covered in their tests, and by doing so, programmers can add additional tests to their code which ensure that the same bug will not arise in future builds.
Testers now have the chance to conduct other test types that programmers cannot cover in their tests, such as usability and GUI testing.