37
© Mayflower GmbH 2011 BDD Micha Trieba I 22.09.2011

BDD

Embed Size (px)

DESCRIPTION

"BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters." Zitat: Dan NorthWas dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen soll das BDD Framework für PHP "Behat" vorgestellt werden. E

Citation preview

© Mayflower GmbH 2011

BDD

Micha Trieba I 22.09.2011

Mayflower GmbH I 2

BDD mein Nutzen heute

Um wie viel bin ich hinterher schlauer: BDD Gherkin Behat

Mayflower GmbH I 3

Test Driven Development

Vorführender
Präsentationsnotizen
TDD bringt Code der laeuft TDD bringt auch eine Betrachtung von Funktionalitaet, eine bessere Architektur ABER noch nicht zwangsweise Software, die das tut, was sie tun soll

Mayflower GmbH I 4

Vorführender
Präsentationsnotizen
TDD setzt Umdenken und Einübung voraus

Mayflower GmbH I 5

Behaviour Driven Development

Mayflower GmbH I 6

Dan North ThoughtWorks, DRW Trading Group http://dannorth.net/ „It's all behaviour“ JBehave http://dannorth.net/introducing-bdd/ http://dannorth.net/whats-in-a-story/

Vorführender
Präsentationsnotizen
Einer der Initiatoren Vom test zu behaviour Something should do something Business value defines the next step BDD formalisiert Akzeptanzkriterien Bring alle Stakeholder zusammen, um Akzeptanzkriterien zu formulieren BDD provides a “ubiquitous language” for analysis

Mayflower GmbH I 7

escape the dual gumption traps of “that’s not what I asked for”

or “I forgot to tell you about this other thing”

Dan North

Vorführender
Präsentationsnotizen
Gumption: Tatkraft, Entschlosenheit „Entmutigung“ A gumption trap is an event or mindset that can cause a person to lose enthusiasm and discourage them from starting or continuing a project. Kreislauf von Spezifikation, Entwicklung, Test, verkuerzen

Mayflower GmbH I 8

Create software that matters

Dan North

Vorführender
Präsentationsnotizen
Software, die stabil läuft Software, die nicht ständig patches braucht Software, die tut was sie soll

Mayflower GmbH I 9

Mayflower GmbH I 10

Agile acceptance testing Acceptance Test Driven Development

Example Driven Development Story testing

Specification by Example

Vorführender
Präsentationsnotizen
Nicht synonym, aber beschreiben die Komponenten von BDD

Mayflower GmbH I 11

specification by example: key process patterns

Nach: Gojko Adzic, Specification by Example

Mayflower GmbH I 12

Agile

Mayflower GmbH I 13

Story = feature As a [role] I want [feature] So that [benefit, business value]

Mayflower GmbH I 14

Acceptance Criteria = Scenario Scenario 1 Step a Step b Scenario 2 Step a Step b

Mayflower GmbH I 15

Step definition Given [context] And [some more context] When [event] And [another event] Then [outcome] And [another outcome]

Mayflower GmbH I 16

Gherkin

Vorführender
Präsentationsnotizen
Gherkin = Gewuerzgurke DSL Intermediaer zwischen Plain Text und Code Like YAML or Python, Gherkin is a line-oriented language that uses indentation to define structure. Line endings terminate statements (e.g., steps) and either spaces or tabs may be used for indentation (but spaces are more portable). Finally, most lines in Gherkin start with a special keyword:

Mayflower GmbH I 17

Behat Konstantin Kudryashov Senior from-birth PHP Developer bei KnpLabs „everzet“

Vorführender
Präsentationsnotizen
Mehr BDD Frameworks Rspec, Cucumber Junit, Jbehave Nunit, Specflow Jasmine

Mayflower GmbH I 18

Behat Installation

http://behat.org/

Quick Intro, Cookbook, Manual

pear channel-discover pear.behat.org

pear install behat/behat

git clone http://github.com/Behat/Behat

Mayflower GmbH I 19

Mayflower GmbH I 20

Workflow – outside in

Quelle: The Rspec Book, David Chelimsky et al.

Mayflower GmbH I 21

Story

Mayflower GmbH I 22

Scenario

Mayflower GmbH I 23

Run behat

Mayflower GmbH I 24

Steps

Mayflower GmbH I 25

Run behat

Mayflower GmbH I 26

Complete steps

Mayflower GmbH I 27

Implement code and tests

Mayflower GmbH I 28

Outline pending

Mayflower GmbH I 29

Outline passed

Mayflower GmbH I 30

Outline passed

Mayflower GmbH I 31

Mehr Behat

Bootstrap

Mayflower GmbH I 32

Mehr Behat

Mayflower GmbH I 33

Hooks

Quelle: www.behat.org

Mayflower GmbH I 34

Noch mehr Behat

I Tags: behat -tag='@myTag'

I Name: behat -name='my scenario'

I Ausgabe als junit: behat -out='junit'

I Profile: behat -profile='myProfile'

I Feature: behat /features/myfeature.feature:30

Mayflower GmbH I 35

BDD in der Praxis: Jimdo GmbH

I BDD kann auch in laufenden Projekte integriert werden

I Voraussetzung ist eine Story-basierte Struktur

I BDD muss, wie auch z.B. Scrum, gelebt werden

I BDD schafft eine gute Voraussetzung für weitere Automatisierungen, z.B. Selenium

I BDD ermöglicht eine Abstraktion, die Teilaspekte besser sichtbar macht

I Probleme bereiten

· Legacy Code

· Mehrsprachigkeit (z.B. ein japanisches und ein deutsches Team)

Mayflower GmbH I 36

BDD Literatur

I The Rspec Book, David Chelimsky et al.

I Specification By Example, Gojko Adzic

I Growing Object-Oriented Software, Guided By Tests, Stefe Freemen, Nat Pryce

27.09.2011 Mayflower GmbH 37

Vielen Dank für Ihre Aufmerksamkeit!

Referent Micha Trieba

[email protected]

+49 89 242054 1168

Mayflower GmbH

Mannhardtstrasse6

80538 München