Test Anything Protocol ( TAP ) — это протокол для связи между тестовой логикой, называемой производителем TAP, и тестовой обвязкой в языково-независимом режиме. Первоначально разработанные для модульного тестирования интерпретатора Perl в 1987 году, производители и парсеры теперь доступны для многих платформ разработки.
TAP был создан для первой версии языка программирования Perl (выпущенной в 1987 году) как часть основного тестового комплекта Perl ( t/TEST
). Test::Harness
Модуль был написан Тимом Бансом и Андреасом Кёнигом, чтобы позволить авторам модулей Perl воспользоваться преимуществами TAP. Он стал фактическим стандартом для тестирования Perl. [1] [2] [3]
Разработка TAP, включая стандартизацию протокола, написание производителей и потребителей тестов, а также пропаганду языка, координируется на веб-сайте TestAnything. [4]
Как протокол, не зависящий от языка программирования, библиотеки модульного тестирования TAP вышли за рамки своих корней Perl и были разработаны для различных языков и систем, таких как PostgreSQL , [5] MySQL , [6] JavaScript [7] и других реализаций, перечисленных на сайте проекта. [4] Библиотека TAP C включена как часть дистрибутива FreeBSD Unix и используется в наборе регрессионных тестов системы. [8]
Формальная спецификация для этого протокола существует в модулях TAP::Spec::Parser
и TAP::Parser::Grammar
. Поведение модуля Test::Harness
является фактической реализацией стандарта TAP, а описание спецификации можно найти на https://testanything.org.
Проект по созданию стандарта IETF для TAP был инициирован в августе 2008 года на YAPC ::Europe 2008. [4]
Вот пример общего формата TAP:
1..48 ok 1 Описание # Директива # Диагностика....ok 47 Описание ok 48 Описание
Например, вывод тестового файла может выглядеть так:
1..4 ok 1 - Входной файл открыт неправильно 2 - Первая строка входных данных верна. Дополнительные результаты теста 2. Могут быть произвольное количество строк для любого вывода пока есть хоть какой-то вид пробела в начале строки.ok 3 - Прочитать остальную часть файла #TAP meta information not ok 4 - Коротко изложено правильно # TODO : еще не написано