For example: Documentation can be put as one of the acceptance criteria which means acceptance tests will take that into consideration before they can be passed.
All that being said let’s take a look at how ATTD looks in practice.
Discuss – During this phase, you discuss the user story. That means you discuss what the customer needs from the product at the end of development.
Distill – Here we agree on the acceptance test and automation criteria. We also consider different scenarios and how the system will behave during those scenarios.
Develop – Now, actual development happens. You develop a feature following the Test First Development approach until it’s passable.
Demo – Here, you demonstrate the prototype model to the business stakeholders and start iterating.
Pros and cons of ATTD
Let’s look at what the benefits and flaws of acceptance test-driven development are.
Pros
Clarifies requirements
Faster problem resolution
Improves collaboration across teams
Focused on customer needs
Guideline for the entire development process
Easy to manage
Developers get to know the QA aspect and vice versa
Add a test – Write a test case that describes a specific function. In order to make the test cases the developer must understand the features and requirements using user stories and use cases.
Run all test cases – When you run all test cases you want to make sure they all fail.
Write the code – Here you write the code that passes the test case.
Run the test case – Now the test case should pass.
Refactor code – We do this in order to remove code duplication or redundancies.
Repeat – The steps are repeated again and again.
With steps out of the way let’s look at the pros and cons of this development approach.
Pros and cons of TDD
Test-driven development is great, but it does have some pitfalls.
All or nothing approach (either every team member uses it, or no one uses it)
Having finished with TDD we move on to the final approach.
What is Behavior-driven development (BDD)?
It’s an approach that supports joint efforts among designers, developers, QA, marketing, and other non-tech members (PM/PO).
Behavior-Driven Development is an Agile software development process heavily influenced by TDD and DDD (Domain-driven development).
It permits the QA to develop test cases in simple, readable language.
Conversations and examples explained in understandable language are at the core of this development method, bringing a better understanding of the system’s behavior.
Automated testing especially thrives during BDD because it’s more focused on system behavior, rather than code implementation.
Basically, it makes sure every new feature is in accordance with desired system behavior.
BDD steps
Behavior-driven development can be broken into 3 phases:
Discovery phase – Here we hold conversations and product discovery workshops to research and determine acceptance criteria.
They’re chosen by considering a few factors:
Core features
Market
Target persona
Product type
The product manager is heavily involved during this phase, along with the project manager, QA engineer, and developers.
Formulation phase – After finishing the discovery phase it’s time for implementation. This phase ensures that acceptance criteria are applied before development begins. That’s done using acceptance tests.
Automation phase – Here we automate acceptance tests. The goal of this phase is to have acceptance tests run constantly to make sure criteria are met and that new behaviors fit the system.
Pros and cons of BDD
As with the previous 2, let’s take a look at good and bad aspects of this development method.
Pros
Requirements are defined in standard approach using simple language
Focuses on how the system should behave from the customer’s and developers’ perspective
Cost-effective
Reduces effort needed to verify any post-deploy defects
Cons
Communication between users/client and PM/PO is key
Dedicated development team should be involved in the definition of new features
Maintenance requires effort and time
Doesn’t work well in short projects
Now that we’ve described all three development methods let’s take a look at how they compare.
ATTD vs TDD vs BDD: key differences
To better understand each development method and to see which suits you, here’s a table comparing them.
Categories
ATTD
TDD
BDD
Focus
ATTD focuses on requirements
TDD focuses on feature implementation
BDD focuses on system behavior
Team
Developers, customers and QAs
developers
Developers, customers, QAs, and product manager
Language
Plain English, and Gherkin
Programming languages like Python or Java
Plain English, and Gherkin
Mainactivity
Writing Acceptance tests
Writing Unit tests
Understanding Acceptance criteria
Bug tracking
Not as easy as TDD
Easier to track down bugs
Not as easy as TDD
Suitable for
Projects involving the end user and with high UX prioritization
Have you decided yet on which development method best suits you?
No?
Well, that’s because each of these methods has its merits.
TDD is extremely focused, allowing no unnecessary code to be written. If you’re on a tight budget that’s the way to go.
ATTD builds on TDD, adding business stakeholders into the equation. If you’re more customer oriented, you should use this method.
BDD is all about making features comply with the desired system behavior and it does so through straightforward language. So if you want the best collaboration between developers, testers, and your product team, choose BDD.
Alternatively, we’re here to worry about all that. Our software development experts will choose the right development method for your project and execute it to perfection.
Thorough testing is the only way to ensure that apps work as intended. We cover 4 software testing levels your app should go through from planning to release.