Content deleted Content added
m formatting / punctuation change |
|||
Line 1:
{{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]],<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|authorlink=Gojko Adzic|title=Specification by example: How successful teams deliver the right software|publisher=Manning|year=2011|isbn=978-0-321-27865-4}}</ref> [[behavior-driven development]] (BDD),<ref>Chelimsky, David, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, and Dan North. ''The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends.'' The Pragmatic Bookshelf.</ref> example-driven development (EDD),<ref>{{cite web| url = http://www.exampler.com/ | title = Example Driven Design| accessdate = 2013-04-15}}
</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 | accessdate = 2013-04-15}}</ref> 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.
Line 12:
=== 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|last=Weinberg|first=Gerald|last2=Gause|first2=Donald|authorlink=Gerald_Weinberg|title=Exploring Requirements: Quality Before Design|publisher=Dorset House|year=1989|isbn= 0-932633-13-7}}</ref> 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.<ref>Martin, Robert C., and Grigori Melnik.{{cite web | url = http://www.gmelnik.com/papers/IEEE_Software_Moebius_GMelnik_RMartin.pdf | title = Tests and Requirements, Requirements and Tests: A Möbius Strip | accessdate = 2013-04-15}}</ref>
=== Testing
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.<ref>[Test-driven_development]</ref> They are often derived from acceptance tests and unit tests. Cross-functional testing includes usability testing,<ref>Meszaros, Gerard, and Janice Aston. (2006) "Adding Usability Testing to an Agile Project."Agile Conference</ref> exploratory testing,<ref>{{cite web | title = Exploratory Testing Explained | url = http://www.satisfice.com/articles/et-article.pdf }}</ref> and property testing (scaling and security).<ref>Meszaros, Gerard.(2007) ''xUnit Test Patterns: Refactoring Test Code''. Addison-Wesley.</ref>
|