Automated acceptance tests play an important part in many agile projects, both for verification and for communication. As a verification tool, acceptance tests perform a similar role to integration tests, and aim to demonstrate that the application effectively does what is expected of it. But this is almost a secondary aspect of automated Acceptance Tests. The primary focus is actually on communication—demonstrating to nondevelopers (business owners, business analysts, testers, and so forth) precisely where the project is at.
Acceptance tests should not be mixed with developer-focused tests, as both their aim and their audience is very different. Acceptance tests should be working examples of how the system works, with an emphasis on demonstration rather than exhaustive proof. The exhaustive tests should be done at the unit-testing level.
Acceptance Tests can be automated using conventional tools such as JUnit, but there is a growing tendency to use Behavior-Driven Development (BDD) frameworks for this purpose, as they tend to be a better fit for the public-facing nature of Acceptance Tests. Behavior-driven development tools used for automated Acceptance Tests typically generate HTML reports with a specific layout that is well-suited to nondevelopers. They often also produce JUnit-compatible reports that can be understood directly by Jenkins.
Behavior-Driven Development frameworks also have the notion of “Pending tests,” tests that are automated, but have ...