SlideShare a Scribd company logo
Speciļ¬cation By
   Example
   Declan Whelan
    @dwhelan
Whatā€™s the Problem?
Waterfall




Source: http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Waterfall



                              X
Source: http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Cost Of Change


 Cost%
  Of%
Change%




                 Time%
Agile Speciļ¬cation
                  Agile&Approach&
           Itera/on&1&          Itera/on&2&           Itera/on&3&          Itera/on&4&
           Requirements&        Requirements&         Requirements&        Requirements&

          Analysis&&&Design&   Analysis&&&Design&    Analysis&&&Design&   Analysis&&&Design&
 Cost%
  of%           Code&                Code&                 Code&                Code&
Change%
                Test&                Test&                 Test&                Test&

                                                                               Deploy&




                                             Time%
Traditional Flow
Traditional Flow



Speciļ¬cation
Traditional Flow

               Build


Speciļ¬cation
Traditional Flow

                 Build


Speciļ¬cation


               Tests Cases
Traditional Flow

                 Build


Speciļ¬cation                 Test

               Tests Cases
Traditional Flow

                 Build


Speciļ¬cation                 Test
                                    Deploy

               Tests Cases
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
We Found a Bug!
                                                How did QA miss this?



  That was obvious! I shouldn't                                             Developers don't test before
    have to spell out every                                                  they throw it over the wall!
            detail!


                                            Exec


                                                                          Tester
Product
Manager


                                                                                     We did what was in
                                                                                      functional spec!
                 Business requirements
                     weren't clear!

                                                  BA missed it in the
                                                technical requirements!
                                                                               Dev


            BA


                                         Architect
Accidental Adversaries
                               +
                                       Testing




                                                 +
                                                          New Bugs

                                                                                -      +
              -                                                             +
Testing           Additional                                                    Development
                                                         Software Fix
Success             Tests                                                         Success

          +                                                             -
+     -

                  New Build
                                   +



                                   Development

                                                     +
Functional Silos




Source: http://www.danpontefract.com/images/silo.jpg
Functional Silos



                    X
Source: http://www.danpontefract.com/images/silo.jpg
Build it Right




                                            Build the Right Thing




Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right




                                            Build the Right Thing



    Useless Crap
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure




                                            Build the Right Thing



    Useless Crap
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure




                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure                             Business Success




                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure                             Business Success


                                               Speciļ¬cation By
                                                  Example

                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
What are Speciļ¬cations
    By Example?
What are Speciļ¬cations
    By Example?
ā€¢ Thin slices of system behaviour
ā€¢ that deliver business value
ā€¢ described as concrete examples
ā€¢ that are potentially automatable
ā€¢ without translation
ā€¢ to create executable speciļ¬cations
ā€¢ captured in live documentation.
Agile Testing Quadrants
Speciļ¬cation By Example
Speciļ¬cation By Example
        Business Goal
Speciļ¬cation By Example
        Business Goal
                Derive the scope
           Scope
Speciļ¬cation By Example
        Business Goal
                Derive the scope
           Scope
                Specify collaboratively
        Key Examples
Speciļ¬cation By Example
           Business Goal
                   Derive the scope
               Scope
                   Specify collaboratively
           Key Examples
                   Reļ¬ne the speciļ¬cation
     Speciļ¬cation With Examples
Speciļ¬cation By Example
           Business Goal
                   Derive the scope
               Scope
                   Specify collaboratively
           Key Examples
                   Reļ¬ne the speciļ¬cation
     Speciļ¬cation With Examples
                   Automate literally
      Executable Speciļ¬cation
Speciļ¬cation By Example
           Business Goal
                   Derive the scope
               Scope
                   Specify collaboratively
           Key Examples
                   Reļ¬ne the speciļ¬cation
     Speciļ¬cation With Examples
                   Automate literally
      Executable Speciļ¬cation
                   Validate frequently
       Living Documentation
Speciļ¬cation By Example
                             Business Goal
                                     Derive the scope
                                 Scope




                                                               Shared Understanding
 Ubiquitous Language



                                     Specify collaboratively
                             Key Examples
                                     Reļ¬ne the speciļ¬cation
                       Speciļ¬cation With Examples
                                     Automate literally
                        Executable Speciļ¬cation
                                     Validate frequently
                         Living Documentation
Source: https://docs.google.com/drawings/d/1cbfKq-KazcbMVCnRļ¬h6zMSDBdtf90KviV7l2oxGyWM/edit
                                                                                              Speciļ¬cation By Example
                                                                                                                           Business Goal
                                                                                                                                   Derive the scope
                                                                                                                               Scope




                                                                                                                                                             Shared Understanding
                                                                                               Ubiquitous Language



                                                                                                                                   Specify collaboratively
                                                                                                                           Key Examples
                                                                                                                                   Reļ¬ne the speciļ¬cation
                                                                                                                     Speciļ¬cation With Examples
                                                                                                                                   Automate literally
                                                                                                                      Executable Speciļ¬cation
                                                                                                                                   Validate frequently
                                                                                                                       Living Documentation
Derive the Scope: Story Mapping




Source: http://availagility.co.uk/wp-content/uploads/2008/10/user-story-mapping.png
Derive the Scope: User Stories
Derive the Scope: User Stories

            As a _______
         I want to _______
          So that _______
Derive the Scope: User Stories

               As a _______
            I want to _______
             So that _______


                As a student
    I want to purchase used books online
          So that I can save money
Specify Collaboratively: Workshops
Specify Collaboratively: Workshops
Specify Collaboratively: Workshops


 ā€¢ Hold regular product backlog workshops
Specify Collaboratively: Workshops


 ā€¢ Hold regular product backlog workshops
 ā€¢ Full team workshops - when starting
Specify Collaboratively: Workshops


 ā€¢ Hold regular product backlog workshops
 ā€¢ Full team workshops - when starting
 ā€¢ Three amigo workshops:
  ā€¢ One developer
  ā€¢ One tester
  ā€¢ One analyst
Specify Collaboratively: Key Examples
Specify Collaboratively: Key Examples

             Given _______
             When _______
             Then _______
Specify Collaboratively: Key Examples

                     Given _______
                     When _______
                     Then _______


Given ā€œWar and Peaceā€ is available as a used book for $2.99
        When Susan selects bookā€œWar and Peaceā€
          Then ā€œBuy used for $2.99ā€ is displayed
Reļ¬ning the Speciļ¬cation
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic


ā€¢ Be precise and make sure spec is testable
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic


ā€¢ Be precise and make sure spec is testable
ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic


ā€¢ Be precise and make sure spec is testable
ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€
ā€¢ Focus on business functionality not design
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic


ā€¢ Be precise and make sure spec is testable
ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€
ā€¢ Focus on business functionality not design
ā€¢ Avoid UI details
Reļ¬ning the Speciļ¬cation
ā€œSpeciļ¬cations with examples are acceptance testsā€
                                     Gojko Adzic


ā€¢ Be precise and make sure spec is testable
ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€
ā€¢ Focus on business functionality not design
ā€¢ Avoid UI details
ā€¢ Avoid covering every possible combination
Reļ¬ning the Speciļ¬cation: An Example
   Free Delivery
   Free delivery is offered to VIP customers once they purchase a certain number of books.
   Free delivery is not offered to regular customers or VIP customers buying anything other than
   books.

      Customer Type                      Cart Contents                        Delivery
                VIP                            5 books                    Free, Standard
                VIP                            4 books                        Standard
             Regular                          10 books                        Standard
                VIP                        5 dishwashers                      Standard
                VIP                  5 books, 1 dishwasher                    Standard

Source: Speciļ¬cation by Example: How successful teams deliver the right software, Gojko Adzic, pg. 116
Automating Examples
Automating Examples

ā€¢ Start small
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
ā€¢ Plan up-front to automate
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
ā€¢ Plan up-front to automate
ā€¢ Be prepared to go slower at the start
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
ā€¢ Plan up-front to automate
ā€¢ Be prepared to go slower at the start
ā€¢ Treat automation code as a ļ¬rst class citizen
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
ā€¢ Plan up-front to automate
ā€¢ Be prepared to go slower at the start
ā€¢ Treat automation code as a ļ¬rst class citizen
ā€¢ Avoid record and playback
Automating Examples

ā€¢ Start small
ā€¢ Select important examples for automation
ā€¢ Plan up-front to automate
ā€¢ Be prepared to go slower at the start
ā€¢ Treat automation code as a ļ¬rst class citizen
ā€¢ Avoid record and playback
ā€¢ Avoid using pre-populated data
Minimize Tests Through the UI
Automation Tools

FitNesse    Cucumber    Concordian

Green
             JBehave      Twist
Pepper
              Robot
Text Test                SpecFlow
            Framework
Validate Frequently
Validate Frequently
ā€¢ Start with a Continuous Integration system
Validate Frequently
ā€¢ Start with a Continuous Integration system
ā€¢ Set up a Continuous Deployment system
Validate Frequently
ā€¢ Start with a Continuous Integration system
ā€¢ Set up a Continuous Deployment system
ā€¢ Specify and test business logic separately
  from end-to-end ļ¬‚ows
Validate Frequently
ā€¢ Start with a Continuous Integration system
ā€¢ Set up a Continuous Deployment system
ā€¢ Specify and test business logic separately
  from end-to-end ļ¬‚ows
ā€¢ Organize tests along functional lines
Validate Frequently
ā€¢ Start with a Continuous Integration system
ā€¢ Set up a Continuous Deployment system
ā€¢ Specify and test business logic separately
  from end-to-end ļ¬‚ows
ā€¢ Organize tests along functional lines
ā€¢ Run all test nightly
Validate Frequently
ā€¢ Start with a Continuous Integration system
ā€¢ Set up a Continuous Deployment system
ā€¢ Specify and test business logic separately
  from end-to-end ļ¬‚ows
ā€¢ Organize tests along functional lines
ā€¢ Run all test nightly
ā€¢ Consider an iteration ā€œtest packā€
Living Documentation
ā€¢ Keep speciļ¬cations short
ā€¢ Evolve a speciļ¬cation language and leverage
  in with ā€œcommon ļ¬xturesā€
ā€¢ Make documentation accessible - consider
  a wiki
ā€¢ Organize the documentation
ā€¢ Put speciļ¬cations under version control
A Worked Example
Executable Speciļ¬cation
Cucumber Organization
                  fixtures are common




   Features     Step



               System
Cucumber Organization
                  fixtures are common




         ad
        Lo


   Features     Step



               System
Cucumber Organization
                     fixtures are common




              M
         ad




              at
        Lo




                ch
   Features       Step



               System
Cucumber Organization
                            fixtures are common




              M
         ad




              at
        Lo




                ch
   Features       Step



                     Call
               System
Feature File
  Feature: Turn cucumber into beer
   As a cucumber presenter
   I want beer after my presentation
   So I can enjoy the rest of DemoCampGuelph

   Scenario: Brydon buys Declan beer
    Given Brydon hosts DemoCampGuelph
    When Declan demos Cucumber
    Then Brydon should buy Declan 1 beer

   Scenario: Ali buys Declan beer
    Given Ali hosts DemoCampGuelph
    When Declan demos Cucumber
    Then Ali should buy Declan 1 beer
Step Deļ¬nitions
Given /^(.+) hosts/ do |host|
 @event = Event.new(host)
end

When /^(.+) demos/ do |presenter|
 @event.add(presenter)
end

Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker,
qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
 perk.quantity.should == quantity.to_i; perk.item.should
== item
end
System Under Test
 class Event
  attr_reader :perks

  def initialize(host) @host = host; @perks = [] end

  def add(presenter)
   @perks.push Perk.new(@host, presenter, 1, "beer")
  end
 end

 class Perk
  attr_reader :buyer, :receiver, :quantity, :item

  def initialize(buyer, receiver, quantity, item)
   @buyer = buyer; @receiver = receiver
   @quantity = quantity; @item = item
  end
 end
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Given /^(.+) hosts/ do | When /^(.+) demos/ do |
host|                     presenter|
 @event =                   @event.add(presenter)
Event.new(host)           end
End
Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer,
drinker, qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Given /^(.+) hosts/ do |
host|
 @event =
Event.new(host)
End
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Given /^(.+) hosts/ do |
host|                      ā€œBrydonā€
 @event =
Event.new(host)
End
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Given /^(.+) hosts/ do | When /^(.+) demos/ do |
host|                     presenter|
 @event =                   @event.add(presenter)
Event.new(host)           end
End
Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer,
drinker, qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
                  When /^(.+) demos/ do |
                  presenter|
                   @event.add(presenter)
                  end
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
                   When /^(.+) demos/ do |
                   presenter|
                    @event.add(presenter)
                   end
        ā€œDeclanā€
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer
Given /^(.+) hosts/ do | When /^(.+) demos/ do |
host|                     presenter|
 @event =                   @event.add(presenter)
Event.new(host)           end
End
Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer,
drinker, qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer




Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer,
drinker, qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
Execution
Scenario: Brydon buys Declan beer
 Given Brydon hosts DemoCampGuelph
 When Declan demos Cucumber
 Then Brydon should buy Declan 1 beer




Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer,
drinker, qty, item|
 perk = @event.perks[0];
 perk.buyer.should == buyer; perk.receiver.should ==
drinker
Source: https://docs.google.com/drawings/d/1cbfKq-KazcbMVCnRļ¬h6zMSDBdtf90KviV7l2oxGyWM/edit
                                                                                              Speciļ¬cation By Example
                                                                                                                           Business Goal
                                                                                                                                   Derive the scope
                                                                                                                               Scope




                                                                                                                                                             Shared Understanding
                                                                                               Ubiquitous Language



                                                                                                                                   Specify collaboratively
                                                                                                                           Key Examples
                                                                                                                                   Reļ¬ne the speciļ¬cation
                                                                                                                     Speciļ¬cation With Examples
                                                                                                                                   Automate literally
                                                                                                                      Executable Speciļ¬cation
                                                                                                                                   Validate frequently
                                                                                                                       Living Documentation
Build it Right




                                            Build the Right Thing




Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right




                                            Build the Right Thing



    Useless Crap
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure




                                            Build the Right Thing



    Useless Crap
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure




                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure                             Business Success




                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Build it Right
  Business Failure                             Business Success


                                               Speciļ¬cation By
                                                  Example

                                            Build the Right Thing



    Useless Crap                      Maintenance Nightmare
Speciļ¬cation By Example
Gojko Adzic, 2011 page 4
Reading
Speciļ¬cation By Example
Gojko Adzic

The RSpec Book: Behaviour Driven Development with
RSpec, Cucumber and Friends
David Cheliminksy et al

Agile Testing: A Practical Guide for Testers and Agile Teams
Lisa Crispin, Janet Gregory
Diagram Credits

   Lisa Crispin and Janet Gregory
   Agile Testing: A Practical Guide for Testers
   and Agile Teams
   Addison-Wesley Professional; January 9, 2009.




   Mike Cohn
   Succeeding with Agile: Software Development
   Using Scrum
   Addison-Wesley Professional; November 5, 2009.

More Related Content

What's hot

10 Essential SAFe(tm) patterns you should focus on when scaling Agile
10 Essential SAFe(tm) patterns you should focus on when scaling Agile10 Essential SAFe(tm) patterns you should focus on when scaling Agile
10 Essential SAFe(tm) patterns you should focus on when scaling Agile
Yuval Yeret
Ā 
Story Points Estimation And Planning Poker
Story Points Estimation And Planning PokerStory Points Estimation And Planning Poker
Story Points Estimation And Planning Poker
Daniel Toader
Ā 
Estimating with story points
Estimating with story pointsEstimating with story points
Estimating with story pointsWalid Farag
Ā 
Agile Mindset For Executives
Agile Mindset For ExecutivesAgile Mindset For Executives
Agile Mindset For Executives
Michael Tarnowski
Ā 
How to do effective pi planning
How to do effective pi planningHow to do effective pi planning
How to do effective pi planning
SwatiKapoor43
Ā 
Agile Transformation at Scale
Agile Transformation at ScaleAgile Transformation at Scale
Agile Transformation at Scale
ITSM Academy, Inc.
Ā 
Specification by example
Specification by exampleSpecification by example
Specification by example
Asier Barrenetxea
Ā 
Agile evolution lifecycle - From implementing Agile to being Agile
Agile evolution lifecycle - From implementing Agile to being AgileAgile evolution lifecycle - From implementing Agile to being Agile
Agile evolution lifecycle - From implementing Agile to being Agile
Michal Epstein
Ā 
Agile Performance Metrics
Agile Performance MetricsAgile Performance Metrics
Agile Performance Metrics
ACM
Ā 
Scrum Learning Game: Elephant Carpaccio
Scrum Learning Game: Elephant CarpaccioScrum Learning Game: Elephant Carpaccio
Scrum Learning Game: Elephant Carpaccio
Andy Cleff
Ā 
Business Agility
Business AgilityBusiness Agility
Business Agility
Jude Horrill
Ā 
Are You Being Agile or Doing Agile?
Are You Being Agile or Doing Agile?Are You Being Agile or Doing Agile?
Are You Being Agile or Doing Agile?
Brad Appleton
Ā 
Flow Metrics: What They Are & Why You Need Them
Flow Metrics: What They Are & Why You Need ThemFlow Metrics: What They Are & Why You Need Them
Flow Metrics: What They Are & Why You Need Them
Tasktop
Ā 
Lean and Kanban-based Software Development
Lean and Kanban-based Software DevelopmentLean and Kanban-based Software Development
Lean and Kanban-based Software Development
Tathagat Varma
Ā 
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³nGestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
Johnny OrdĆ³Ć±ez
Ā 
Top 10 Agile Metrics
Top 10 Agile MetricsTop 10 Agile Metrics
Top 10 Agile Metrics
XBOSoft
Ā 
Team Topologies - how and why to design your teams - AllDayDevOps 2017
Team Topologies - how and why to design your teams - AllDayDevOps 2017Team Topologies - how and why to design your teams - AllDayDevOps 2017
Team Topologies - how and why to design your teams - AllDayDevOps 2017
Matthew Skelton
Ā 
The 5 Levels Planning in Agile
The 5 Levels Planning in AgileThe 5 Levels Planning in Agile
The 5 Levels Planning in Agile
Dimitri Ponomareff
Ā 
Jira Agile
Jira AgileJira Agile
Jira Agile
Peter Perger
Ā 
Practical Guide to Scrum
Practical Guide to ScrumPractical Guide to Scrum
Practical Guide to Scrum
Pavel Dabrytski
Ā 

What's hot (20)

10 Essential SAFe(tm) patterns you should focus on when scaling Agile
10 Essential SAFe(tm) patterns you should focus on when scaling Agile10 Essential SAFe(tm) patterns you should focus on when scaling Agile
10 Essential SAFe(tm) patterns you should focus on when scaling Agile
Ā 
Story Points Estimation And Planning Poker
Story Points Estimation And Planning PokerStory Points Estimation And Planning Poker
Story Points Estimation And Planning Poker
Ā 
Estimating with story points
Estimating with story pointsEstimating with story points
Estimating with story points
Ā 
Agile Mindset For Executives
Agile Mindset For ExecutivesAgile Mindset For Executives
Agile Mindset For Executives
Ā 
How to do effective pi planning
How to do effective pi planningHow to do effective pi planning
How to do effective pi planning
Ā 
Agile Transformation at Scale
Agile Transformation at ScaleAgile Transformation at Scale
Agile Transformation at Scale
Ā 
Specification by example
Specification by exampleSpecification by example
Specification by example
Ā 
Agile evolution lifecycle - From implementing Agile to being Agile
Agile evolution lifecycle - From implementing Agile to being AgileAgile evolution lifecycle - From implementing Agile to being Agile
Agile evolution lifecycle - From implementing Agile to being Agile
Ā 
Agile Performance Metrics
Agile Performance MetricsAgile Performance Metrics
Agile Performance Metrics
Ā 
Scrum Learning Game: Elephant Carpaccio
Scrum Learning Game: Elephant CarpaccioScrum Learning Game: Elephant Carpaccio
Scrum Learning Game: Elephant Carpaccio
Ā 
Business Agility
Business AgilityBusiness Agility
Business Agility
Ā 
Are You Being Agile or Doing Agile?
Are You Being Agile or Doing Agile?Are You Being Agile or Doing Agile?
Are You Being Agile or Doing Agile?
Ā 
Flow Metrics: What They Are & Why You Need Them
Flow Metrics: What They Are & Why You Need ThemFlow Metrics: What They Are & Why You Need Them
Flow Metrics: What They Are & Why You Need Them
Ā 
Lean and Kanban-based Software Development
Lean and Kanban-based Software DevelopmentLean and Kanban-based Software Development
Lean and Kanban-based Software Development
Ā 
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³nGestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
GestiĆ³n Lean de Portafolios de Empresariales - GuĆ­a de ImplementaciĆ³n
Ā 
Top 10 Agile Metrics
Top 10 Agile MetricsTop 10 Agile Metrics
Top 10 Agile Metrics
Ā 
Team Topologies - how and why to design your teams - AllDayDevOps 2017
Team Topologies - how and why to design your teams - AllDayDevOps 2017Team Topologies - how and why to design your teams - AllDayDevOps 2017
Team Topologies - how and why to design your teams - AllDayDevOps 2017
Ā 
The 5 Levels Planning in Agile
The 5 Levels Planning in AgileThe 5 Levels Planning in Agile
The 5 Levels Planning in Agile
Ā 
Jira Agile
Jira AgileJira Agile
Jira Agile
Ā 
Practical Guide to Scrum
Practical Guide to ScrumPractical Guide to Scrum
Practical Guide to Scrum
Ā 

Viewers also liked

Reinventing Software Quality, Agile Days Moscow 2013
Reinventing Software Quality, Agile Days Moscow 2013Reinventing Software Quality, Agile Days Moscow 2013
Reinventing Software Quality, Agile Days Moscow 2013gojkoadzic
Ā 
Time to Bet on the Cloud?
Time to Bet on the Cloud?Time to Bet on the Cloud?
Time to Bet on the Cloud?
gojkoadzic
Ā 
5 key challenges
5 key challenges5 key challenges
5 key challenges
gojkoadzic
Ā 
Serverless Code Camp Barcelona
Serverless Code Camp BarcelonaServerless Code Camp Barcelona
Serverless Code Camp Barcelona
gojkoadzic
Ā 
Death to the testing phase
Death to the testing phaseDeath to the testing phase
Death to the testing phase
gojkoadzic
Ā 
Effective specifications for agile teams
Effective specifications for agile teamsEffective specifications for agile teams
Effective specifications for agile teams
gojkoadzic
Ā 
Challenging Requirements/Oredev
Challenging Requirements/OredevChallenging Requirements/Oredev
Challenging Requirements/Oredev
gojkoadzic
Ā 
Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015 Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015
gojkoadzic
Ā 
How I learned to stop worrying and love flexible scope - at JFokus 2014
How I learned to stop worrying and love flexible scope - at JFokus 2014How I learned to stop worrying and love flexible scope - at JFokus 2014
How I learned to stop worrying and love flexible scope - at JFokus 2014gojkoadzic
Ā 
Serverless JavaScript
Serverless JavaScriptServerless JavaScript
Serverless JavaScript
gojkoadzic
Ā 
From Grid to Cloud
From Grid to CloudFrom Grid to Cloud
From Grid to Cloud
gojkoadzic
Ā 
Sabotage product
Sabotage productSabotage product
Sabotage product
gojkoadzic
Ā 
Agile Testers: Becoming a key asset for your team
Agile Testers: Becoming a key asset for your teamAgile Testers: Becoming a key asset for your team
Agile Testers: Becoming a key asset for your team
gojkoadzic
Ā 

Viewers also liked (13)

Reinventing Software Quality, Agile Days Moscow 2013
Reinventing Software Quality, Agile Days Moscow 2013Reinventing Software Quality, Agile Days Moscow 2013
Reinventing Software Quality, Agile Days Moscow 2013
Ā 
Time to Bet on the Cloud?
Time to Bet on the Cloud?Time to Bet on the Cloud?
Time to Bet on the Cloud?
Ā 
5 key challenges
5 key challenges5 key challenges
5 key challenges
Ā 
Serverless Code Camp Barcelona
Serverless Code Camp BarcelonaServerless Code Camp Barcelona
Serverless Code Camp Barcelona
Ā 
Death to the testing phase
Death to the testing phaseDeath to the testing phase
Death to the testing phase
Ā 
Effective specifications for agile teams
Effective specifications for agile teamsEffective specifications for agile teams
Effective specifications for agile teams
Ā 
Challenging Requirements/Oredev
Challenging Requirements/OredevChallenging Requirements/Oredev
Challenging Requirements/Oredev
Ā 
Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015 Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015
Ā 
How I learned to stop worrying and love flexible scope - at JFokus 2014
How I learned to stop worrying and love flexible scope - at JFokus 2014How I learned to stop worrying and love flexible scope - at JFokus 2014
How I learned to stop worrying and love flexible scope - at JFokus 2014
Ā 
Serverless JavaScript
Serverless JavaScriptServerless JavaScript
Serverless JavaScript
Ā 
From Grid to Cloud
From Grid to CloudFrom Grid to Cloud
From Grid to Cloud
Ā 
Sabotage product
Sabotage productSabotage product
Sabotage product
Ā 
Agile Testers: Becoming a key asset for your team
Agile Testers: Becoming a key asset for your teamAgile Testers: Becoming a key asset for your team
Agile Testers: Becoming a key asset for your team
Ā 

Similar to Specification by Example

Introduction to design specifications to Summer of Code NZ students
Introduction to design specifications to Summer of Code NZ studentsIntroduction to design specifications to Summer of Code NZ students
Introduction to design specifications to Summer of Code NZ students
Lulu Pachuau
Ā 
Java Optimization For Faster Code & Better Results | J Optimizer
Java Optimization For Faster Code & Better Results | J OptimizerJava Optimization For Faster Code & Better Results | J Optimizer
Java Optimization For Faster Code & Better Results | J Optimizer
Michael Findling
Ā 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
Ajay Danait
Ā 
Requirements & scope
Requirements & scopeRequirements & scope
Requirements & scope
Craig Brown
Ā 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
Will Iverson
Ā 
Manual testing1
Manual testing1Manual testing1
Manual testing1
Raghu Sirka
Ā 
An Introduction to Software Performance Engineering
An Introduction to Software Performance EngineeringAn Introduction to Software Performance Engineering
An Introduction to Software Performance Engineering
Correlsense
Ā 
A journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanA journey to_be_a_software_craftsman
A journey to_be_a_software_craftsman
Jaehoon Oh
Ā 
Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Designeduardomg23
Ā 
QM Keynote - Kamala P
QM Keynote - Kamala PQM Keynote - Kamala P
QM Keynote - Kamala PRoopa Nadkarni
Ā 
1 qm keynote-kamala_p
1 qm keynote-kamala_p1 qm keynote-kamala_p
1 qm keynote-kamala_pIBM
Ā 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
gueste730d5
Ā 
Session #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft ApproachSession #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft Approach
Steve Lange
Ā 
Envisioning improving productivity and qaulity through better backlogs agi...
Envisioning   improving productivity and qaulity through better backlogs  agi...Envisioning   improving productivity and qaulity through better backlogs  agi...
Envisioning improving productivity and qaulity through better backlogs agi...Tatlock
Ā 
P&msp2010 09 integration-&-testing
P&msp2010 09 integration-&-testingP&msp2010 09 integration-&-testing
P&msp2010 09 integration-&-testingEmanuele Della Valle
Ā 
How to Performing DevBox.pptx
How to Performing DevBox.pptxHow to Performing DevBox.pptx
How to Performing DevBox.pptx
TommyDianPratama
Ā 
Are good SharePoint solutions only a myth?
Are good SharePoint solutions only a myth?Are good SharePoint solutions only a myth?
Are good SharePoint solutions only a myth?
Adis Jugo
Ā 
Ravit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileRavit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileAgileSparks
Ā 
Seeing what matters using the right vision to manage transition - Alan Shalloway
Seeing what matters using the right vision to manage transition - Alan ShallowaySeeing what matters using the right vision to manage transition - Alan Shalloway
Seeing what matters using the right vision to manage transition - Alan ShallowayAGILEMinds
Ā 
DevOps - Its just Agile done right
DevOps - Its just Agile done rightDevOps - Its just Agile done right
DevOps - Its just Agile done right
Tomas Riha
Ā 

Similar to Specification by Example (20)

Introduction to design specifications to Summer of Code NZ students
Introduction to design specifications to Summer of Code NZ studentsIntroduction to design specifications to Summer of Code NZ students
Introduction to design specifications to Summer of Code NZ students
Ā 
Java Optimization For Faster Code & Better Results | J Optimizer
Java Optimization For Faster Code & Better Results | J OptimizerJava Optimization For Faster Code & Better Results | J Optimizer
Java Optimization For Faster Code & Better Results | J Optimizer
Ā 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
Ā 
Requirements & scope
Requirements & scopeRequirements & scope
Requirements & scope
Ā 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
Ā 
Manual testing1
Manual testing1Manual testing1
Manual testing1
Ā 
An Introduction to Software Performance Engineering
An Introduction to Software Performance EngineeringAn Introduction to Software Performance Engineering
An Introduction to Software Performance Engineering
Ā 
A journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanA journey to_be_a_software_craftsman
A journey to_be_a_software_craftsman
Ā 
Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Design
Ā 
QM Keynote - Kamala P
QM Keynote - Kamala PQM Keynote - Kamala P
QM Keynote - Kamala P
Ā 
1 qm keynote-kamala_p
1 qm keynote-kamala_p1 qm keynote-kamala_p
1 qm keynote-kamala_p
Ā 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
Ā 
Session #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft ApproachSession #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft Approach
Ā 
Envisioning improving productivity and qaulity through better backlogs agi...
Envisioning   improving productivity and qaulity through better backlogs  agi...Envisioning   improving productivity and qaulity through better backlogs  agi...
Envisioning improving productivity and qaulity through better backlogs agi...
Ā 
P&msp2010 09 integration-&-testing
P&msp2010 09 integration-&-testingP&msp2010 09 integration-&-testing
P&msp2010 09 integration-&-testing
Ā 
How to Performing DevBox.pptx
How to Performing DevBox.pptxHow to Performing DevBox.pptx
How to Performing DevBox.pptx
Ā 
Are good SharePoint solutions only a myth?
Are good SharePoint solutions only a myth?Are good SharePoint solutions only a myth?
Are good SharePoint solutions only a myth?
Ā 
Ravit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileRavit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in Agile
Ā 
Seeing what matters using the right vision to manage transition - Alan Shalloway
Seeing what matters using the right vision to manage transition - Alan ShallowaySeeing what matters using the right vision to manage transition - Alan Shalloway
Seeing what matters using the right vision to manage transition - Alan Shalloway
Ā 
DevOps - Its just Agile done right
DevOps - Its just Agile done rightDevOps - Its just Agile done right
DevOps - Its just Agile done right
Ā 

More from Declan Whelan

Technical debt is a systemic problem - not a personal failing
Technical debt is a systemic problem - not a personal failingTechnical debt is a systemic problem - not a personal failing
Technical debt is a systemic problem - not a personal failing
Declan Whelan
Ā 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
Declan Whelan
Ā 
effective agile adoption
effective agile adoptioneffective agile adoption
effective agile adoption
Declan Whelan
Ā 
Big Balls of Mud
Big Balls of MudBig Balls of Mud
Big Balls of Mud
Declan Whelan
Ā 
Navigating Organizational Change
Navigating Organizational ChangeNavigating Organizational Change
Navigating Organizational Change
Declan Whelan
Ā 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
Declan Whelan
Ā 
Win Win Conversations
Win Win ConversationsWin Win Conversations
Win Win Conversations
Declan Whelan
Ā 
Agile 2012 Simple Design Applied
Agile 2012 Simple Design AppliedAgile 2012 Simple Design Applied
Agile 2012 Simple Design Applied
Declan Whelan
Ā 
Releasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversationsReleasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversations
Declan Whelan
Ā 
Solid principles
Solid principlesSolid principles
Solid principles
Declan Whelan
Ā 
Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010
Declan Whelan
Ā 
Agile learning agile 2010
Agile learning agile 2010Agile learning agile 2010
Agile learning agile 2010
Declan Whelan
Ā 
Agile Learning (60 minute version)
Agile Learning (60 minute version)Agile Learning (60 minute version)
Agile Learning (60 minute version)
Declan Whelan
Ā 
Cuke2Beer
Cuke2BeerCuke2Beer
Cuke2Beer
Declan Whelan
Ā 
Agile Learning from Agile 2009
Agile Learning from Agile 2009Agile Learning from Agile 2009
Agile Learning from Agile 2009
Declan Whelan
Ā 
Agile, Tdd And .Net
Agile, Tdd And .NetAgile, Tdd And .Net
Agile, Tdd And .Net
Declan Whelan
Ā 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
Declan Whelan
Ā 

More from Declan Whelan (18)

Technical debt is a systemic problem - not a personal failing
Technical debt is a systemic problem - not a personal failingTechnical debt is a systemic problem - not a personal failing
Technical debt is a systemic problem - not a personal failing
Ā 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
Ā 
effective agile adoption
effective agile adoptioneffective agile adoption
effective agile adoption
Ā 
Big Balls of Mud
Big Balls of MudBig Balls of Mud
Big Balls of Mud
Ā 
Navigating Organizational Change
Navigating Organizational ChangeNavigating Organizational Change
Navigating Organizational Change
Ā 
Simple Design
Simple DesignSimple Design
Simple Design
Ā 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
Ā 
Win Win Conversations
Win Win ConversationsWin Win Conversations
Win Win Conversations
Ā 
Agile 2012 Simple Design Applied
Agile 2012 Simple Design AppliedAgile 2012 Simple Design Applied
Agile 2012 Simple Design Applied
Ā 
Releasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversationsReleasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversations
Ā 
Solid principles
Solid principlesSolid principles
Solid principles
Ā 
Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010
Ā 
Agile learning agile 2010
Agile learning agile 2010Agile learning agile 2010
Agile learning agile 2010
Ā 
Agile Learning (60 minute version)
Agile Learning (60 minute version)Agile Learning (60 minute version)
Agile Learning (60 minute version)
Ā 
Cuke2Beer
Cuke2BeerCuke2Beer
Cuke2Beer
Ā 
Agile Learning from Agile 2009
Agile Learning from Agile 2009Agile Learning from Agile 2009
Agile Learning from Agile 2009
Ā 
Agile, Tdd And .Net
Agile, Tdd And .NetAgile, Tdd And .Net
Agile, Tdd And .Net
Ā 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
Ā 

Recently uploaded

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
Ā 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
Ā 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
Ā 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
Ā 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
Ā 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
Ā 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
Ā 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
Ā 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
Ā 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
Ā 
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
UiPathCommunity
Ā 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
Ā 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
Ā 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
Ā 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
Ā 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
Ā 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
Ā 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
Ā 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
Ā 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
Ā 

Recently uploaded (20)

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Ā 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
Ā 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Ā 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Ā 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
Ā 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Ā 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Ā 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
Ā 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Ā 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ā 
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder ā€“ active learning and UiPath LLMs for do...
Ā 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Ā 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Ā 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
Ā 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
Ā 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
Ā 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
Ā 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Ā 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Ā 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Ā 

Specification by Example

  • 1. Speciļ¬cation By Example Declan Whelan @dwhelan
  • 4. Waterfall X Source: http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  • 5. Cost Of Change Cost% Of% Change% Time%
  • 6. Agile Speciļ¬cation Agile&Approach& Itera/on&1& Itera/on&2& Itera/on&3& Itera/on&4& Requirements& Requirements& Requirements& Requirements& Analysis&&&Design& Analysis&&&Design& Analysis&&&Design& Analysis&&&Design& Cost% of% Code& Code& Code& Code& Change% Test& Test& Test& Test& Deploy& Time%
  • 9. Traditional Flow Build Speciļ¬cation
  • 10. Traditional Flow Build Speciļ¬cation Tests Cases
  • 11. Traditional Flow Build Speciļ¬cation Test Tests Cases
  • 12. Traditional Flow Build Speciļ¬cation Test Deploy Tests Cases
  • 13. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 14. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 15. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 16. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 17. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 18. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 19. We Found a Bug! How did QA miss this? That was obvious! I shouldn't Developers don't test before have to spell out every they throw it over the wall! detail! Exec Tester Product Manager We did what was in functional spec! Business requirements weren't clear! BA missed it in the technical requirements! Dev BA Architect
  • 20. Accidental Adversaries + Testing + New Bugs - + - + Testing Additional Development Software Fix Success Tests Success + - + - New Build + Development +
  • 22. Functional Silos X Source: http://www.danpontefract.com/images/silo.jpg
  • 23. Build it Right Build the Right Thing Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 24. Build it Right Build the Right Thing Useless Crap Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 25. Build it Right Business Failure Build the Right Thing Useless Crap Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 26. Build it Right Business Failure Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 27. Build it Right Business Failure Business Success Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 28. Build it Right Business Failure Business Success Speciļ¬cation By Example Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 30. What are Speciļ¬cations By Example? ā€¢ Thin slices of system behaviour ā€¢ that deliver business value ā€¢ described as concrete examples ā€¢ that are potentially automatable ā€¢ without translation ā€¢ to create executable speciļ¬cations ā€¢ captured in live documentation.
  • 34. Speciļ¬cation By Example Business Goal Derive the scope Scope
  • 35. Speciļ¬cation By Example Business Goal Derive the scope Scope Specify collaboratively Key Examples
  • 36. Speciļ¬cation By Example Business Goal Derive the scope Scope Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples
  • 37. Speciļ¬cation By Example Business Goal Derive the scope Scope Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples Automate literally Executable Speciļ¬cation
  • 38. Speciļ¬cation By Example Business Goal Derive the scope Scope Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples Automate literally Executable Speciļ¬cation Validate frequently Living Documentation
  • 39. Speciļ¬cation By Example Business Goal Derive the scope Scope Shared Understanding Ubiquitous Language Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples Automate literally Executable Speciļ¬cation Validate frequently Living Documentation
  • 40. Source: https://docs.google.com/drawings/d/1cbfKq-KazcbMVCnRļ¬h6zMSDBdtf90KviV7l2oxGyWM/edit Speciļ¬cation By Example Business Goal Derive the scope Scope Shared Understanding Ubiquitous Language Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples Automate literally Executable Speciļ¬cation Validate frequently Living Documentation
  • 41. Derive the Scope: Story Mapping Source: http://availagility.co.uk/wp-content/uploads/2008/10/user-story-mapping.png
  • 42. Derive the Scope: User Stories
  • 43. Derive the Scope: User Stories As a _______ I want to _______ So that _______
  • 44. Derive the Scope: User Stories As a _______ I want to _______ So that _______ As a student I want to purchase used books online So that I can save money
  • 47. Specify Collaboratively: Workshops ā€¢ Hold regular product backlog workshops
  • 48. Specify Collaboratively: Workshops ā€¢ Hold regular product backlog workshops ā€¢ Full team workshops - when starting
  • 49. Specify Collaboratively: Workshops ā€¢ Hold regular product backlog workshops ā€¢ Full team workshops - when starting ā€¢ Three amigo workshops: ā€¢ One developer ā€¢ One tester ā€¢ One analyst
  • 51. Specify Collaboratively: Key Examples Given _______ When _______ Then _______
  • 52. Specify Collaboratively: Key Examples Given _______ When _______ Then _______ Given ā€œWar and Peaceā€ is available as a used book for $2.99 When Susan selects bookā€œWar and Peaceā€ Then ā€œBuy used for $2.99ā€ is displayed
  • 54. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic
  • 55. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic ā€¢ Be precise and make sure spec is testable
  • 56. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic ā€¢ Be precise and make sure spec is testable ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€
  • 57. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic ā€¢ Be precise and make sure spec is testable ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€ ā€¢ Focus on business functionality not design
  • 58. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic ā€¢ Be precise and make sure spec is testable ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€ ā€¢ Focus on business functionality not design ā€¢ Avoid UI details
  • 59. Reļ¬ning the Speciļ¬cation ā€œSpeciļ¬cations with examples are acceptance testsā€ Gojko Adzic ā€¢ Be precise and make sure spec is testable ā€¢ Avoid ā€œscriptsā€ and ā€œļ¬‚owsā€ ā€¢ Focus on business functionality not design ā€¢ Avoid UI details ā€¢ Avoid covering every possible combination
  • 60. Reļ¬ning the Speciļ¬cation: An Example Free Delivery Free delivery is offered to VIP customers once they purchase a certain number of books. Free delivery is not offered to regular customers or VIP customers buying anything other than books. Customer Type Cart Contents Delivery VIP 5 books Free, Standard VIP 4 books Standard Regular 10 books Standard VIP 5 dishwashers Standard VIP 5 books, 1 dishwasher Standard Source: Speciļ¬cation by Example: How successful teams deliver the right software, Gojko Adzic, pg. 116
  • 63. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation
  • 64. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation ā€¢ Plan up-front to automate
  • 65. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation ā€¢ Plan up-front to automate ā€¢ Be prepared to go slower at the start
  • 66. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation ā€¢ Plan up-front to automate ā€¢ Be prepared to go slower at the start ā€¢ Treat automation code as a ļ¬rst class citizen
  • 67. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation ā€¢ Plan up-front to automate ā€¢ Be prepared to go slower at the start ā€¢ Treat automation code as a ļ¬rst class citizen ā€¢ Avoid record and playback
  • 68. Automating Examples ā€¢ Start small ā€¢ Select important examples for automation ā€¢ Plan up-front to automate ā€¢ Be prepared to go slower at the start ā€¢ Treat automation code as a ļ¬rst class citizen ā€¢ Avoid record and playback ā€¢ Avoid using pre-populated data
  • 70. Automation Tools FitNesse Cucumber Concordian Green JBehave Twist Pepper Robot Text Test SpecFlow Framework
  • 72. Validate Frequently ā€¢ Start with a Continuous Integration system
  • 73. Validate Frequently ā€¢ Start with a Continuous Integration system ā€¢ Set up a Continuous Deployment system
  • 74. Validate Frequently ā€¢ Start with a Continuous Integration system ā€¢ Set up a Continuous Deployment system ā€¢ Specify and test business logic separately from end-to-end ļ¬‚ows
  • 75. Validate Frequently ā€¢ Start with a Continuous Integration system ā€¢ Set up a Continuous Deployment system ā€¢ Specify and test business logic separately from end-to-end ļ¬‚ows ā€¢ Organize tests along functional lines
  • 76. Validate Frequently ā€¢ Start with a Continuous Integration system ā€¢ Set up a Continuous Deployment system ā€¢ Specify and test business logic separately from end-to-end ļ¬‚ows ā€¢ Organize tests along functional lines ā€¢ Run all test nightly
  • 77. Validate Frequently ā€¢ Start with a Continuous Integration system ā€¢ Set up a Continuous Deployment system ā€¢ Specify and test business logic separately from end-to-end ļ¬‚ows ā€¢ Organize tests along functional lines ā€¢ Run all test nightly ā€¢ Consider an iteration ā€œtest packā€
  • 78. Living Documentation ā€¢ Keep speciļ¬cations short ā€¢ Evolve a speciļ¬cation language and leverage in with ā€œcommon ļ¬xturesā€ ā€¢ Make documentation accessible - consider a wiki ā€¢ Organize the documentation ā€¢ Put speciļ¬cations under version control
  • 81. Cucumber Organization fixtures are common Features Step System
  • 82. Cucumber Organization fixtures are common ad Lo Features Step System
  • 83. Cucumber Organization fixtures are common M ad at Lo ch Features Step System
  • 84. Cucumber Organization fixtures are common M ad at Lo ch Features Step Call System
  • 85. Feature File Feature: Turn cucumber into beer As a cucumber presenter I want beer after my presentation So I can enjoy the rest of DemoCampGuelph Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Scenario: Ali buys Declan beer Given Ali hosts DemoCampGuelph When Declan demos Cucumber Then Ali should buy Declan 1 beer
  • 86. Step Deļ¬nitions Given /^(.+) hosts/ do |host| @event = Event.new(host) end When /^(.+) demos/ do |presenter| @event.add(presenter) end Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker perk.quantity.should == quantity.to_i; perk.item.should == item end
  • 87. System Under Test class Event attr_reader :perks def initialize(host) @host = host; @perks = [] end def add(presenter) @perks.push Perk.new(@host, presenter, 1, "beer") end end class Perk attr_reader :buyer, :receiver, :quantity, :item def initialize(buyer, receiver, quantity, item) @buyer = buyer; @receiver = receiver @quantity = quantity; @item = item end end
  • 88. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer
  • 89. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Given /^(.+) hosts/ do | When /^(.+) demos/ do | host| presenter| @event = @event.add(presenter) Event.new(host) end End Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker
  • 90. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Given /^(.+) hosts/ do | host| @event = Event.new(host) End
  • 91. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Given /^(.+) hosts/ do | host| ā€œBrydonā€ @event = Event.new(host) End
  • 92. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer
  • 93. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Given /^(.+) hosts/ do | When /^(.+) demos/ do | host| presenter| @event = @event.add(presenter) Event.new(host) end End Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker
  • 94. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer When /^(.+) demos/ do | presenter| @event.add(presenter) end
  • 95. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer When /^(.+) demos/ do | presenter| @event.add(presenter) end ā€œDeclanā€
  • 96. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer
  • 97. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Given /^(.+) hosts/ do | When /^(.+) demos/ do | host| presenter| @event = @event.add(presenter) Event.new(host) end End Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker
  • 98. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker
  • 99. Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer Then /^(.+) should buy (.+) (d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker
  • 100. Source: https://docs.google.com/drawings/d/1cbfKq-KazcbMVCnRļ¬h6zMSDBdtf90KviV7l2oxGyWM/edit Speciļ¬cation By Example Business Goal Derive the scope Scope Shared Understanding Ubiquitous Language Specify collaboratively Key Examples Reļ¬ne the speciļ¬cation Speciļ¬cation With Examples Automate literally Executable Speciļ¬cation Validate frequently Living Documentation
  • 101. Build it Right Build the Right Thing Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 102. Build it Right Build the Right Thing Useless Crap Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 103. Build it Right Business Failure Build the Right Thing Useless Crap Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 104. Build it Right Business Failure Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 105. Build it Right Business Failure Business Success Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 106. Build it Right Business Failure Business Success Speciļ¬cation By Example Build the Right Thing Useless Crap Maintenance Nightmare Speciļ¬cation By Example Gojko Adzic, 2011 page 4
  • 107. Reading Speciļ¬cation By Example Gojko Adzic The RSpec Book: Behaviour Driven Development with RSpec, Cucumber and Friends David Cheliminksy et al Agile Testing: A Practical Guide for Testers and Agile Teams Lisa Crispin, Janet Gregory
  • 108. Diagram Credits Lisa Crispin and Janet Gregory Agile Testing: A Practical Guide for Testers and Agile Teams Addison-Wesley Professional; January 9, 2009. Mike Cohn Succeeding with Agile: Software Development Using Scrum Addison-Wesley Professional; November 5, 2009.

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n