• Save
Behavior Driven Development - TdT@Cluj #15
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Behavior Driven Development - TdT@Cluj #15

on

  • 780 views

Talk by Gabi Kis.

Talk by Gabi Kis.
Meetup #15 Tabara de Testare @Cluj

Statistics

Views

Total Views
780
Views on SlideShare
780
Embed Views
0

Actions

Likes
1
Downloads
0
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
  • TDD is a style of programming where you write your tests before you write your code. This helps produce programs that are a bit more error free.
  • ubiquitous =existingorbeingeverywhere,especiallyatthesametime;omnipresent
  • Method names are sentences
  • DSL – Domain Specific Language

Behavior Driven Development - TdT@Cluj #15 Presentation Transcript

  • 1. BDD with Ruby Gherkin Cucumber Capybara Gabi Kis TDT - July 3, 2013
  • 2. Agenda • TDD • BDD • Gherkin • Cucumber • Capybara • Demo (Ruby) • Conclusions
  • 3. What is TDD? • Test-driven development (TDD) o developer writes an automated test case o then produces the minimum code to pass test o refactors the code to acceptable standards
  • 4. TDD • Advantages: o Programmers tend to be more productive o Can drive the design of a program o Offers the ability to take small steps o Can lead to more modularized, flexible, and extensible code • Shortcomings o Reliance on unit tests might => not perform sufficient full functional testing o Tests may share the same blind spots with the code o Tests become part of the maintenance overhead of a project o Rewrite the tests when requirements change
  • 5. What is BDD? • “BDD builds upon TDD by formalizing the good habits of the best TDD practitioners.” - Matt Wynne • So what are those good habits? o Working outside-in, starting from a business or organizational goal o Using examples to clarify requirements o Developing and using a ubiquitous language
  • 6. BDD - Gherkin Story card Acceptance criteria User story As a <role> I want to <feature> So that <benefit> Scenario Given <initial context> When <event occurs> Then <ensure some outcomes> Example: Feature: Customer withdraws cash As a customer, I want to withdraw cash from an ATM, So that I don’t have to wait in line at the bank Scenario: Account is in credit Given the account is in credit And the card is valid And the dispenser contains cash When the customer requests cash Then ensure the account is debited And ensure cash is dispensed And ensure the card is returned Scenario: Account is overdrawn past overdraft limit Given the account is overdrawn And the card is valid When the customer requests cash Then ensure a rejection message is displayed And ensure cash is not dispensed And ensure the card is returned
  • 7. Gherkin exercise Feature: [ ] In order to [ ] As a [ ] I want to [ ] Scenario: [ ] Given [ ] When [ ] Then [ ]
  • 8. What is Gherkin? The language I use for writing Cucumber features!
  • 9. What is Cucumber? • is a tool for running automated acceptance tests written in a BDD style • is written in the Ruby programming language • projects are available for other platforms beyond Ruby
  • 10. Cucumber implementation /features/adding.feature Feature: Adding Scenario: Add two numbers Given the input "2+2“ When the calculator is run Then the output should be "4" /step_definitions/calculator_steps.rb Given /^the input "([^"]*)"$/ do |input| @input = input end When /^the calculator is run$/ do @output = `ruby calc.rb #{@input}` raise('Command failed!') unless $?.success? end Then /^the output should be "([^"]*)"$/ do |exp_out| @output.should == exp_out end
  • 11. Cucumber testing stack
  • 12. Capybara • provides an API for accessing web pages and interacting with them in a way that is very similar to how a real user would • allows you to plug in different web drivers – including selenium • it can use real browsers: Firefox, IE or Chrome, or a number of different browser simulators
  • 13. Capybara coding
  • 14. Demo!!! Create a project from scratch using the tech stack from this presentation.
  • 15. Why use Cucumber? • It is relatively easy to set up. • It supports multiple report formats, including HTML, JUNIT, PDF. • It supports writing specifications in about 40 spoken languages Test scenarios can be read by the stakeholders • It allows scripting, abstraction and component reuse on several levels • Although Cucumber is a Ruby tool, it can be used on other languages as .NET or JVM languages. • It's integrated with all the most popular web testing libraries. • It allows you to cross reference and index tests using tags, so that you can quickly find all tests related to a function or run a group of related tests (e.g. quick tests, slow tests, integration tests, accounting tests). • It allows you to quickly write and execute a scenario using tabled data
  • 16. Final Questions
  • 17. Thank you! Gabi Kis Skype: gabikissv Email: gabi.kis@evozon.com