behat - human-readable automated testing

44
Behat – an introduction human-readable automated testing

Upload: nyccamp

Post on 08-May-2015

742 views

Category:

Technology


0 download

DESCRIPTION

Behat is a tool that makes behavior driven development (BDD) possible. With BDD, you write human-readable stories that describe the behavior of your Drupal site. These stories can then be auto-tested against your website, whether in the midst of development, or on a live site. And yes, it’s as cool as it sounds! Behat, if embraced by enough Drupal folks, has the potential to vastly improve the way we build and test Drupal websites. Testing language can be developed by module maintainers, and allow nearly codefree testing to be developed by everyone, as needed, per site. Behat IS NOT unit testing nor a specification testing tool. Behat is a Scenario-oriented BDD framework with functional testing capabilities as part of a communication process between stake-holders and developers. Think Agile User Stories meets Selenium. Behat is currently used to test Drupal.org, allowing a variety of coders to work on a single site, and ensure that no existing functionality will break as they add new features. Or as it's migrated from one version to another. Imagine that on your site. We will review Behat (and Mink, and related code), how to use it with Drupal, Drush, and the existing modules/code to support that. We will demo live testing, and so how easy it is to write tests, with and without code.

TRANSCRIPT

Page 1: Behat - human-readable automated testing

Behat – an introductionhuman-readable automated testing

Page 2: Behat - human-readable automated testing

Overview of this presentation

Who What Why Where How

Page 3: Behat - human-readable automated testing

Overview of this presentation

Who am I? Who should use this? What Why Where How

Page 4: Behat - human-readable automated testing

Overview of this presentation

Who am I? Who should use this? What is Behat? Why Where How

Page 5: Behat - human-readable automated testing

Overview of this presentation

Who am I? Who should use this? What is Behat? Why should you care? Where How

Page 6: Behat - human-readable automated testing

Overview of this presentation

Who am I? Who should use this? What is Behat? Why should you care? Where did this come from? How

Page 7: Behat - human-readable automated testing

Overview of this presentation

Who am I? Who should use this? What is Behat? Why should you care? Where did this come from? How does it work? How can you

use it?

Page 8: Behat - human-readable automated testing

Who am I?

Seth Cohn @sethcohn at drupal.org,

twitter, and elsewhere Almost 9 years of Drupal Worked as independent,

part of development companies,non-profits, and more..

Elected in NH in 2010 as State Representative, prime sponsored the first Open Source/Open Data bill passed into law in USA

Page 9: Behat - human-readable automated testing

Who should use this?

Who is the target of this talk? Developers who want to be clear on

what they are being asked to build Project Managers who want to be clear

on what they are requesting be built Anyone using Agile methods or who

wants to… End Users working to get new useful

features built Anyone wanting to drive focused

development

Page 10: Behat - human-readable automated testing

Behat is?

What is Behat?

“Behat is a tool that makes behavior driven development (BDD) possible.”

http://docs.behat.orgfirst line of the quick

intro

So let’s ask what BDD is?

Page 11: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:o Where to start in the process?o What to test and what not to test?o How much to test in one go?o What to call the tests?o How to understand why a test fails?

Page 12: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:

Where to start in the process? What to test and what not to test? How much to test in one go? What to call the tests? How to understand why a test fails?

Page 13: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:

Where to start in the process? What to test and what not to test? How much to test in one go? What to call the tests? How to understand why a test fails?

Page 14: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:

Where to start in the process? What to test and what not to test? How much to test in one go? What to call the tests? How to understand why a test fails?

Page 15: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:

Where to start in the process? What to test and what not to test? How much to test in one go? What to call the tests? How to understand why a test fails?

Page 16: Behat - human-readable automated testing

behavior driven development (BDD)?

What is that?Coined by Dan North, http://dannorth.netwho was teaching Test Driven Development, and asking questions like:

Where to start in the process? What to test and what not to test? How much to test in one go? What to call the tests? How to understand why a test fails?

Page 17: Behat - human-readable automated testing

Testing Pyramid – Mike Cohn*

•UI•Service•Unit

http://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid

* no relation

Page 19: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 20: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 21: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 22: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 23: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 24: Behat - human-readable automated testing

behavior driven development (BDD)?

BDD rethinks testing: should be written in order of business value should use the standard agile framework of a

User story: "As a [role] I want [feature] so that [benefit]”

should be written with Acceptance criteria in terms of scenarios and implemented as classes: Given [initial context], when [event occurs], then

[ensure some outcomes]

Page 25: Behat - human-readable automated testing

Behat is? (let’s try again!)

What is Behat?

Behat is a PHP clone of Cucumber (which was written in Ruby). It works with Mink, to….

Page 26: Behat - human-readable automated testing

Behat is? (let’s try again!)

What is Behat?

Behat is a PHP clone of Cucumber (which was written in Ruby). It works with Mink, to….

WHA? Ok, let’s try again….

Page 27: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Page 28: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Behat is a clone of a similar tool in Ruby called Cucumber.

Cucumber? Gherkin! Behat?

Page 29: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a “Business Readable Domain Specific Language” created especially for behavior descriptions.

Page 30: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a “Business Readable Domain Specific Language” created especially for behavior descriptions.

Example?

Feature:"As a [role] I want [feature] so that [benefit]”

Scenario:Given [initial context], when [event occurs], then [ensure some outcomes]

Page 31: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

Page 32: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

GoutteDriver SahiDriver ZombieDriver SeleniumDriver Selenium2Driver

Page 33: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

GoutteDriver SahiDriver ZombieDriver SeleniumDriver Selenium2Driver

Page 34: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

No Javascript driver SahiDriver ZombieDriver SeleniumDriver Selenium2Driver

Page 35: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

No Javascript driver Sahi Proxy Driver ZombieDriver SeleniumDriver Selenium2Driver

Page 36: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

No Javascript driver Sahi Proxy Driver Headless JS Driver SeleniumDriver Selenium2Driver

Page 37: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

No Javascript driver Sahi Proxy Driver Headless JS Driver Selenium! Driver Selenium2 Driver

Page 38: Behat - human-readable automated testing

Pieces that make up ‘Behat’ Behat tests the

behavior of your application described in special language called Gherkin.

Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.

Mink is an open source acceptance test framework for web applications, written in PHP 5.3

No Javascript driver Sahi Proxy Driver Headless JS Driver SeleniumDriver Selenium2Driver

Page 39: Behat - human-readable automated testing

Nitty Gritty detailsOr how the heck does this work?

• Sites we don’t control (blackbox) – Wikipedia demo example

• Sites we do control (but still blackbox) – local Drupal 8 install demo example

• Whitebox – not demoing today

Page 40: Behat - human-readable automated testing

Why should Drupal embrace BDD?

Benefits to community Better testing of all of the code,

especially code you didn’t author yourself Benefits to developer

Write simpler tests and get cleaner tests improve your code, and your overall site

especially with help of non-tech folks Benefits to end user and site owners

PROFIT! Business focus = productive changes!

Better communication of needs and goals

Page 41: Behat - human-readable automated testing

Which behat ‘module’ to use?

Modules at Drupal.org: behat: It allows you to write feature tests for

a Drupal site using SimpleTest API functions and assertions in step definitions.

behat_testing: Integrates behat with drush and adds own step definitions for Drupal

drupalextension: Provides a DrupalExtension with Drupal step definitions.

doobie: used to test Drupal.org site w/ behat.

Page 42: Behat - human-readable automated testing

Drupal.org

Why does Drupal.org now use Behat?

Developers don’t get access to the main Drupal boxes…

Breaking Drupal.org is a bad thing! Updating from D5 to D6 to D7 (to D8…)?

Don’t want to lose features, functionality, etc…

Page 44: Behat - human-readable automated testing

Thank you to…

The entire team at BioRAFT and especially Nathan & Ben, the CEO & CTO who ‘get it’ Jeremy, Justin, Dan, Diliny, & Michelle

Behat coders everywhere and especially Konstantin Kudryashov (everzet)

Drupal coders everywhere and especially Melissa Anderson (eliza411)