Test Driven Development via Agile Testing
-
Upload
anand-bagmar -
Category
Technology
-
view
2.015 -
download
2
description
Transcript of Test Driven Development via Agile Testing
Test Driven Development via
Agile Tes2ng
What is Tes*ng on Agile projects?
Itera&on 0
Story test analysis for Itera2on 1
Test Automa&on -‐ strategy, framework setup, etc.
Itera&on 1
IPM
Itera&on 1 Story tes&ng
Story test analysis for Itera2on 2
Itera&on 2
Showcase Itera2on 1,
IPM
Support Itera2on 1
Itera&on 2 Story tes&ng
Test Automa&on
maint., execu&on
Story test analysis for Itera2on 3
Itera&on 3
Showcase Itera2on 2,
IPM
Support Itera2on 2
Itera&on 3 Story tes&ng
Test Automa&on
maint., execu&on
Story test analysis for Itera2on 4
.. .. Itera&on n
Showcase Itera2on n-‐1,
IPM
Support Itera2on n-‐1
Itera&on n Story tes&ng
Test Automa&on
maint., execu&on
Story test analysis for Itera2on n+1
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 Tes2ng in an Itera2on
What makes Agile Teams successful?
Test Automa2on
What makes Agile Tes*ng unsuccessful?
Test Automa2on
• “Succeeding with Agile” – Mike Cohn
• Mar*n Fowler – Test Pyramid – hCp://mar*nfowler.com/bliki/TestPyramid.html
The Test Pyramid
Ideal Test Pyramid
Test Pyramid reality
Development team Test Pyramid QA team
Test Pyramid
Test Pyramid – An* PaCern
Case Study
• Mul*ple, long running projects
• Legacy applica*ons
• Integrated
Its not what I said, its what I
mean!
• Remove the ambiguity • Same visibility for all
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 INR 5000 When the customer requests INR 1000 Then the account is debited by INR 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:
Test specifica*on styles
Story: Animal Submission As a Zoologist I want to add a new animal to the site So that I can share my animal knowledge with the community
Impera*ve Scenario
Reference: hCp://wa*rmelon.com/2010/12/10/cucumber-‐impera*ve-‐or-‐declara*ve-‐that-‐is-‐the-‐ques*on/
Given I am on the animal crea*on page When I fill in Name with ‘Alligator’ And fill in Genus with ‘Alligator’ And check Lay Eggs And click the Create buCon Then I should see the no*ce ‘Thank you for your animal submission!’ And the page should include the animal’s name, genus and lay’s eggs
Declara*ve Scenario
Reference: hCp://wa*rmelon.com/2010/12/10/cucumber-‐impera*ve-‐or-‐declara*ve-‐that-‐is-‐the-‐ques*on/
Given I am on the animal crea*on page When I add a new animal Then I animal should be created successfully
What does this do for me?
How did we accomplish this?
Who is doing the ac*on?
What is the business func*onality?
Ac*ons and verifica*ons happen implicitly Depicts a user flow
Given auc&oneer creates a sale And 5 items are added to the sale When auc&oneer starts the sale And auc&oneer sets a star*ng bid of 5000 And buyer_1 bids And buyer_2 bids Then auc&oneer Sells the item And buyer_2 wins the item
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