Введение
Комплект совместимости технологий (TCK) — это набор тестов, который как минимум формально проверяет соответствие конкретной заявленной реализации запроса спецификации Java (JSR). Это один из трех обязательных компонентов для утвержденного JSR в рамках Java Community Process, а именно: спецификация JSR, эталонная реализация JSR и комплект совместимости технологий (TCK).
the JSR specification
the JSR reference implementation
the Technology Compatibility Kit (TCK)
Содержание и архитектура
ТКК обычно получают у ведущего разработчика спецификации данного JSR. Они обычно (но не всегда) состоят из графического хост-приложения, которое взаимодействует по протоколу TCP/IP с тестируемым устройством или виртуальной машиной Java. Устройство обычно получает тесты по протоколу HTTP, а результаты отправляет обратно в хост-приложение аналогичным образом. Такая независимость позволяет использовать ТКК для тестирования виртуальных машин на устройствах, таких как мобильные телефоны CLDC, которые не обладают достаточной вычислительной мощностью для запуска полноценного хост-приложения ТКК. Тесты, содержащиеся в JSR, предположительно, основаны на положениях спецификации JSR. Для каждого API предусмотрен набор тестов, чтобы убедиться в его корректной работе, включая обработку ошибок. Чтобы подтвердить соответствие JSR, реализация Java должна успешно пройти соответствующий ТКК. Любые (редкие) исключения должны быть согласованы с ведущим разработчиком спецификации. В связи с этим ТКК играют важную роль при реализации JSR. Первым важным этапом является запуск ТКК, что требует определенной степени зрелости как реализации Java, так и базового сетевого стека. Затем ТКК необходимо правильно настроить, поскольку они должны быть достаточно гибкими для работы с любой реализацией и имеют множество опций. (Например, перечисление всех поддерживаемых форматов мультимедиа и связанных с ними необязательных элементов управления для JSR135). Некоторые тесты также требуют предварительной настройки, что особенно сложно для тестов, проверяющих корректную обработку ошибок, поскольку реализацию Java необходимо привести в определенное состояние для возникновения каждой ошибки. Наконец, необходимо исправить каждый проваленный тест, что обычно осуществляется с помощью стандартных механизмов отслеживания дефектов. Некоторые разработчики Java считают свой продукт практически завершенным после успешного прохождения ТКК. Хотя ТКК действительно достаточно всесторонние, они не охватывают многие аспекты, такие как производительность и необязательные функции. Единственный способ устранить эти недостатки – это проведение обширного реального тестирования, хотя дополнительные наборы тестов, такие как JDTS, могут оказаться полезными.
TCK для платформы Java
Комплект совместимости технологий для конкретной платформы Java называется Java Compatibility Kit (JCK). Это обширный набор тестов, используемый Oracle и лицензиатами для обеспечения совместимости реализаций платформы. JCK для исходного кода Java 6.0 был выпущен. Изначально сопутствующая лицензия не разрешала пользователям компилировать или запускать тесты, однако право на просмотр кода не связано с рисками компрометации, и публичные комментарии к исходному коду допускаются. Лицензионное соглашение OpenJDK Community TCK v 2.0 было опубликовано для спецификации Java SE 7 начиная с декабря 2011 года.
Рамочная система ТКК
Инструмент JavaTest harness на сегодняшний день является наиболее распространенной системой модульного тестирования, используемой для проверки соответствия реализации. Это универсальная система тестирования, разработанная для запуска тестов TCK. Однако некоторые спецификации также используют JUnit или TestNG.
Лицензия и споры
После выпуска OpenJDK компанией Sun, Sun выпустила специальную лицензию, разрешающую запуск TCK в контексте OpenJDK для любой реализации, распространяемой по лицензии GPL и существенно основанной на OpenJDK. Это условие лишает проект Apache Harmony права использовать TCK, совместимого с лицензией Apache. 9 ноября 2010 года Apache Software Foundation пригрозила выйти из Java Community Process, если ей не будет предоставлена лицензия TCK для Harmony без каких-либо дополнительных ограничений. 9 декабря 2010 года Apache Software Foundation сложила с себя полномочия члена Исполнительного комитета Java SE/EE.