fbpx
Wikipedia

Acceptance test-driven development

Acceptance test–driven development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers.[1] ATDD encompasses many of the same practices as specification by example (SBE),[2][3] behavior-driven development (BDD),[4] example-driven development (EDD),[5] and support-driven development also called story test–driven development (SDD).[6] 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 (TDD).[7] It differs by the emphasis on developer-tester-business customer collaboration. ATDD encompasses acceptance testing, but highlights writing acceptance tests before developers begin coding.

Overview edit

Acceptance tests are from the user's point of view – the external view of the system.[1] 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.[8][9]

Creation edit

Acceptance tests are created when the requirements are analyzed and prior to coding.[1] 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.[10] Tests and requirements are interrelated.[11] 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.[12]

Testing strategy edit

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.[13] They are often derived from acceptance tests and unit tests. Cross-functional testing includes usability testing,[14] exploratory testing,[15] and property testing (scaling and security).[16]

Acceptance criteria and tests edit

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 edit

Acceptance tests usually follow this form:[1]

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 edit

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
Books
Title Checked out
Great book No
User who is registered on the system
Users
Name Sam

When:

User checks out a book
Checkout action
User Sam Checks out Great book

Then:

Book is marked as checked out
Books
Title Checked out User
Great book Yes Sam

Test examination edit

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 edit

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
Books
Title Checked out User
Great book Yes Sam
Another great book No
Users
Name
Sam

When:

User checks out another book
Checkout action
User Sam Checks out Another great book

Then:

Error occurs
Error occurred
Description
Violation of checkout business rule

Project acceptance tests edit

In addition to acceptance tests for requirements, acceptance tests can be used on a project as a whole.[1] 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 edit

References edit

  1. ^ a b c d e Pugh, Ken (2011). Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration. Addison-Wesley. ISBN 978-0321714084.
  2. ^ Adzic, Gojko. (2009) Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing, Neuri Limited,
  3. ^ Adzic, Gojko (2011). Specification by example: How successful teams deliver the right software. Manning. ISBN 978-0-321-27865-4.
  4. ^ 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.
  5. ^ "Example Driven Design". Retrieved 2013-04-15.
  6. ^ "Story Test-Driven Development" (PDF). Retrieved 2013-04-15.
  7. ^ Beck, Kent. Test Driven Development: By Example. Addison-Wesley Professional, 2002.
  8. ^ Melnik, Grigori, and Frank Maurer. Melnik, Grigori; Maurer, Frank (2007). "Multiple Perspectives on Executable Acceptance Test-Driven Development". Agile Processes in Software Engineering and Extreme Programming. Lecture Notes in Computer Science. Vol. 4536. pp. 245–249. doi:10.1007/978-3-540-73101-6_46. ISBN 978-3-540-73100-9.
  9. ^ Koskela, Lasse. (2007) Test Driven: TDD and Acceptance TDD for Java Developers. Manning Publications
  10. ^ Evans, Eric. (2003) Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional.
  11. ^ Weinberg, Gerald; Gause, Donald (1989). Exploring Requirements: Quality Before Design. Dorset House. ISBN 0-932633-13-7.
  12. ^ Martin, Robert C., and Grigori Melnik."Tests and Requirements, Requirements and Tests: A Möbius Strip" (PDF). Retrieved 2013-04-15.
  13. ^ [Test-driven_development]
  14. ^ Meszaros, Gerard, and Janice Aston. (2006) "Adding Usability Testing to an Agile Project." Agile Conference
  15. ^ "Exploratory Testing Explained" (PDF).
  16. ^ Meszaros, Gerard.(2007) xUnit Test Patterns: Refactoring Test Code. Addison-Wesley.

External links edit

  • Example of automation frameworks

acceptance, test, driven, development, acceptance, test, driven, development, atdd, development, methodology, based, communication, between, business, customers, developers, testers, atdd, encompasses, many, same, practices, specification, example, behavior, d. Acceptance test driven development ATDD is a development methodology based on communication between the business customers the developers and the testers 1 ATDD encompasses many of the same practices as specification by example SBE 2 3 behavior driven development BDD 4 example driven development EDD 5 and support driven development also called story test driven development SDD 6 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 TDD 7 It differs by the emphasis on developer tester business customer collaboration ATDD encompasses acceptance testing but highlights writing acceptance tests before developers begin coding Contents 1 Overview 1 1 Creation 1 2 Testing strategy 2 Acceptance criteria and tests 2 1 Test format 2 2 Complete test 2 3 Test examination 2 4 Another test example 2 5 Project acceptance tests 3 See also 4 References 5 External linksOverview editAcceptance tests are from the user s point of view the external view of the system 1 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 8 9 Creation edit Acceptance tests are created when the requirements are analyzed and prior to coding 1 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 10 Tests and requirements are interrelated 11 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 12 Testing strategy edit 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 13 They are often derived from acceptance tests and unit tests Cross functional testing includes usability testing 14 exploratory testing 15 and property testing scaling and security 16 Acceptance criteria and tests editAcceptance 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 edit Acceptance tests usually follow this form 1 Given setup A specified state of a systemWhen trigger An action or event occursThen verification The state of the system has changed or an output has been producedAlso 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 edit 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 outBooksTitle Checked outGreat book NoUser who is registered on the systemUsersName SamWhen User checks out a bookCheckout actionUser Sam Checks out Great bookThen Book is marked as checked outBooksTitle Checked out UserGreat book Yes SamTest examination edit 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 edit 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 enforcedGiven Book that has been checked outBooksTitle Checked out UserGreat book Yes SamAnother great book NoUsersNameSamWhen User checks out another bookCheckout actionUser Sam Checks out Another great bookThen Error occursError occurredDescriptionViolation of checkout business ruleProject acceptance tests edit In addition to acceptance tests for requirements acceptance tests can be used on a project as a whole 1 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 editConcordion FitNesse Robot Framework Gauge software Cucumber software References edit a b c d e Pugh Ken 2011 Lean Agile Acceptance Test Driven Development Better Software Through Collaboration Addison Wesley ISBN 978 0321714084 Adzic Gojko 2009 Bridging the Communication Gap Specification by Example and Agile Acceptance Testing Neuri Limited Adzic Gojko 2011 Specification by example How successful teams deliver the right software Manning ISBN 978 0 321 27865 4 Chelimsky David Dave Astels Zach Dennis Aslak Hellesoy Bryan Helmkamp and Dan North The RSpec Book Behaviour Driven Development with RSpec Cucumber and Friends The Pragmatic Bookshelf Example Driven Design Retrieved 2013 04 15 Story Test Driven Development PDF Retrieved 2013 04 15 Beck Kent Test Driven Development By Example Addison Wesley Professional 2002 Melnik Grigori and Frank Maurer Melnik Grigori Maurer Frank 2007 Multiple Perspectives on Executable Acceptance Test Driven Development Agile Processes in Software Engineering and Extreme Programming Lecture Notes in Computer Science Vol 4536 pp 245 249 doi 10 1007 978 3 540 73101 6 46 ISBN 978 3 540 73100 9 Koskela Lasse 2007 Test Driven TDD and Acceptance TDD for Java Developers Manning Publications Evans Eric 2003 Domain Driven Design Tackling Complexity in the Heart of Software Addison Wesley Professional Weinberg Gerald Gause Donald 1989 Exploring Requirements Quality Before Design Dorset House ISBN 0 932633 13 7 Martin Robert C and Grigori Melnik Tests and Requirements Requirements and Tests A Mobius Strip PDF Retrieved 2013 04 15 Test driven development Meszaros Gerard and Janice Aston 2006 Adding Usability Testing to an Agile Project Agile Conference Exploratory Testing Explained PDF Meszaros Gerard 2007 xUnit Test Patterns Refactoring Test Code Addison Wesley External links editExample of automation frameworks Retrieved from https en wikipedia org w index php title Acceptance test driven development amp oldid 1091258091, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.