Lably
Skip to content

Behavior-driven development

Collaborative approach to designing and developing software

  • 8 min read
  • 5 chapters

Related on Lably

Through Stack (abstract data type)

BDD involves use of a domain-specific language (DSL) using natural-language constructs (e.g., English-like sentences) that can express the behavior and the expected outcomes.

BDD encourages collaboration among developers, quality assurance experts, and customer representatives in a software project. It encourages teams to use conversation and concrete examples to formalize a shared understanding of how the application should behave. BDD is considered an effective practice especially when the problem space is complex.

A common misconception regarding BDD is that it supposedly is a refinement of test-driven development (TDD). While it was originally derived from TDD practices, the sole purpose of BDD is to gain a shared understanding of the problem space and find a way to write this down in a Business Language, using Real data, whilst being Intention revealing, Essential and Focused (BRIEF). BDD combines the techniques of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software development and management teams with shared tools and a shared process to collaborate on software development.

At a high level, BDD is an idea about how software development should be managed by both business interests and technical insight. Its practice involves use of specialized tools. Some tools specifically for BDD can be used for TDD. The tools automate the ubiquitous language.

Overview

BDD is a process by which DSL structured natural-language statements are converted into executable tests. The result is executable specification eventually forming Living Documentation: Requirements that are also the first acceptance tests that drive your software development (Acceptance test-driven development).

BDD focuses on:

  • Collaboration between business and technical people
  • Creating a shared understanding of the problem that needs solving and how to solve this (without including any details on a chosen technical implementation yet)
  • Writing this down in an unambiguous, precise way so that it can become executable specifications

Starting from this point, many people developed BDD frameworks over a period of years, finally framing it in terms of a communication and collaboration framework for developers, QA and non-technical or business participants in a software project.

Sign in to keep reading

4 more chapters are free with a Lably account.

More in Computing and communication