While working with the product team on coming up with the requirements, the Software Testing professionals come across both BDD and ATDD. Since they appear very similar, there’s confusion in the minds of the practitioners as to what these two do. BDD is Behavior Driven Development, and ATDD is Acceptance Tests Driven Development. While BDD focuses on behaviors of the system, ATDD focuses on the acceptance criteria (requirements) which decide if the system is doing what it is supposed to be doing. Both of these are specified in Gherkin format. There are tons of resources available on the Internet on what BDD and ATDD are, and how to write in the Gherkin format. In this blog, let’s look at the BDD and ATDD comparison, and talk about the related points.
There is no clear directive from the industry on which one should be used, at least not from the research that I did. There are a few links which compare these methods and name the associated tools, but those are not helpful on a conceptual level for one to make a decision on which one to use in which situation. There are practitioners who suggest all the three (TDD, BDD, and ATDD) should be used in the project, but again, there are no clear directions or information on why both BDD and ATDD should be used. Here are my thoughts on why either one would be sufficient.
What could be expressed as a behavior can be expressed as an acceptance criteria, and vice versa. ‘Behavior’ and ‘Acceptance Criteria’ at the end of the day is syntactic sauce to me, because all the acceptance criteria can be summarized as the total behavior of the system, or all the behaviors can be summarized as the acceptance criteria for a system. I think it would be an overkill to have both, and it will be confusing to the team to have both. When code is being written, should the tests be written based on the behavior or the acceptance criteria – if we have both? We can’t do both, we should select only one.
To me, it does not matter if it is called the behavior or the acceptance criteria, but what I care about as a tester is whether all the design considerations are taken into account while defining the behavior or the acceptance of the system. This is where testers need to pay attention because these criteria defined in the Gherkin are what are going to translate into tests in TDD.
Hope that helps a bit in understanding the place of BDD/ATDD in the scheme of things. Feel free to contact me if you/your organisation need help in coming up with test strategies around Behavior Driven or Acceptance Tests Driven Development.