Content deleted Content added
Reverted good faith edits by Dijonkitchen (talk): That blog is nice, but let's follow what the source stated. (TW) |
Adding short description: "Methodology in software development" |
||
(23 intermediate revisions by 20 users not shown) | |||
Line 1:
{{Short description|Methodology in software development}}
{{Software development process}}
'''Acceptance test–driven development''' ('''ATDD''') is a [[Software development|development]] methodology based on communication between the business customers, the developers, and the testers.<ref name="Pugh11">{{cite book | first = Ken | last = Pugh | year = 2011 | title = Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration | publisher = Addison-Wesley | isbn = 978-0321714084}}</ref> ATDD encompasses many of the same practices as [[specification by example]] (SBE),<ref>Adzic, Gojko. (2009) ''Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing'', Neuri Limited,</ref><ref>{{cite book|last=Adzic|first=Gojko|
</ref> and support-driven development also called story test–driven development (SDD).<ref>{{cite web| url = http://industriallogic.com/papers/storytest.pdf | title = Story Test-Driven Development |
ATDD is closely related to [[test-driven development]] (TDD).<ref>Beck, Kent. Test Driven Development: By Example. Addison-Wesley Professional, 2002.</ref>
== Overview ==
Acceptance tests are from the user's point of view – the external view of the system.<ref name="Pugh11" /> 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.<ref>Melnik, Grigori, and Frank Maurer. {{cite
=== Creation ===
Acceptance tests are created when the requirements are analyzed and prior to coding.<ref name="Pugh11" /> 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.<ref>Evans, Eric. (2003) ''Domain-Driven Design: Tackling Complexity in the Heart of Software''. Addison-Wesley Professional.</ref> Tests and requirements are interrelated.<ref>{{cite book|
=== Testing strategy ===
Acceptance tests are a part of an overall testing strategy. They are the customer/user oriented tests that demonstrate the business intent of a system.
== Acceptance criteria and tests ==
Acceptance criteria are a description of what would be checked by a test. Given a requirement such as
=== Test format ===
Line 38 ⟶ 39:
: 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:▼
▲For the example requirement, the steps could be listed as:<syntaxhighlight lang="cucumber">
▲: Book that has not been checked out
▲: User who is registered on the system
</syntaxhighlight>
▲: User checks out a book
▲: Book is marked as checked out
=== Complete test ===
Line 64 ⟶ 59:
|-
! Books
|
|-
| Title || Checked out
Line 76 ⟶ 72:
! Users
|-
| Name
|-
|
|}
Line 182 ⟶ 178:
* [[Robot Framework]]
* [[Gauge (software)]]
* [[Cucumber (software)]]
== References ==
|