SlideShare a Scribd company logo
1 of 15
Download to read offline
FIT
Framework Integrated Testing
            for
  Writing Acceptance Tests
    Agile Software Community of India
                 (ASCI)
   Mumbai Conference, 27th August 2005
                  Conan Dalton
          conan.dalton@bnpparibas.com

                  Dhaval Dalal
            dalal_dhaval@yahoo.com
What are we talking about?
• Automated acceptance testing
  – testing approach that allows business users
    completely specify an application using
    automated test scripts.

• a.k.a.
  – Customer Tests
  – Functional Tests
  – System Tests

                             conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Initial Example Demo


      EMI Calculator
From Concept to Completion
       Dhaval Dalal
Specify ! Create ! Run
• Customers create Tables in a document.
  – Tables describe specific examples of how the
    software should work.
  – Programmers format tables in a FIT-friendly format.


• Programmers create Fixtures.
  – Fit uses "fixtures," to connect tables to software.
  – Fixtures interpret Tables.
  – Programmers write the fixture code.


• FIT runs the document against the system
                                   conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
fit.Summary
• FIT allows tests to be written in the domain language
   – Uses reflection to bind test script elements to "fixtures"

• FIT fosters Collaboration
   – Business Analysts along with customers specify the tests.
   – Programmers and Testers increase test coverage from
     customers examples.

• FIT tests are automated
   – Supports Immediate Feedback

• FIT works with HTML documents.
   – Reads/Writes results back as HTML
   – Test verdicts annotated with messages and colour
   – Summarizes test results (right, wrong, in error)
                                           conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Specification ! Test

Here is the
requirement         here is a requirement:

                    “User may borrow up to
                      2 books at a time”




                             conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Specification ! Test
                                   Here are the
                                   detailed UI
• step-by-step in the UI           steps to
                                   implement the
                                   requirement

  select “Harry Potter” in "available" list
  click on "borrow" button
  select "Refactoring" in "available" list
  click on "borrow" button
  select “XP Explained" in "available" list
  check that "borrow" button is unavailable
  ...

                                    conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Specification ! Test
                                           Here are the
                                           detailed UI
 Here is the                               steps to
 requirement                               implement the
                                           requirement

                                Is
                              there
                                a
                              middle
                             ground?




This is inadequate                     This is meaningless
for development                        to business people


                                            conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
The Middle Ground
• Use a domain-specific language

  borrow “Harry Potter”
  borrow “Refactoring”
  cannot borrow “XP Explained”
  return “Refactoring”
  borrow “XP Explained”
  cannot borrow “Refactoring”

                            conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
The hard part


Developing the fixtures to support
automated tests at system boundaries
in a language that's meaningful to the
user




                        conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Web Test Example Demo

      Conan Dalton
Acceptance Test Better Practices
• Automate tests

• Test continuously

• Develop tests collaboratively

• Use domain language

• Evolve tests

• Define system boundaries
                              conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
FIT Ports and Alternatives
• Ports
  – Available: Java, .NET, Perl, Python
  – In Progress: C++, Ruby

• Open-source alternatives
  – Selenium, Exactor, TextTest


• Other Commercial Tools
  – WinRunner, Silk

• Any other home-made testing framework
  – it's not difficult to write!
                                   conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
References
• Ward Cunningham’s acceptance testing
  framework
  – Official FIT site (http://fit.c2.com)


• FIT Library
  – Rick Mugridge
    (http://www.cs.auckland.ac.nz/~rick/FitLibrary)


• Homebrew Test Automation
  – Bret Pettichord (http://www.pettichord.com)

                                  conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
Thank-You

        Conan Dalton
conan.dalton@bnpparibas.com

        Dhaval Dalal
  dalal_dhaval@yahoo.com



                    conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com

More Related Content

Similar to Domain languageacceptancetests

Simplifying the Web Accessibility Test Lab
Simplifying the Web Accessibility Test LabSimplifying the Web Accessibility Test Lab
Simplifying the Web Accessibility Test Labmitchellevan
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerRobbie Minshall
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Conference
 
Design For Testability
Design For TestabilityDesign For Testability
Design For TestabilityWill Iverson
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"GoIT
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
 
Implementing Continuous Product Delivery
Implementing Continuous Product DeliveryImplementing Continuous Product Delivery
Implementing Continuous Product DeliveryJeremy Horn
 
Using JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingUsing JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingXBOSoft
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013SmartBear
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspecjeffrey1ross
 
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...XBOSoft
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to useUma Ghotikar
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013David Funaro
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedSandy Mamoli
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsMichael Palotas
 

Similar to Domain languageacceptancetests (20)

Simplifying the Web Accessibility Test Lab
Simplifying the Web Accessibility Test LabSimplifying the Web Accessibility Test Lab
Simplifying the Web Accessibility Test Lab
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
 
Design For Testability
Design For TestabilityDesign For Testability
Design For Testability
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Tec314f
Tec314fTec314f
Tec314f
 
Implementing Continuous Product Delivery
Implementing Continuous Product DeliveryImplementing Continuous Product Delivery
Implementing Continuous Product Delivery
 
Pm 6 testing
Pm 6 testingPm 6 testing
Pm 6 testing
 
Pm 6 testing
Pm 6 testingPm 6 testing
Pm 6 testing
 
Using JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingUsing JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance Testing
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspec
 
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to use
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
 
Manual testing1
Manual testing1Manual testing1
Manual testing1
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 

More from Dhaval Dalal

Test Pyramid in Microservices Context
Test Pyramid in Microservices ContextTest Pyramid in Microservices Context
Test Pyramid in Microservices ContextDhaval Dalal
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programmingDhaval Dalal
 
Currying and Partial Function Application (PFA)
Currying and Partial Function Application (PFA)Currying and Partial Function Application (PFA)
Currying and Partial Function Application (PFA)Dhaval Dalal
 
Creating Lazy stream in CSharp
Creating Lazy stream in CSharpCreating Lazy stream in CSharp
Creating Lazy stream in CSharpDhaval Dalal
 
Json Viewer Stories
Json Viewer StoriesJson Viewer Stories
Json Viewer StoriesDhaval Dalal
 
Mars rover-extension
Mars rover-extensionMars rover-extension
Mars rover-extensionDhaval Dalal
 
How Is Homeopathy Near To Yoga?
How Is Homeopathy Near To Yoga?How Is Homeopathy Near To Yoga?
How Is Homeopathy Near To Yoga?Dhaval Dalal
 
Approaching ATDD/BDD
Approaching ATDD/BDDApproaching ATDD/BDD
Approaching ATDD/BDDDhaval Dalal
 
Paradigms Code jugalbandi
Paradigms Code jugalbandiParadigms Code jugalbandi
Paradigms Code jugalbandiDhaval Dalal
 
Data Reconciliation
Data ReconciliationData Reconciliation
Data ReconciliationDhaval Dalal
 
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr20154-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015Dhaval Dalal
 
Jumping-with-java8
Jumping-with-java8Jumping-with-java8
Jumping-with-java8Dhaval Dalal
 
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar20153-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015Dhaval Dalal
 
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015Dhaval Dalal
 
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-Issue
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-IssueCodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-Issue
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-IssueDhaval Dalal
 
Grooming with Groovy
Grooming with GroovyGrooming with Groovy
Grooming with GroovyDhaval Dalal
 
Language portfolio
Language portfolioLanguage portfolio
Language portfolioDhaval Dalal
 

More from Dhaval Dalal (20)

Test Pyramid in Microservices Context
Test Pyramid in Microservices ContextTest Pyramid in Microservices Context
Test Pyramid in Microservices Context
 
Code Retreat
Code RetreatCode Retreat
Code Retreat
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programming
 
Currying and Partial Function Application (PFA)
Currying and Partial Function Application (PFA)Currying and Partial Function Application (PFA)
Currying and Partial Function Application (PFA)
 
Creating Lazy stream in CSharp
Creating Lazy stream in CSharpCreating Lazy stream in CSharp
Creating Lazy stream in CSharp
 
Json Viewer Stories
Json Viewer StoriesJson Viewer Stories
Json Viewer Stories
 
Value Objects
Value ObjectsValue Objects
Value Objects
 
Mars rover-extension
Mars rover-extensionMars rover-extension
Mars rover-extension
 
How Is Homeopathy Near To Yoga?
How Is Homeopathy Near To Yoga?How Is Homeopathy Near To Yoga?
How Is Homeopathy Near To Yoga?
 
Approaching ATDD/BDD
Approaching ATDD/BDDApproaching ATDD/BDD
Approaching ATDD/BDD
 
Paradigms Code jugalbandi
Paradigms Code jugalbandiParadigms Code jugalbandi
Paradigms Code jugalbandi
 
Data Reconciliation
Data ReconciliationData Reconciliation
Data Reconciliation
 
CodeRetreat
CodeRetreatCodeRetreat
CodeRetreat
 
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr20154-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015
4-Code-Jugalbandi-destructuring-patternmatching-healthycode#apr2015
 
Jumping-with-java8
Jumping-with-java8Jumping-with-java8
Jumping-with-java8
 
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar20153-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015
3-CodeJugalbandi-currying-pfa-healthycodemagazine#mar2015
 
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015
CodeJugalbandi-Sequencing-HealthyCode-Magazine-Feb-2015
 
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-Issue
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-IssueCodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-Issue
CodeJugalbandi-Expression-Problem-HealthyCode-Magazine#Jan-2015-Issue
 
Grooming with Groovy
Grooming with GroovyGrooming with Groovy
Grooming with Groovy
 
Language portfolio
Language portfolioLanguage portfolio
Language portfolio
 

Domain languageacceptancetests

  • 1. FIT Framework Integrated Testing for Writing Acceptance Tests Agile Software Community of India (ASCI) Mumbai Conference, 27th August 2005 Conan Dalton conan.dalton@bnpparibas.com Dhaval Dalal dalal_dhaval@yahoo.com
  • 2. What are we talking about? • Automated acceptance testing – testing approach that allows business users completely specify an application using automated test scripts. • a.k.a. – Customer Tests – Functional Tests – System Tests conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 3. Initial Example Demo EMI Calculator From Concept to Completion Dhaval Dalal
  • 4. Specify ! Create ! Run • Customers create Tables in a document. – Tables describe specific examples of how the software should work. – Programmers format tables in a FIT-friendly format. • Programmers create Fixtures. – Fit uses "fixtures," to connect tables to software. – Fixtures interpret Tables. – Programmers write the fixture code. • FIT runs the document against the system conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 5. fit.Summary • FIT allows tests to be written in the domain language – Uses reflection to bind test script elements to "fixtures" • FIT fosters Collaboration – Business Analysts along with customers specify the tests. – Programmers and Testers increase test coverage from customers examples. • FIT tests are automated – Supports Immediate Feedback • FIT works with HTML documents. – Reads/Writes results back as HTML – Test verdicts annotated with messages and colour – Summarizes test results (right, wrong, in error) conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 6. Specification ! Test Here is the requirement here is a requirement: “User may borrow up to 2 books at a time” conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 7. Specification ! Test Here are the detailed UI • step-by-step in the UI steps to implement the requirement select “Harry Potter” in "available" list click on "borrow" button select "Refactoring" in "available" list click on "borrow" button select “XP Explained" in "available" list check that "borrow" button is unavailable ... conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 8. Specification ! Test Here are the detailed UI Here is the steps to requirement implement the requirement Is there a middle ground? This is inadequate This is meaningless for development to business people conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 9. The Middle Ground • Use a domain-specific language borrow “Harry Potter” borrow “Refactoring” cannot borrow “XP Explained” return “Refactoring” borrow “XP Explained” cannot borrow “Refactoring” conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 10. The hard part Developing the fixtures to support automated tests at system boundaries in a language that's meaningful to the user conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 11. Web Test Example Demo Conan Dalton
  • 12. Acceptance Test Better Practices • Automate tests • Test continuously • Develop tests collaboratively • Use domain language • Evolve tests • Define system boundaries conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 13. FIT Ports and Alternatives • Ports – Available: Java, .NET, Perl, Python – In Progress: C++, Ruby • Open-source alternatives – Selenium, Exactor, TextTest • Other Commercial Tools – WinRunner, Silk • Any other home-made testing framework – it's not difficult to write! conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 14. References • Ward Cunningham’s acceptance testing framework – Official FIT site (http://fit.c2.com) • FIT Library – Rick Mugridge (http://www.cs.auckland.ac.nz/~rick/FitLibrary) • Homebrew Test Automation – Bret Pettichord (http://www.pettichord.com) conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com
  • 15. Thank-You Conan Dalton conan.dalton@bnpparibas.com Dhaval Dalal dalal_dhaval@yahoo.com conan.dalton@bnpparibas.com, dalal_dhaval@yahoo.com