SlideShare a Scribd company logo
1 of 30
The Test Anything Protocol
             or
  Small Testing Tools Loosely Joined
                      or
How to make large automated test suites less of a
               complete PITA.
xUnit / declarative
testing / load testing /
  procedural tests /
record|replay / TDD /
      BDD / etc.
JUnit / SUnit / TestNG /
Test::Builder / Test::Unit /
   jsUnit / PHPUnit /
 Cucumber / Selenium /
  Watir / RSpec / JSpec /
Problem:
Using them together
Integrating automated
 test suites is a PITA
Everything is tightly
     coupled
Writing new test
environments is a PITA
Everybody has to figure
 out how to produce,
 consume and report
      test results
TAP aims to help
Test Producer



    TAP



Test Consumer
BDD       xUnit       Load Tests




TAP       TAP            TAP



      Test Consumer
Test Producer



                  TAP



Continuous
                  IDE         Reporting
Integration
Small Pieces Loosely
       Joined
1..3
ok 1 - we can foo
ok 2 - we can bar
not ok 3 - we can ni
1..3
ok 1 - we can foo
ok 2 - we can bar
not ok 3 - we can ni
1..3
ok 1 - we can foo
ok 2 - we can bar
not ok 3 - we can ni
1..3
ok 1 - we can foo
ok 2 - we can bar
not ok 3 - we can ni
1..3
ok 1 - we can foo
ok 2 - we can bar
not ok 3 - we can ni
And there’s more…
• Diagnostic output
• TAP versions
• TODO / SKIP tests
• Nested TAP (new-ish)
• Structured diagnostics (in dev, in PHPUnit)
• Draft IETF Standard (WIP)
TAP Philosophy

• Work on the TAP as a stream
• The TAP producer should be pluggable
• The TAP consumer should be pluggable
• Gracefully handle future upgrades to TAP
Working well in the Perl
 world for years and
  years and years…
Not just Perl
•   PHPUnit (PHP)              •   PLUTO (Oracle PL/SQL)

•   TAPS (C#)                  •   pgTAP (PostgreSQL)

•   libtap (C)                 •   tap-functions (sh)

•   Test.Simple (JavaScript)   •   etap (Erlang)

•   PyTAP (Python)             •   arctap.arc (Arc)

•   Bacon (Ruby)               •   libtap++ (C++)

•   Forth/TAP (Forth)          •   JTap (Java)
Smolder
CPAN Testers
testanything.org
You should ask
questions now :-)
          adrianh@quietstars.com
               twitter.com/adrianh
                    quietstars.com

More Related Content

More from Adrian Howard

More from Adrian Howard (20)

Effective Interviewing
Effective InterviewingEffective Interviewing
Effective Interviewing
 
Iterative persona
Iterative personaIterative persona
Iterative persona
 
Lean personas: discover your real customers
Lean personas: discover your real customersLean personas: discover your real customers
Lean personas: discover your real customers
 
Effective Customer Interviewing: How to use interviews to discover business v...
Effective Customer Interviewing: How to use interviews to discover business v...Effective Customer Interviewing: How to use interviews to discover business v...
Effective Customer Interviewing: How to use interviews to discover business v...
 
Experimenting with the Ethics of Experimentation, Spark the Change 2015
Experimenting with the Ethics of Experimentation, Spark the Change 2015Experimenting with the Ethics of Experimentation, Spark the Change 2015
Experimenting with the Ethics of Experimentation, Spark the Change 2015
 
User Story Mapping, UX Lisbon, June 2015
User Story Mapping, UX Lisbon, June 2015User Story Mapping, UX Lisbon, June 2015
User Story Mapping, UX Lisbon, June 2015
 
Experimenting with Experimental Ethics
Experimenting with Experimental EthicsExperimenting with Experimental Ethics
Experimenting with Experimental Ethics
 
Failure Swapshop
Failure SwapshopFailure Swapshop
Failure Swapshop
 
Lean Persona
Lean PersonaLean Persona
Lean Persona
 
How To Fail At Customer Interviewing
How To Fail At Customer InterviewingHow To Fail At Customer Interviewing
How To Fail At Customer Interviewing
 
Lean Persona
Lean PersonaLean Persona
Lean Persona
 
Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014
 
Fundamentals of Lean UX, Agile on the Beach 2014
Fundamentals of Lean UX, Agile on the Beach 2014Fundamentals of Lean UX, Agile on the Beach 2014
Fundamentals of Lean UX, Agile on the Beach 2014
 
UX Interviewing Skills
UX Interviewing SkillsUX Interviewing Skills
UX Interviewing Skills
 
Innovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody InnovationInnovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody Innovation
 
Incremental Persona
Incremental PersonaIncremental Persona
Incremental Persona
 
Mythbusting Lean UX
Mythbusting Lean UXMythbusting Lean UX
Mythbusting Lean UX
 
Interviewing Skills Workshop, Cambridge, May 2014
Interviewing Skills Workshop, Cambridge, May 2014Interviewing Skills Workshop, Cambridge, May 2014
Interviewing Skills Workshop, Cambridge, May 2014
 
Lean UX, Google Launchpad London, 2014
Lean UX, Google Launchpad London, 2014Lean UX, Google Launchpad London, 2014
Lean UX, Google Launchpad London, 2014
 
Interviewing Workshop, Lean UX NYC 2014
Interviewing Workshop, Lean UX NYC 2014Interviewing Workshop, Lean UX NYC 2014
Interviewing Workshop, Lean UX NYC 2014
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

The Test Anything Protocol

Editor's Notes

  1. There are lots of different kinds of automated test you can write
  2. There are lots of tools for implementing different kinds of testing in the language of your choice
  3. The problem comes when you have multiple languages and testing models in the same system.
  4. Different languages, different testing models, different outputs, different inputs.
  5. Makes integrating different systems hard.
  6. Writing your own custom piece of automated testing is also a pain.
  7. And everybody does it differently. The cause of the earlier problem.
  8. TAP = Test Anything Protocol
  9. Simple model. A test producer streams out TAP that is read by a test consumer.
  10. So we can have different kinds of automated test framework all output TAP - and they can all be understood by a single consumer.
  11. ... and we can have different kinds of test consumer that do interesting things with the results of your tests.
  12. It’s a good way of building systems.
  13. This is about the simplest possible example of TAP.
  14. This is the plan - it says we’re running three tests.
  15. This indicates a passing test.
  16. This is a human-readable summary of the passing test
  17. Failing tests are just prefixed by “not”.
  18. TAP deals with more than just the simple case
  19. Some examples of how TAP can be used.
  20. Takes TAP output
  21. Shows you passing and failing tests
  22. Draws you pretty graphs over time (for certain definitions of “pretty”)
  23. Another example
  24. Massively distributed system for testing Perl modules from CPAN on multiple platforms, dependency variations, perl versions, etc.
  25. This is where you should go to find out more about TAP.
  26. Questions? Just drop me a line.