Tests specified by the customer that determine what the software must do in specific circumstances if it is to be acceptable.
This definition specifically deals with the XP core concept of Acceptance Tests that are written by the customer, rather than by the developer from requirements specified by the customer. The requirement starts as a UserStory that is a placeholder for detailed requirements. The details of the requirements are captured directly into AcceptanceTests. Code to ‘fill the requirements’ is developed as code to pass the tests. Once the code passes all the tests, development is finished.
The AcceptanceTests form a growing set of regression tests that are used to ensure subsequent development to fill new requirements does not cause existing code to break. Assuming these regression tests are automated, then we have a system that goes some way toward enabling ConstantRefactoring by ensuring structure changes do not change functionality. Note that AcceptanceTests as used in XP re-introduce the possibility of CommonModeError, and care should be taken when using them out of context. The IterativeDevelopment in XP requires the demonstration of the system to stakeholders at the end of each iteration, allowing early detection of CommonModeError.