Intro to TDD and BDD
Upcoming SlideShare
Loading in...5
×
 

Intro to TDD and BDD

on

  • 761 views

An introduction to Test Driven Development and Behavior Driven Development

An introduction to Test Driven Development and Behavior Driven Development

Statistics

Views

Total Views
761
Views on SlideShare
761
Embed Views
0

Actions

Likes
1
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Intro to TDD and BDD Intro to TDD and BDD Presentation Transcript

  • Test Driven DesignBehavior Driven Design Jason Noble instructor@jasonnoble.org
  • Test Driven Design• TDD is a software development practice that relies on the repetition of a very short development cycle – Write a failing test that defines a desired improvement or new function – Write the minimum code possible to make the test pass – Refactor the code to acceptable standards
  • Red Green Refactor• Write a failing test (Red)• Make the test pass (Green)• Refactor tests or code (NOT both!)
  • Why use TDD?• Helps you break problems down into small manageable tasks• Writing tests takes the fear out of programming• Writing tests helps you communicate what your code SHOULD do/accomplish
  • TDD Example• What can a calculator do? – Add – Square Root – Subtract – On / Off – Memory Clear – Multiply – Memory Set – Divide – Memory Recall – Equals – Negative numbers – Percent – Decimals
  • Write a failing test (Red)• Write a failing test # spec/calculator_spec.rb require ’./calculator’ describe Calculator do end• Failure: spec/calculator_spec.rb:1:in `require: cannot load such file – ./calculator (LoadError)
  • Make the test pass (Green)• Write code to make the test pass touch calculator.rb• Test Failure spec/calculator_spec.rb:3:in `<top (required)>: uninitializedconstant Calculator (NameError)
  • Make the test pass (Green)• Write code to make the test pass # calculator.rb class Calculator end• Test Success No examples found.Finished in 0.00005 seconds0 examples, 0 failures
  • What did we do?• Write a very simple test• Got a LoadError• Fixed the LoadError• Got a NameError• Fixed the NameError• Tests are green!• Refactor?
  • Add a test # spec/calculator_spec.rb let(:calculator) { Calculator.new } it "can be created" do calculator.should be_a(Calculator) endTests are still green! Running: spec/calculator_spec.rb Calculator can be created Finished in 0.00127 seconds 1 example, 0 failures
  • What did we do?• Add a very simple test• Got no errors• Tests are green!• Refactor?
  • Add a test # spec/calculator_spec.rb describe "#total" do it "returns 0 by default" do calculator.total.should == 0 end endTests are red!
  • Make the tests pass• Add the minimum code to make the test fail in a different way (or succeed) # calculator.rb def total end
  • Make the tests pass• Write the MINIMUM code necessary to make the test pass # calculator.rb def total 0 end• Tests are GREEN!• Refactor?
  • What did we do?• Write a very simple test (total.should == 0)• Got a NoMethod error• Fixed the NoMethodError• Got an unexpected result returned• Fixed the result to always return 0• Tests are green!• Refactor?
  • Behavior Driven Development• Uses the basis of TDD, domain driven design and object oriented design to provide software developers and business analysts with shared tools in order to collaborate on software development• TDD describes how the software works• BDD describes how the end user uses the software
  • BDD ExampleScenario: User adds two positive numbersGiven I turn the calculator on,Then I should see zero on the screenWhen I add 5And I add 7Then I should see 12 on the screen
  • Ruby Cucumber• Uses regular expressions to match steps Given /I turn the calculator on/ do @calculator = Calculator.new @calculator.on end Then /I should see (d+) on the screen/ do |expected_value| @calculator.total.should == expected_value end When /I add (d+) / do |number| @calculator.add(number) end
  • Further Readings• Test Driven Development: By Example by Kent Beck• Everyday Rails Testing with Rspec by Aaron Sumner• The Cucumber Book by Matt Wynne and Aslak Hellesoy