Your SlideShare is downloading. ×
0
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Behaviour-Driven Development
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Behaviour-Driven Development

3,247

Published on

Slides from a talk to Web21C SDK team.

Slides from a talk to Web21C SDK team.

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,247
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
172
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Short presentation on how BDD evolved, then demo using RSpec.
  • Transcript

    • 1. Behaviour-Driven Development
      • Kerry Buckley
    • 2. Evolution
    • 3. Dirty Hacking
    • 4. Automated Testing
    • 5. Automated Testing class Adder def add a, b a + b end end class AdderTest < Test::Unit::TestCase def test_adder adder = Adder . new assert_equal 4 , adder.add( 2 , 2 ) assert_equal 2 , adder.add( 4 , - 2 ) end end
    • 6. Are You Really Testing Your Code? class Adder def add a, b a + b end end class AdderTest < Test::Unit::TestCase def test_adder assert_equal 4 , 2 + 2 end end
    • 7. Test-First Development
    • 8. Test-First Development Failing tests Start Done Write code Write tests
    • 9. Test-Driven Development
    • 10. Test-Driven Development Failing test Clean code All tests pass Refactor
    • 11. State-Based class DongleTest < Test::Unit::TestCase def test_wibble # Set up test inputs dongle = Dongle . new dongle.addString( &quot;foo&quot; ) dongle.addRemoteResource( &quot; http://foo.com/bar &quot; ) # Exercise functionality under test dongle.wibble! # Verify results are as expected dongle.answer.should == 42 end end
    • 12. Bottom-Up
    • 13. Behaviour-Driven Development
    • 14. Behaviour-Driven Development Verification Specification State-based Interaction-based Bottom-up Outside-in Testing tool Design tool Invention Discovery
    • 15. More Descriptive Test Names class AdderTest < Test::Unit::TestCase def test_should_add_two_positive_numbers assert_equal 4 , Adder . new .add( 2 , 2 ) end def test_should_add_a_positive_and_a_negative_number assert_equal 2 , Adder . new .add( 4 , - 2 ) end end
    • 16. Matchers describe &quot;An adder&quot; do it &quot;should add two positive numbers&quot; do Adder . new .add( 2 , 2 ).should == 4 end it &quot;should add a positive and a negative number&quot; do Adder . new .add( 4 , - 2 ).should == 2 end end
    • 17. Generated Documentation $ spec -f s adder_spec.rb An adder - should add two positive numbers - should add a positive and a negative number Finished in 0.005493 seconds 2 examples, 0 failures
    • 18. More Matcher Examples @string .should == &quot;foo&quot; @array .should_not be_empty @hash .should have_key( :foo ) @object .should be_an_instance_of String lambda { @stack .pop }.should raise_error( StackUnderflowError )
    • 19. Top-Down
    • 20. Interaction-Based
    • 21. Mock Objects
      • Stand-ins for collaborating objects
      • Mock the interface, not a specific object
      • Verify that expected calls are made
      • Not stubs!
      • For your code only!
    • 22. Classicists v Mockists
    • 23. Mock Objects Mock Mock
    • 24. Boundary Objects
    • 25. Integration Testing
    • 26. Further Reading Introducing BDD (Dan North) http: //dannorth . net/introducing-bdd BDD Introduction http: //behaviour-driven .org/Introduction Mock Roles, Not Objects (Freeman, Mackinnon, Pryce, Walnes) http://www. jmock .org/oopsla2004. pdf BDD in Ruby (Dave Astels) http: //blog . daveastels . com/files/BDD_Intro . pdf

    ×