HOME

TheInfoList



OR:

Acceptance test–driven development (ATDD) is a
development Development or developing may refer to: Arts *Development hell, when a project is stuck in development *Filmmaking, development phase, including finance and budgeting *Development (music), the process thematic material is reshaped *Photographi ...
methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as
specification by example Specification by example (SBE) is a collaborative approach to defining requirements and business-oriented functional tests for software products based on capturing and illustrating requirements using realistic examples instead of abstract statemen ...
(SBE),
behavior-driven development In software engineering, behavior-driven development (BDD) is an agile software development process that encourages collaboration among developers, quality assurance experts, and customer representatives in a software project. It encourages teams ...
(BDD), example-driven development (EDD), and support-driven development also called story test–driven development (SDD). All these processes aid developers and testers in understanding the customer's needs prior to implementation and allow customers to be able to converse in their own domain language. ATDD is closely related to
test-driven development Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against al ...
(TDD). It differs by the emphasis on developer-tester-business customer collaboration. ATDD encompasses
acceptance testing In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met. It may involve chemical tests, physical tests, or performance tests. In systems en ...
, but highlights writing acceptance tests before developers begin coding.


Overview

Acceptance tests are from the user's point of view – the external view of the system. They examine externally visible effects, such as specifying the correct output of a system given a particular input. Acceptance tests can verify how the state of something changes, such as an order that goes from "paid" to "shipped". They also can check the interactions with interfaces of other systems, such as shared databases or web services. In general, they are implementation independent, although automation of them may not be.


Creation

Acceptance tests are created when the requirements are analyzed and prior to coding. They can be developed collaboratively by requirement requester (product owner, business analyst, customer representative, etc.), developer, and tester. Developers implement the system using the acceptance tests. Failing tests provide quick feedback that the requirements are not being met. The tests are specified in business domain terms. The terms then form a ubiquitous language that is shared between the customers, developers, and testers. Tests and requirements are interrelated. A requirement that lacks a test may not be implemented properly. A test that does not refer to a requirement is an unneeded test. An acceptance test that is developed after implementation begins represents a new requirement.


Testing strategy

Acceptance tests are a part of an overall testing strategy. They are the customer tests that demonstrate the business intent of a system. Component tests are technical acceptance tests developed by an architect that specify the behavior of large modules. Unit tests are created by the developer to drive easy-to-maintain code. They are often derived from acceptance tests and unit tests. Cross-functional testing includes usability testing, exploratory testing, and property testing (scaling and security).Meszaros, Gerard.(2007) ''xUnit Test Patterns: Refactoring Test Code''. Addison-Wesley.


Acceptance criteria and tests

Acceptance criteria are a description of what would be checked by a test. Given a requirement such as "As a user, I want to check out a book from the library", an acceptance criterion might be, "verify the book is marked as checked out". An acceptance test for this requirement gives the details so that the test can be run with the same effect each time.


Test format

Acceptance tests usually follow this form: Given (setup) : A specified state of a system When (trigger) : An action or event occurs Then (verification) : The state of the system has changed or an output has been produced Also, it is possible to add Statements that start with AND in any of the sections below (Given, When, Then). For the example requirement, the steps could be listed as: Given Book that has not been checked out And User who is registered on the system When User checks out a book Then Book is marked as checked out


Complete test

The previous steps do not include any specific example data, so that is added to complete the test: Given: : Book that has not been checked out : User who is registered on the system When: : User checks out a book Then: : Book is marked as checked out


Test examination

Examination of the test with specific data usually leads to many questions. For the sample, these might be: * What if the book is already checked out? * What if the book does not exist? * What if the user is not registered on the system? * Is there a date that the book is due to be checked-in? * How many books can a user check out? These questions help illuminate missing or ambiguous requirements. Additional details such as a due-date can be added to the expected result. Other acceptance tests can check that conditions such as attempting to check out a book that is already checked out produces the expected error.


Another test example

Suppose the business customer wanted a business rule that a user could only check out one book at a time. The following test would demonstrate that: Scenario: Check that checkout business rule is enforced Given: : Book that has been checked out When: : User checks out another book Then: : Error occurs


Project acceptance tests

In addition to acceptance tests for requirements, acceptance tests can be used on a project as a whole. For example, if this requirement was part of a library book checkout project, there could be acceptance tests for the whole project. These are often termed SMART objectives. An example test is "When the new library system is in production, the users will be able to check books in and out three times as fast as they do today".


See also

*
Concordion Concordion is a specification by example framework originally developed by David Peterson, and now maintained by a team of contributors, led by Nigel Charman. Inspired by the Fit Framework, David states the following aims were behind Concordio ...
* FitNesse *
Robot Framework Robot Framework is a generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). It is a keyword-driven testing framework that uses tabular test data syntax. History The basic ideas for Robot Frame ...
*
Gauge (software) Gauge is a light weight cross-platform test automation tool. It uses markdown to author test cases and scenarios. Its modular architecture makes it flexible and scalable. Markdown Gauge specifications are written in the business language. For exa ...
*
Cucumber (software) Cucumber is a software tool that supports behavior-driven development (BDD). Central to the Cucumber BDD approach is its ordinary language parser called Gherkin. It allows expected software behaviors to be specified in a logical language that ...


References


External links


Example of automation frameworks
{{DEFAULTSORT:Acceptance test-driven development Software development philosophies Software testing Business analysis