Skip to main content
BDD Testing with Cucumber

  Dev.Talk. Zürich. 19. Sept 2012
BDD



Business         Technology
• Domain
                 • Test driven
  driven
                   development
  design
Core Principles
1. Enough is enough do as much
   planning, analysis, and design as you
   need, but no more.
2. Deliver stakeholder value everything
   you do should deliver value or increase
   your ability to do so.
3. It’s a behavior everyone involved should
   have the same way of talking about the
   system and what it does.
describe the
behavior
of your software
in a very understandable
way
1 Describe
                 Behaviour



                               2 Write step
5 Run and pass
                                definition




     4 Write code to
                        3 Run and fail
     make step pass
Behavior
Feature: <short description>
 <story>        WHO? As a <role>
                WHAT? I want <feature>
 <scenario 1> WHY?         so that <business
 <scenario n> value>

             Scenario: <description>
                Given <preconditions, context>
                [And] <additional preconditions>
                When <action, behaviour>
                Then <postconditions>
                [And] <additional postconditions>
Step definition
• Regex based
• Reusable
• Cucumber gives you copy & paste code
Human Language support

# language: de
Funktionalität: Addition
  Um dumme Fehler zu vermeiden
  möchte ich als Matheidiot
  die Summe zweier Zahlen gesagt bekommen

 Szenariogrundriss: Zwei Zahlen hinzufügen
   Angenommen ich habe <Eingabe_1> in den Taschenrechner eingegeben
   Und ich habe <Eingabe_2> in den Taschenrechner eingegeben
   Wenn ich <Knopf> drücke
   Dann sollte das Ergebniss auf dem Bildschirm <Ausgabe> sein

 Beispiele:
   | Eingabe_1   |   Eingabe_2   |   Knopf   |   Ausgabe   |
   | 20          |   30          |   add     |   50        |
   | 2           |   5           |   add     |   7         |
   | 0           |   40          |   add     |   40        |
What about Java, .net, …?
Java: Cucumber-Jvm
• Pure Java
• Supports:
  Java, JavaScript, JRuby, Scala, Python, G
  roovy, Ioke

.NET: IronRuby
• Cucumber Wrapper for IronRuby
Testing possibilities…
•   Selenium browser testing
•   Webrat acceptance testing
•   Interface testing (example mozo poc)
•   Many many more – just take a look at the
    cucumber tutorials
More Information
https://github.com/cucumber/cucumber/wiki

http://behaviour-driven.org/