SlideShare a Scribd company logo
1 of 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

More Related Content

Viewers also liked

Test Driven Development With Python
Test Driven Development With PythonTest Driven Development With Python
Test Driven Development With PythonSiddhi
 
Software architecture First Lecture
Software architecture First LectureSoftware architecture First Lecture
Software architecture First LectureAhmad Zee
 
CCMS_Launching_Presentation
CCMS_Launching_PresentationCCMS_Launching_Presentation
CCMS_Launching_PresentationFareed Fattal
 
Developing for Multiple Platforms
Developing for Multiple PlatformsDeveloping for Multiple Platforms
Developing for Multiple PlatformsDaniel Pfeiffer
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Mike McGarr
 
PAGINA WEB DE JUAN JACOBO ROSSEAU
PAGINA WEB DE JUAN JACOBO ROSSEAUPAGINA WEB DE JUAN JACOBO ROSSEAU
PAGINA WEB DE JUAN JACOBO ROSSEAUJuan Jacobo Rosseau
 
Synthese barometre metiers_communication_2015
Synthese barometre metiers_communication_2015 Synthese barometre metiers_communication_2015
Synthese barometre metiers_communication_2015 UCC MED
 
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)Mike McGarr
 
Theancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docxTheancient mayaarefamousfortheirknowledgeofthestars.docx
Theancient mayaarefamousfortheirknowledgeofthestars.docxJuan Mayne
 

Viewers also liked (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
 

More from Mike McGarr

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)Mike McGarr
 
Productivity Engineering: Surviving DevOps
Productivity Engineering: Surviving DevOpsProductivity Engineering: Surviving DevOps
Productivity Engineering: Surviving DevOpsMike McGarr
 
Engineering change: leading a transformation
Engineering change: leading a transformationEngineering change: leading a transformation
Engineering change: leading a transformationMike McGarr
 
Dependencies, distributed code and engineering velocity
Dependencies, distributed code and engineering velocityDependencies, distributed code and engineering velocity
Dependencies, distributed code and engineering velocityMike McGarr
 
Continuous Delivery at Netflix, and beyond
Continuous Delivery at Netflix, and beyondContinuous Delivery at Netflix, and beyond
Continuous Delivery at Netflix, and beyondMike McGarr
 
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)Mike McGarr
 
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 NetflixMike McGarr
 
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)Mike McGarr
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Mike McGarr
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery appliedMike McGarr
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniquesMike McGarr
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryMike McGarr
 

More from 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
 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

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

Editor's Notes

  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