- ISQT International
Download
Report
Transcript - ISQT International
Agile BDD using RSpec and Cucumber
Aruna Banavar Shankar & Miti Bhat
© 2012. Infosys Limited. Strictly private and confidential. No part of this document should be reproduced or distributed
Infosys Confidential © 2012
without the prior permission of Infosys Technologies Limited.
Contents
•
•
•
•
•
•
BDD
Installation
Demo for Rspec
Demo for Cucumber
The Basic Features
Cucumber vs. Rspec
Infosys Confidential © 2012
2
A story
An elephant as seen by 6
blind people!
The elephant was
assumed to be what was
“felt” by these blind
people
One question! – Can everyone see one entity as it is???
Infosys Confidential © 2012
3
Introduction to BDD
• “Getting the Words Right” is the focus of BDD, leading to building one
language that is understood the same way by the project stakeholders
• Vision is to bring in consistency, accuracy and meaning
• Behavior Driven Development (BDD) claims “the words you use about
something influence the way you think about that”.
Infosys Confidential © 2012
4
How it works?
• As <a ROLE> I need a <FEATURE> towards <BENEFIT>
• Examples
• As an <ADMIN> I need <ACCESS TO FUNCTIONAL ADMIN PORTAL>
to <MANAGE USERS>
• As the <IT MANAGER> I need <DETAILED REPORT> to <VALIDATE IT
SPEND>
Infosys Confidential © 2012
5
Key stakeholders in a project
Developer –
- Interested in coding than testing
- If tester finds a defect or if time permits …… focus on defects
- Let me code first is the general tendency
Tester –
- Primary responsibility is to test and find defects
Customer –
- Clarifications, approvals, sign off
Different stakeholders, unlike mindset, varied mission come together in the project.
Building an application by understanding its behavior from all stakeholder point of view.
This builds a collaboration between developer, Tester, business and
other teams.
Infosys Confidential © 2012
6
Then……what is BDD
In the "Agile specifications, BDD and Testing eXchange" in November 2009 in
London, Dan North[3] gave the following description of BDD:
BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiplescale, high-automation, agile methodology. It describes a cycle of interactions with
well-defined outputs, resulting in the delivery of working, tested software that
matters.
Infosys Confidential © 2012
7
About them…
• RSpec created by Steven Baker in 2005.
• To explore new TDD frameworks
• Encourage focus on behavior…. Rspec
• 2008, Aslak Hellesøy
• To explore new BDD frameworks
• Rewrites RSpec’s Story Runner with a real grammar… Cucumber
Infosys Confidential © 2012
8
Installation
• Installed as gems:
• rspec
• cucumber
Infosys Confidential © 2012
9
Folder Structure
http://www.sharpthoughts.org
Infosys Confidential © 2012
10
Cucumber & RSpec
Ref: The Rspec Book by David Chelimsky and others
published by The Pragmatic Bookshelf
Infosys Confidential © 2012
11
Demo Hello Rspec
Infosys Confidential © 2012
12
Demo: Hello Cucumber
Infosys Confidential © 2012
13
Step Definitions
•
•
•
•
•
Creates a step.
Methods:
Given( )
When( )
Then( )
• Each must have
• Regexp
• A block.
Infosys Confidential © 2012
14
Step definitions Sample
•
•
•
•
•
•
•
•
•
Given /^a greeter$/ do
@greeter = CucumberGreeter.new
end
When /^I send it the greet message$/ do
@message = @greeter.greet
end
Then /^I should see "([^"]*)"$/ do |greeting|
@message.should == greeting
end
Infosys Confidential © 2012
15
Demo: step Definitions
website2
Infosys Confidential © 2012
16
User stories
• Consider:
•
•
•
•
User navigates to home page
User enters details
User successfully logs in
User unsuccessful in logging in
Infosys Confidential © 2012
17
DEMO: Multiple scenarios
Website: adding more scenarios without tables
Infosys Confidential © 2012
18
Scenario outlines
• Let us define a single scenario outline
• Tables of input data
• Expected output.
Infosys Confidential © 2012
19
Sample: Scenario outlines
•
•
•
•
Scenario Outline: submit guess
Given the secret code is "<code>"
When I guess "<guess>"
Then the symbol should be "<symbol>"
Infosys Confidential © 2012
20
Sample: scenario Outlines
• Scenario Outline: submit details
•
Given the user name is "<uname>"
•
When I guess "<pwd>"
•
Then the message should be "<mesg>"
•
•
•
Scenarios: no matches
| uname | pwd | symbol|
| ^^^^ | a1a1 | failed |
•
•
•
•
Scenarios: 1 uname incorrect
| uname | pwd | mesg |
| abcd | 1555 | passed |
| ba-mn| 2555 | failed |
Infosys Confidential © 2012
21
Test doubles
• An object that behaves as though it is the original object
• Eg: output
Infosys Confidential © 2012
22
Demo:Test Double
•
Uses test double but shows logical error
Infosys Confidential © 2012
23
“It” method
• The it( ) method:
• creates an example
• ExampleGroup returns an instance of it using describe( )
Demo: website5 Note: Rspec double(out) – a mock for STDOUT
Infosys Confidential © 2012
24
A small change
• def start
• @output.puts 'Welcome to website!'
• end
• The test passes!!!
• Once the passing code is ready… See it in action!!!
• Demo: website6 using .bat file
Infosys Confidential © 2012
25
When Cucumber & WHEN Rspec
• Cucumber - integration/acceptance testing
• rspec/test unit - Model unit tests.
1)
2)
3)
4)
Define feature scenario in cucumber
Start by implementing every step of feature scenario
For each functionality required BDD that with rspec
Repeat until functionality is complete
Infosys Confidential © 2012
26
Hooks
•
•
•
•
Hooks:
• Before - every scenario
• After - every scenario
• AfterStep - after every step
Infosys Confidential © 2012
27
Backgrounds
• Steps that are invoked
• Before and After every scenario
•
•
•
•
•
•
•
•
•
Feature: browse books
Background: Logged in
Given I have logged in as “Aruna"
And the following models exist:
| manufacturer | carmodel? |
| Ford | yes |
| Honda| no |
Scenario: Display a car that already exists
Scenario: Display a car that is not yet in market
Infosys Confidential © 2012
28
Configuration
• Command Line configuration for:
• Switches
• Options
•Eg:
•mycmd: --tags @wip features
•Usage:
•cucumber –p mycmd
Infosys Confidential © 2012
29
References / Bibliography
• The Rspec Book by David Chelimsky and others published by The
Pragmatic Bookshelf
• http://www.infoq.com
• Wikipedia
Infosys Confidential © 2012
30
Infosys Confidential © 2012