Test Driven Development via Agile Testing

Post on 10-May-2015

2.015 views 2 download

description

The following topics are covered:• Overview of Agile Testing• The Test Pyramid• Different flavors of TDDo BDD – Behavior Driven Developmento ATDD – Acceptance Driven Developmento BDT – Behavior Driven Testing• Difference between BDD and BDT• Tools that support BDT• The value proposition of BDT

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  

Anand.Bagmar@thoughtworks.com  

abagmar@gmail.com  

 ThoughtWorks®