Defining and Measuring Software Behaviour

Jeffrey Bakker
9 min readSep 23, 2019

Behaviour Driven Development with Cucumber and Selenium: Part I

Introduction

Many of us have (hopefully) already witnessed the benefits of Test Driven Development, usually in the form of unit tests, ensuring your algorithms are returning the right results, the proper events are fired when expected, and that your state machine doesn’t give you any surprises. When we have insight on what’s going on under the hood, we can catch defects early that would otherwise be hard to be debug. This series however, is not about TDD; it’s about a bigger picture and it starts at a user-verifiable level.

If you design your software’s behaviour from the outside-in using Behaviour Driven Development (BDD) practices, you are doing a number of things at once:

  • Providing a single source of truth for how the software is intended to behave
  • Building a shared understanding from Product Owner, to Developer, QA, UX, and any stakeholder of your product
  • Filling out requirements gaps and hashing out lower level details
  • Simultaneously documenting the software’s features while building a fully executable test suite against the current behaviour
  • Reducing turnaround between Development and QA

This is achieved by providing the language, framework, and practices to account for all roles involved in the introduction of a software feature.

--

--