Updated: Mar 2
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 quicker and cut corners 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. 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 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 testers' frustration when they wait 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, the 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 testers' frustration is just their problem and (as I once heard from a VP of engineering) they should “deal” with it, I want to say that you are getting it all wrong. This type of frustration is just a symptom of 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 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 will reduce the team’s ability to generate business value.
Tester's frustration cannot be ignored. Agile teams must 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 directly impacts 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 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 ensures 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.