A Reflection on Up-Front Testing
As we were saying, up-front testing really isn’t testing at all. It is really up-front design through the analysis of our tests. Can we take this testing even further? When XP came out and suggested doing unit tests, many of us realized that if we combined a series of unit tests together, we could get the equivalent of automated acceptance testing.
Overbuilding systems is one of the greatest causes of waste in software development. A function that isn’t used doesn’t just waste the time it took to write it, it makes the system more complex. This makes adding other functionality or fixing existing errors much more time-consuming, not to mention that the system is likely to have more errors in it. By clarifying the scope of work in a clearer way, we can help avoid this.
By the way, there may be certain arguments for not writing and maintaining a set of automated tests. We don’t think we would agree with them, or at least, in virtually all cases we are fairly sure we wouldn’t. However, there is little argument that can be made for not at least specifying the tests first. This is because you are going to have to specify them at some time. You might as well do it at the time it provides the greatest value.
Source: “Essential Skills for the Agile Developer – A Guide to Better Programming and Design”, Alan Shalloway, Scott Bain, Ken Pugh and Amir Kolsky, Addison-Wesley,
From a software development point of view, Agile requires a very disciplined practice to produce working and tested software at the end of each iteration. To achieve this challenging result, the requirements management, software development and software testing activities have to be performed concurrently, by people with cross-functional skills or with a close collaboration between business analysts, software developers and software testers in the same team. In Scrum, the understand-design-code-test phases are now intertwined and no more sequential, thus requirements definition, code and automated test both progress at the same time. The quote about complexity also tells us that you have to do less to do more. The ability of the customer to prioritize is in this case essential.