Executable Acceptance Test Driven Development
Acceptance testing is an important aspect of software development. Acceptance tests (sometimes referred as storytests in agile teams) are high-level tests of business operations. They are not meant to test internals or technical elements of the code, but rather are used to ensure that software meets business goals. Executable (i.e. automated) acceptance tests can be used as a measure of project progress.
Executable Acceptance Test driven Development (EATDD) pushes the test-driven development (TDD) paradigm of agile methods up to the customer level. TDD requires that no production code be written unless an automated unit tests fails. EATDD extends this by requiring that no code be written for a new feature unless an automated acceptance test fails. In other words, at least one customer acceptance test for a feature (also called story tests) needs to be developed before the development team starts tackling that feature.
Executable acceptance test-driven development is a promising approach that helps to clarify customer expectations and express them with concrete examples (acceptance tests) first. This leads to establishing clearer and less ambiguous contexts for development and helps teams to increase customer satisfaction.
In EATDD, acceptance tests basically become a form of executable specifications that help guide the development team in their efforts. Tests need to be written in the language of the domain so that they become understandable for end users and customer representatives. Acceptance tests are concrete examples of the behavior of a feature. They help overcome various issues found in more traditional forms of requirements specifications (see PhD thesis by G. Melnik).
We are investigating the impact of EATDD on team communication and software quality. In addition, we are comparing different representation formats for acceptance tests for various stakeholder groups in the development endeavor.
We conduct research into requirements for the next generation of Acceptance Testing tools. Our FitClipse project currently investigates test refactoring and extends existing approaches by providing a sense of test history.
AP Jazz with EATDD
IBM Jazz is supporting our research on integrating synchronous distributed project planning with executable acceptance test driven development for agile software teams.