Test Anything Protocol

From Wikipedia, the free encyclopedia

Template:Short description Script error: No such module "For".

Page Module:Message box/ambox.css has no content.

The Test Anything Protocol (TAP) is a protocol for communicating between test logic, called a TAP producer, and a test harness in a language-agnostic way. Originally developed for unit testing of the Perl interpreter in 1987, producers and parsers are now available for many development platforms.

History

TAP was created for the first version of the Perl programming language (released in 1987), as part of Perl's core test harness (t/TEST). The Test::Harness module was written by Tim Bunce and Andreas König to allow Perl module authors to take advantage of TAP. It became the de facto standard for Perl testing.[1][2][3]

Development of TAP, including standardization of the protocol, writing of test producers and consumers, and evangelizing the language is coordinated at the TestAnything website.[4]

As a protocol which is agnostic of programming language, TAP unit testing libraries expanded beyond their Perl roots and have been developed for various languages and systems such as PostgreSQL,[5] MySQL,[6] JavaScript[7] and other implementations listed on the project site.[4] A TAP C library is included as part of the FreeBSD Unix distribution and is used in the system's regression test suite.[8]

Specification

A formal specification for this protocol exists in the TAP::Spec::Parser and TAP::Parser::Grammar modules. The behavior of the Test::Harness module is the de facto TAP standard implementation, along with a writeup of the specification on TestAnything.org.[4]

A project to produce an IETF standard for TAP was initiated in August 2008, at YAPC::Europe 2008.[4][needs update]Template:DMCA

Examples

Here's an example of TAP's general format:

1..48
ok 1 Description # Directive
# Diagnostic
....
ok 47 Description
ok 48 Description

For example, a test file's output might look like:

1..4
ok 1 - Input file opened
not ok 2 - First line of the input valid.
    More output from test 2. There can be
    arbitrary number of lines for any output
    so long as there is at least some kind
    of whitespace at beginning of line.
ok 3 - Read the rest of the file
#TAP meta information
not ok 4 - Summarized correctly # TODO: not written yet

See also

References

Page Template:Reflist/styles.css has no content.

  1. ^ Page Module:Citation/CS1/styles.css has no content."A Perl toolbox for regression tests : Testing Tools". Nnc3.com. Archived from the original on 27 October 2017. Retrieved 27 October 2017.
  2. ^ Page Module:Citation/CS1/styles.css has no content.Schilli, Mike. "Print as Print Can » Linux Magazine". Linux Magazine. Retrieved 27 October 2017.
  3. ^ Page Module:Citation/CS1/styles.css has no content.Szabo, Gabor. "TAP - Test Anything Protocol". Perl Maven. Retrieved 2019-08-07.
  4. ^ a b c d Page Module:Citation/CS1/styles.css has no content."The Test Anything Protocol website". TestAnything. Retrieved February 17, 2025.
  5. ^ Page Module:Citation/CS1/styles.css has no content.McClive, Simon (2017-09-21). "Unit testing Postgres with pgTAP". Medium. Retrieved 2019-08-07.
  6. ^ Page Module:Citation/CS1/styles.css has no content.Gravelle, Rob (2012-08-13). "Testing Your MySQL Stored Procedures with MyTAP". Database Journal. Retrieved 2019-08-07.
  7. ^ Page Module:Citation/CS1/styles.css has no content."Node Tap". Node Tap. Retrieved 2019-08-07.
  8. ^ Page Module:Citation/CS1/styles.css has no content."TAP(3) manual page". FreeBSD. Retrieved 2019-08-07.
  • Lua error in Module:Official_website at line 94: attempt to index field 'wikibase' (a nil value).