You might be thinking that the title doesn’t make sense and how would this be helpful to the development of software? A common perspective where test should be independence, thus it’s safest to be separated from development. Though this statement does make sense, Gojko Adzic’s book, “Bridging the Communication Gap”, brings new perspective on way of working between testers and developers through Agile Acceptance Testing. Gojko suggested an upfront workshop where tests are constructed before implementation starts. The workshop involves testers, developers and best with customers, together in creating tests that satisfy new requirements. Below are few benefits of the practice:
Early test design promotes collaboration over competition
A separation of team of testers and developers often produce competition between two teams rather than helping out each other. This is especially true when testers’ contribution are measured based on number of bugs found. Gojko’s workshop encouraged collaboration in generating tests before implementation focusing on improving software quality through doing it right as early as possible, best during development, rather than after implementation. By having wider perspectives, it assumes higher chance in producing what customer really wants.
It reduce rework
By doing the disclosing what testers going to check to developers upfront, it enable developer to do enough job to pass the checking. This way of working will help to reduce rework for developers which is in contrast with what traditionally advised where testing is conducted at the end of development phase. Further than that, automation on tests could potentially drives developers implementation and effectively reduces unnecessary codes either.
It still satisfied the spirit of testing should be independent
Since all of the tests are constructed before writing code, tests will not be influenced by implementation. Some technical practices, such as test driven development, ensure test independence without separation of teams and departments. It has been a common confusion where test independence means independent testers, where that’s not necessarily true.
Idea of testers telling developers on what is going to be checked upfront is similar idea with publicizing location of speed cameras on motorway. The purpose of publicizing camera is to reduce accidents instead of charging people for speeding. Drawing from the analogy, testers and developers should ensure prepared tests are reliable enough in producing higher software quality.