Upload
anand-bagmar
View
2.424
Download
1
Tags:
Embed Size (px)
DESCRIPTION
I delivered this talk in SiliconIndia's SoftTec 2012 on 14th July 2012. I introduce Behavior Driven Testing (BDT) with a couple of examples, the different ways of writing the tests in Imperative and Declarative style, the value proposition of BDT, and how BDT can help you build a very good safety net using Test Automation suite.
Citation preview
Behavior Driven Tes.ng (BDT) in
Agile
What is Tes*ng on Agile projects?
Story planning and
wri/ng
IPM
QA kickoff
Story kickoff
Test Scenario Wri/ng
Implement Test
Automa/on
BA / QA Volleyball
Manual + Exploratory Tes/ng
Automa/on (execu/on,
maintenance)
Showcase
Agile Tes.ng in an Itera.on
A prac*ce that makes Agile Teams successful?
Test Automa.on
A prac*ce that makes Agile Teams unsuccessful?
Test Automa.on
• “Succeeding with Agile” – Mike Cohn
• Mar*n Fowler – Test Pyramid – hCp://mar*nfowler.com/bliki/TestPyramid.html
The Test Pyramid
Func/onal Tests (GUI) • Developers & / QA team
API Tests • Developers & / QA team
Integra/on tests • Developers
Component tests • Developers
Unit Tests • Developers
Cost / Effort Time
Ideal Test Pyramid
Test Pyramid reality
Development team Test Pyramid QA team
Test Pyramid
Test Pyramid – An* PaCern
Evolu*on of Test Frameworks Behavior Driven
Development (BDD)
Op/mized scripts
Record & Playback
Core Framework
Behavior Driven Development (BDD)
RED
GREEN REFACTOR
Behavior Driven Tes*ng (BDT)
Expected Func/onality:
The customer should be able to withdraw money from his account via an ATM machine
Given the account has balance of 5000 When the customer requests 1000 Then the account is debited by 1000
BDD Example:
Given the account is in credit
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
BDT Example:
New Expected Func/onality:
The customer should be able to withdraw money from his account only if his card is valid
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
BDT Example -‐ updated:
Case Study
Requirements
• Guest User is able to search for a flight for a single traveller
• Ability to specify contact informa*on for person booking the flight
Search Search Results
Contact Informa/on
Contact Details
Test specifica*on styles
• Impera*ve • Declara*ve
Impera*ve style Given I am a guest user on the Indigo home page And I select “round” trip op*on And I select “Pune” from the origin dropdown And I select “Bangalore” from the des*na*on drop down And I select departure date as “5 July 2012” And I select returning date as “25 July 2012” When I click on Search Then I should see the search results page And I should see at least 1 op*on for my criteria ...
… When I select the “first” op*on Then I am on the Contact Informa*on page When I enter first name as “foo” And I enter last name as “bar” … … And I click the “Select and Con/nue” buCon Then I should be on the next page
Given I am a guest user When I search for flight op*ons for a “one-‐way” trip for “1” “Adult” from “Delhi” to “Bangalore” And I select the “first” flight And I enter “valid” contact details for “traveller1” Then I am able to Save and Con*nue
Declara*ve style
Func/onal Tests (GUI) • Developers & / QA team
API Tests • Developers & / QA team
Integra/on tests • Developers
Component tests • Developers
Unit Tests • Developers
What does BDT do for me?
What BDT does NOT do for me?
• Replace tes*ng granular func*onality – ONLY when it has just been developed
Steps to follow to implement BDT
Current state Tests running on Hudson / Jenkins Since 1st test was automated
Feature files 33
Scenarios 65
Smoke tests execu*on *me 15 minutes
Regression tests execu*on *me 45 minutes
Test case repository (manual + automated)
Cucumber .feature files with appropriate tagging
Project Management tool Mingle
Tools to enable BDD / BDT
• Cucumber • JBehave • SpecFlow • Twist