Automated acceptance testing (AAT) is a recent addition to agile software development testing, which promises to improve communication and collaboration. We call acceptance testing because it expresses what the software needs to do for the stakeholder to find it acceptable.
We use Acceptance tests to verify that the user story or requirement is complete. The Acceptance test gives stakeholders a clear idea of what software will do and how developers will build the software.
Key Points about AAT
- Automated Acceptance Tests (AAT) idea originated from extreme programming (XP), specifically in the practice of test-driven development (TDD).
- Acceptance tests are not unit tests. Unit Tests are aimed at developers and help them drive out and check their software designs. Unit tests ensure you build the thing right, whereas acceptance tests ensure you make the right thing.
- The Automation Acceptance Test concept emerged from TDD and grew with BDD. Here the idea was developers and stakeholder collaboration to write automated tests. Earlier, TDD was more linked to AAT; the concept of TDD is that write a test case before you start writing actual code.
- We write automated acceptance tests using Gherkin language, familiar with most popular BDD frameworks like Cucumber, Behat, Behave, and JBehave, etc.
Limitations of AAT
- Customer Understanding: There is a big challenge in writing an automated acceptance test is that it should be written effectively. Otherwise, it would be typical for all stakeholders to understand. Customers don't understand the test tools, so the developers write and maintain these tests anyway.
- Expensive to maintain: Tests are costly to maintain. The more you change, the more you need to change your tests, and you increase the project's cost in script maintenance.
- Fail on code change: Most of the time, when code is changed, test scripts fail, which creates confusion in customers' minds that there is something wrong with the application. So, there is a need to fix them as soon as possible. Also, these create problems when running it as a part of continuous integration.