SlideShare une entreprise Scribd logo
1  sur  13
Acceptance Test Driven Development with Concordion By Mike McGarr
Acceptance Test Driven Development? ATDD is TDD applied at a coarse grain level. With ATDD your focus is on verifying behavior that is visible to customers The emphasis is on creating executable specifications (user stories, use cases, etc.) Like TDD, you define your behavior first, write a failing test, and then write the code.
ATDD & TDD http://www.methodsandtools.com/archive/archive.php?id=72p9
What we wanted	 Java-based framework Easily integrated with Maven and Hudson Provided traceability Publish requirements/test results
Concordion An open source Java framework built on JUnit HTML-based specifications
How Concordion Works http://www.concordion.org/
How Concordion Works <htmlxmlns:concordion="http://www.concordion.org/2007/concordion"> <head><title>Record Type Code</title></head> <body> <h1>00001 - Record Type Code</h1> <p>The following record type codes are valid.  All other codes will cause a record to be rejected.</p> <div class="example">         01 = Separation         02 = Transfer         03 = At Retirement         04 = Death in Service         05 = FERS Election         06 = Preliminary Disability Retirement         07 = Re-employed Annuitant </div> <div class="example"> <h3>Acceptance Criteria</h3> <table concordion:execute="#isValid = validateRecordTypeCode(#recordType, #recordTypeCode)"> <tr> <thconcordion:set="#recordType">Record Type</th> <thconcordion:set="#recordTypeCode">Record Type Code</th> <thconcordion:assertEquals="#isValid">Is Valid?</th> </tr>         	<tr> <td>ElectronicRetirementRecord</td>         	       <td>00</td>         	       <td>false</td>            </tr>     … <html> <head><title>Record Type Code</title></head> <body> <h1>00001 - Record Type Code</h1> <p>The following record type codes are valid.  All other codes will cause a record to be rejected.</p> <div class="example">         01 = Separation         02 = Transfer         03 = At Retirement         04 = Death in Service         05 = FERS Election         06 = Preliminary Disability Retirement         07 = Re-employed Annuitant </div> <div class="example"> <h3>Acceptance Criteria</h3> <table> <tr> <th>Record Type</th> <th>Record Type Code</th> <th>Is Valid?</th> </tr>         	<tr> <td>ElectronicRetirementRecord</td>         	       <td>00</td>         	       <td>false</td>             </tr>     …
How Concordion Works
Advantages No requirements document Requirements, code, tests versioned together Allows for a variety of requirements styles Customers can easily see which requirements are passing Customers don’t need to learn a new requirements style Works great with Build Pipelines
Things to Consider Still need to write an Application Driver Requirements written in HTML
Concordion Alternatives Tabular Style Requirements Fit FitNesse Behaviour Driven Development easyb JBehave
Further Reading Concordion, http://www.concordion.org Acceptance TDD Explained, http://bit.ly/9eRyXq Books Test Driven: Practical TDD and Acceptance TDD for Java Developers, by LasseKoskela, http://www.manning.com/koskela Growing Object Oriented Code, Guided by Tests, by Steve Freeman and Nat Pryce, http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627
About Me Mike McGarr Excella Consulting  Lead for Excella’s Java Center of Excellence Consulting for Federal and Commercial clients Interested in Agile Software Development mike.mcgarr@excella.com @jmichaelmcgarr http://earlyandoften.wordpress.com

Contenu connexe

En vedette

CCMS_Launching_Presentation
CCMS_Launching_PresentationCCMS_Launching_Presentation
CCMS_Launching_Presentation
Fareed Fattal
 
Theancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docxTheancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docx
Juan Mayne
 

En vedette (13)

Test Driven Development With Python
Test Driven Development With PythonTest Driven Development With Python
Test Driven Development With Python
 
Software architecture First Lecture
Software architecture First LectureSoftware architecture First Lecture
Software architecture First Lecture
 
CCMS_Launching_Presentation
CCMS_Launching_PresentationCCMS_Launching_Presentation
CCMS_Launching_Presentation
 
Lahermosabiarritz
LahermosabiarritzLahermosabiarritz
Lahermosabiarritz
 
Developing for Multiple Platforms
Developing for Multiple PlatformsDeveloping for Multiple Platforms
Developing for Multiple Platforms
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
PAGINA WEB DE JUAN JACOBO ROSSEAU
PAGINA WEB DE JUAN JACOBO ROSSEAUPAGINA WEB DE JUAN JACOBO ROSSEAU
PAGINA WEB DE JUAN JACOBO ROSSEAU
 
Transporte 1
Transporte 1Transporte 1
Transporte 1
 
Synthese barometre metiers_communication_2015
Synthese barometre metiers_communication_2015 Synthese barometre metiers_communication_2015
Synthese barometre metiers_communication_2015
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)
 
עמית.ג
עמית.געמית.ג
עמית.ג
 
Pip
PipPip
Pip
 
Theancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docxTheancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docx
 

Plus de Mike McGarr

Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 

Plus de Mike McGarr (12)

Better DevEx at Netflix (QCon NY 2018)
Better DevEx at Netflix (QCon NY 2018)Better DevEx at Netflix (QCon NY 2018)
Better DevEx at Netflix (QCon NY 2018)
 
Productivity Engineering: Surviving DevOps
Productivity Engineering: Surviving DevOpsProductivity Engineering: Surviving DevOps
Productivity Engineering: Surviving DevOps
 
Engineering change: leading a transformation
Engineering change: leading a transformationEngineering change: leading a transformation
Engineering change: leading a transformation
 
Dependencies, distributed code and engineering velocity
Dependencies, distributed code and engineering velocityDependencies, distributed code and engineering velocity
Dependencies, distributed code and engineering velocity
 
Continuous Delivery at Netflix, and beyond
Continuous Delivery at Netflix, and beyondContinuous Delivery at Netflix, and beyond
Continuous Delivery at Netflix, and beyond
 
Build and deploy to the cloud using NetflixOSS (Gradle Summit 2016)
Build and deploy to the cloud using NetflixOSS (Gradle Summit 2016)Build and deploy to the cloud using NetflixOSS (Gradle Summit 2016)
Build and deploy to the cloud using NetflixOSS (Gradle Summit 2016)
 
Beyond the Culture Deck: What you don't already know about Netflix
Beyond the Culture Deck: What you don't already know about NetflixBeyond the Culture Deck: What you don't already know about Netflix
Beyond the Culture Deck: What you don't already know about Netflix
 
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Concordion & ATDD (Lightning Talk)

  • 1. Acceptance Test Driven Development with Concordion By Mike McGarr
  • 2. Acceptance Test Driven Development? ATDD is TDD applied at a coarse grain level. With ATDD your focus is on verifying behavior that is visible to customers The emphasis is on creating executable specifications (user stories, use cases, etc.) Like TDD, you define your behavior first, write a failing test, and then write the code.
  • 3. ATDD & TDD http://www.methodsandtools.com/archive/archive.php?id=72p9
  • 4. What we wanted Java-based framework Easily integrated with Maven and Hudson Provided traceability Publish requirements/test results
  • 5. Concordion An open source Java framework built on JUnit HTML-based specifications
  • 6. How Concordion Works http://www.concordion.org/
  • 7. How Concordion Works <htmlxmlns:concordion="http://www.concordion.org/2007/concordion"> <head><title>Record Type Code</title></head> <body> <h1>00001 - Record Type Code</h1> <p>The following record type codes are valid. All other codes will cause a record to be rejected.</p> <div class="example"> 01 = Separation 02 = Transfer 03 = At Retirement 04 = Death in Service 05 = FERS Election 06 = Preliminary Disability Retirement 07 = Re-employed Annuitant </div> <div class="example"> <h3>Acceptance Criteria</h3> <table concordion:execute="#isValid = validateRecordTypeCode(#recordType, #recordTypeCode)"> <tr> <thconcordion:set="#recordType">Record Type</th> <thconcordion:set="#recordTypeCode">Record Type Code</th> <thconcordion:assertEquals="#isValid">Is Valid?</th> </tr> <tr> <td>ElectronicRetirementRecord</td> <td>00</td> <td>false</td> </tr> … <html> <head><title>Record Type Code</title></head> <body> <h1>00001 - Record Type Code</h1> <p>The following record type codes are valid. All other codes will cause a record to be rejected.</p> <div class="example"> 01 = Separation 02 = Transfer 03 = At Retirement 04 = Death in Service 05 = FERS Election 06 = Preliminary Disability Retirement 07 = Re-employed Annuitant </div> <div class="example"> <h3>Acceptance Criteria</h3> <table> <tr> <th>Record Type</th> <th>Record Type Code</th> <th>Is Valid?</th> </tr> <tr> <td>ElectronicRetirementRecord</td> <td>00</td> <td>false</td> </tr> …
  • 9. Advantages No requirements document Requirements, code, tests versioned together Allows for a variety of requirements styles Customers can easily see which requirements are passing Customers don’t need to learn a new requirements style Works great with Build Pipelines
  • 10. Things to Consider Still need to write an Application Driver Requirements written in HTML
  • 11. Concordion Alternatives Tabular Style Requirements Fit FitNesse Behaviour Driven Development easyb JBehave
  • 12. Further Reading Concordion, http://www.concordion.org Acceptance TDD Explained, http://bit.ly/9eRyXq Books Test Driven: Practical TDD and Acceptance TDD for Java Developers, by LasseKoskela, http://www.manning.com/koskela Growing Object Oriented Code, Guided by Tests, by Steve Freeman and Nat Pryce, http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627
  • 13. About Me Mike McGarr Excella Consulting Lead for Excella’s Java Center of Excellence Consulting for Federal and Commercial clients Interested in Agile Software Development mike.mcgarr@excella.com @jmichaelmcgarr http://earlyandoften.wordpress.com

Notes de l'éditeur

  1. Goal - To provide the audience an understanding of the value of ATDD and how a simple tool like Concordion can help solve this problem.
  2. Quick explanation of ATDD- What is ATDD?- How does it differ from TDD?- How does it relate to BDD?
  3. Quick explanation of ATDD- What is ATDD?- How does it differ from TDD?- How does it relate to BDD?
  4. What we were looking for in a framework?- Java based automated acceptance test framework- Integrated with build/continuous integration platform- Could provide traceability between requirements, tests and code changes- Could publish requirements/acceptance tests to customer  automatically  
  5. What is Concordion?- Java framework built on top of JUnit - Concordion is simply the glue between HTML specifications and JUnit based Acceptance tests
  6. How it works?- Show the picture of the requirements -&gt; acceptance criteria -&gt; tests -&gt; driver -&gt; SUT
  7. How it works?- Show the picture of the requirements -&gt; acceptance criteria -&gt; tests -&gt; driver -&gt; SUT
  8. How it works?- Show the picture of the requirements -&gt; acceptance criteria -&gt; tests -&gt; driver -&gt; SUT
  9. Other advantages- Didn&apos;t tie us into a style of writing requirements (user stories, use cases, BDD, tabular...it all works)- Can also use existing application drivers, like Selenium
  10. Negatives- Still have to write a fair amount of code for the application driver- BA&apos;s had to write HTML