Behavioural Driven Development (BDD) is a refinement of Test Driven Development (TDD) and Acceptance Test Driven Development and this blog will talk about why Behavioural Driven Development is used and its benefits.
What is behavioural driven development?
BDD is very much linked to domain-specific-language (DSL) which is English that is used to develop the features as well as express the expected outcomes. Test scripts are used to actually test the expected outcomes and varies in detail. Behavioural development looks at each specific user story and analyses whether its purpose is to produce business outcomes. BDD looks at the outside/in and only implements behaviours that are closesly related to the business objective of that project to minimise wasted time and effort.
Why use behavioural driven development?
It is common within software development projects that there can be a breakdown in communication between the developers and the stakeholders. That is why with the use of domain specific language it is clear the terms of outcomes that we expect and they can be analysed formally so that all stakeholders understand. Behavioural driven development makes it clear who the stakeholder is; the business effect,the value and outlines all the potential outcomes and as a result is becoming more and more used in the Agile work place. Using BDD also increases the pool of feedback obtained in comparison to TDD because the technical jargon is not used under BDD and therefore, the easy language encourages more participation from the business.
Where to use Behavioural Driven Development
It is important to implement BDD to allow automation testing in specific areas where you can and not just anywhere and everywhere. One of the places to use BDD is in the most important parts of your application using end to end testing however, not all aspects of the app. The second place to use BDD is to test the application behaviour to ensure you see the expected behaviour using integration type tests. The third place to use BDD is to test the parts of the application that you can when unit testing.