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

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 

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.