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

Effective Interviewing
Effective InterviewingEffective Interviewing
Effective InterviewingAdrian Howard
 
Lean personas: discover your real customers
Lean personas: discover your real customersLean personas: discover your real customers
Lean personas: discover your real customersAdrian Howard
 
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...Adrian Howard
 
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 2015Adrian Howard
 
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 2015Adrian Howard
 
Experimenting with Experimental Ethics
Experimenting with Experimental EthicsExperimenting with Experimental Ethics
Experimenting with Experimental EthicsAdrian Howard
 
How To Fail At Customer Interviewing
How To Fail At Customer InterviewingHow To Fail At Customer Interviewing
How To Fail At Customer InterviewingAdrian Howard
 
Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Adrian Howard
 
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 2014Adrian Howard
 
UX Interviewing Skills
UX Interviewing SkillsUX Interviewing Skills
UX Interviewing SkillsAdrian Howard
 
Innovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody InnovationInnovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody InnovationAdrian Howard
 
Interviewing Skills Workshop, Cambridge, May 2014
Interviewing Skills Workshop, Cambridge, May 2014Interviewing Skills Workshop, Cambridge, May 2014
Interviewing Skills Workshop, Cambridge, May 2014Adrian Howard
 
Lean UX, Google Launchpad London, 2014
Lean UX, Google Launchpad London, 2014Lean UX, Google Launchpad London, 2014
Lean UX, Google Launchpad London, 2014Adrian Howard
 
Interviewing Workshop, Lean UX NYC 2014
Interviewing Workshop, Lean UX NYC 2014Interviewing Workshop, Lean UX NYC 2014
Interviewing Workshop, Lean UX NYC 2014Adrian 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

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
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
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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 organizationRadu Cotescu
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
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
 
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 MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Recently uploaded (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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...
 
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
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
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
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
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
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

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.