anand bagmar - behavior driven testing (bdt) in agile

41
Behavior Driven Tes.ng (BDT) in Agile

Upload: anand-bagmar

Post on 10-May-2015

2.424 views

Category:

Technology


1 download

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.

TRANSCRIPT

Page 1: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Behavior  Driven  Tes.ng  (BDT)    in    

Agile  

Page 2: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

What  is  Tes*ng  on  Agile  projects?  

Page 3: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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

Page 4: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

A  prac*ce  that  makes  Agile  Teams    successful?  

Test  Automa.on  

Page 5: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

A  prac*ce  that  makes  Agile  Teams  unsuccessful?  

Test  Automa.on  

Page 6: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

•  “Succeeding  with  Agile”  –  Mike  Cohn  

•  Mar*n  Fowler  –  Test  Pyramid  –  hCp://mar*nfowler.com/bliki/TestPyramid.html  

The  Test  Pyramid  

Page 7: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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  

Page 8: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 9: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Test  Pyramid  reality  

Development  team  Test  Pyramid   QA  team  

Test  Pyramid  

Page 10: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Test  Pyramid  –  An*  PaCern  

Page 11: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Evolu*on  of  Test  Frameworks  Behavior  Driven  

Development  (BDD)  

Op/mized  scripts  

Record  &  Playback    

Core  Framework  

Page 12: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Behavior  Driven  Development    (BDD)  

Page 13: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

RED  

GREEN  REFACTOR  

Page 14: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Behavior  Driven  Tes*ng  (BDT)  

Page 15: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Expected  Func/onality:  

 

The  customer  should  be  able  to  withdraw  money  from  his  account  via  an  ATM  machine  

Page 16: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Given  the  account  has  balance  of  5000  When  the  customer  requests  1000  Then  the  account  is  debited  by  1000  

BDD  Example:  

Page 17: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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:  

Page 18: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

New  Expected  Func/onality:  

 

The  customer  should  be  able  to  withdraw  money  from  his  account  only  if  his  card  is  valid  

Page 19: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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:  

Page 20: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Case  Study  

Page 21: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 22: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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  

Page 23: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Search    Search  Results  

Contact  Informa/on  

Page 24: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 25: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 26: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Contact  Details  

Page 27: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Test  specifica*on  styles  

•  Impera*ve    •  Declara*ve  

Page 28: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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    ...    

Page 29: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

…  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    

Page 30: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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  

Page 31: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Func/onal  Tests  (GUI)  •  Developers  &  /  QA  team  

API  Tests  •  Developers  &  /  QA  team  

Integra/on  tests  • Developers  

Component  tests  •  Developers  

Unit  Tests  •  Developers  

Page 32: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

What  does  BDT  do  for  me?  

Page 33: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

What  BDT  does  NOT  do  for  me?  

•  Replace  tes*ng  granular  func*onality    – ONLY  when  it  has  just  been  developed  

Page 34: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Steps  to  follow  to  implement  BDT  

Page 35: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 36: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 37: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 38: Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Page 39: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

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  

Page 40: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

Tools  to  enable  BDD  /  BDT  

•  Cucumber  •  JBehave  •  SpecFlow  •  Twist  

Page 41: Anand Bagmar - Behavior Driven Testing (BDT) in Agile

[email protected]  

[email protected]  

 ThoughtWorks®