acceptance-test-driven-development

Acceptance Test-Driven Development In A Nutshell

Acceptance Test-Driven Development (ATDD) is a part of the agile methodology where automated tests are written from the user’s perspective. Unlike test-driven development – where acceptance tests are created from the perspective of the developer – ATDD advocates the automation of tests from the various perspectives of the user.

Understanding Acceptance Test-Driven Development

Here, acceptance tests are generated through collaboration between what are known as the “three amigos”, including: 

  1. The customer – what problem is the organization trying to solve?
  2. The developer – how might the problem be solved?
  3. The tester – who considers and verifies potential solutions.

Ultimately, the collaboration seen in Acceptance Test-Driven Development allows software development teams to meet acceptance criteria. When new features are created, one or more acceptance-level tests are written before the code itself is written. Following this process, development teams can test code based on certain conditions, triggers, or requirements supported by each of the three amigos.

Only after acceptance is attained should the code be refined to meet quality standards. Another way to think about ATDD is that the developer writes just enough code to meet the required functionality and pass the acceptance test. This means that the ATDD methodology gives instant feedback on whether the various stages of product development are meeting customer needs.

An example of a typical ATDD process

Following is a typical ATDD process explained in four distinct stages:

  1. Define user stories. What does the user expect to see once the product has been developed? A user story is an end goal as opposed to a product feature and must be expressed from the perspective of the user. Each should be an informal and general description of no more than a few sentences.
  2. Establish acceptance test criteria. User stories then drive the creation of acceptance test criteria. Each test should incorporate criteria that encompass a broad range of potential scenarios and detail how the system might respond to each.
  3. Automate the tests. Tests are turned into an executable format by using tools such as FitNesse, Concordion, and Cucumber.
  4. Implement the criteria as the basis of product development. Teams may choose to use the developer-centric TDD model to refine code until a test is passed. In passing these tests, it’s important to reiterate that no more effort be expended than necessary.

Benefits of ATDD

  • Increased efficiency. Studies have shown that teams using the ATDD process saw rework decrease from 60% to 20%. In other words, productivity doubled because the time available for developing new features climbed from 40% to 80%.
  • Enhanced collaboration, which begins with the definition of user stories and ends with code meeting acceptance criteria. With product owners, consumers, analysts, testers, and developers involved in every step of the process, there is a higher probability that performance and other standards are achieved.
  • Faster problem resolution. During ATDD, acceptance testing is not an isolated activity performed before rollout. Instead, the code is checked and rechecked with input from key stakeholders to ensure that it meets expectations. This encourages the identification and resolution of issues as they occur.

Key takeaways

  • Acceptance Test-Driven Development is a methodology advocating communication between customers, developers, and testers.
  • Acceptance Test-Driven Development stipulates that user stories are determined before any code is written. After user stories have been defined, code should be created according to certain user story criteria.
  • Acceptance Test-Driven Development increases efficiency and collaboration in development teams. The iterative nature of the ATDD process also facilitates faster problem resolution.

Related Business Concepts

customer-journey
The customer journey – sometimes called the buyer or user journey – tells the customer experience with a business, brand, product, or service. A customer journey is an alternative approach to other linear models like the sales funnel which hypothesize that most customers follow the same path.
use-case-modeling
Use case modeling describes the proposed functionality of a system from the user perspective. Use case modeling was developed in 1986 by Ivar Jacobson and then released to the mainstream in his 1992 book Object-Oriented Software Engineering – A Use Case Driven Approach.
pmesii-pt
PMESII-PT is a tool that helps users organize large amounts of operations information. PMESII-PT is an environmental scanning and monitoring technique, like the SWOT, PESTLE, and QUEST analysis. Developed by the United States Army, used as a way to execute a more complex strategy in foreign countries with a complex and uncertain context to map.
customer-experience-map
Customer experience maps are visual representations of every encounter a customer has with a brand. On a customer experience map, interactions called touchpoints visually denote each interaction that a business has with its consumers. Typically, these include every interaction from the first contact to marketing, branding, sales, and customer support.
bundling-bias
The bundling bias is a cognitive bias in e-commerce where a consumer tends not to use all of the products bought as a group, or bundle. Bundling occurs when individual products or services are sold together as a bundle. Common examples are tickets and experiences. The bundling bias dictates that consumers are less likely to use each item in the bundle. This means that the value of the bundle and indeed the value of each item in the bundle is decreased.
premature-optimization
Premature optimization describes the act of trying to make something more efficient at a point where it is too early to do so. Here, this focus on efficiency comes at the expense of more important tasks. As an example, before a business sets up marketing automation, it better understands its customers extremely well; otherwise, the risk is to lower the customer experience due to premature optimization.
agile-modeling
Agile Modeling (AM) is a methodology for modeling and documenting software-based systems. Agile Modeling is critical to the rapid and continuous delivery of software. It is a collection of values, principles, and practices that guide effective, lightweight software modeling.

Read Next: Business AnalysisCompetitor Analysis, Continuous InnovationAgile MethodologyLean StartupBusiness Model InnovationProject Management.

Main Free Guides:

Published by

Gennaro Cuofano

Gennaro is the creator of FourWeekMBA which reached over a million business students, executives, and aspiring entrepreneurs in 2020 alone | He is also Head of Business Development for a high-tech startup, which he helped grow at double-digit rate | Gennaro earned an International MBA with emphasis on Corporate Finance and Business Strategy | Visit The FourWeekMBA BizSchool | Or Get The FourWeekMBA Flagship Book "100+ Business Models"