Институт системного программирования им. В.П. Иванникова РАН


UniTESK

Начало проекта – 1999 год.

UniTESK - это технология тестирования программных интерфейсов (API), которая в первую очередь предназначена для модульного тестирования. Название UniTESK расшифровывается как Unified TEsting Specification based toolKit (Унифицированный набор инструментов для тестирования на основе спецификаций). Унифицированность UniTESK обеспечивается тем, что общая методология тестирования и общая архитектура может быть реализована для тестирования модулей на практически всех языках программирования. В настоящее время имеются реализации UniTESK для C (CTESK), C++ (C++TESK), Java (JavaTESK и Summer), Python (PyTESK).

Работы над UniTESK начались в 1999 году. В основу концепции были положены идеи технологии KVEST, разработанной в ИСП РАН в 1994-1998 годах для верификации ядра операционной системы реального времени канадской компании Nortel - пионера цифровой телефонии. Технологии KVEST и UniTESK в современной терминологии относятся к классу инструментов построения тестов на основе формальных спецификаций или формальных моделей (Specification Based Testing – SBT, Model Based Testing - MBT). Эти технологии признаны весьма эффективными, так как позволяют обеспечить высокое качество тестирование даже в условиях отсутствия доступа к исходному коду целевых систем. Вместе с тем, внедрение SBT и MBT технологий встречается в промышленности с большими проблемами, так как инженерам-тестировщикам приходится осваивать новые для них языки и техники разработки формальных спецификаций и обобщенных описаний логики тестирования. Учитывая опыт внедрения KVEST в компании Nortel в технологии в UniTESK было предложено отказаться от использования академических языков формальной спецификации при описании программных контрактов целевых систем и описывать их несложных расширениях обычных языков программирования. В последних реализациях UniTESK, в C++TESK и PyTESK уже удалось отказаться и от расширений языка, спецификации описываются на стандартном языке программирования.

Технология UniTESK и ее реализации для различных языковых платформ развивались в процессе применения UniTESK в проектах тестирования крупных программных комплексов. Наиболее значимыми проектами применения UniTESK являются следующие:
• Тестирование реализации протокола IPv6, Заказчик - Microsoft Research. Использовался инструмент CTESK. 2000-2002.
• Тестирование экспериментальной разработки Java run-time environment, созданной в Intel. Использовался JavaTESK. 2004-2005.
• Тестирование распределенной инфраструктуры биллинга комании Вымпелком, с 2005 по настоящее время. Использованлись инструменты JavaTESK и ОТК. С 2005 по н.в.
• Проект OLVER. Формальная спецификация и тестовый набор для интерфейсов стандарта Linux Standard Base (LSB). Использовались инструменты CTESKT2C, Azov. Заказчик – Минобрнауки РФ. 2005-2007.
• Разработка тестов на соответствие стандарту POSIX ОС реального времени ОС2000. Заказчик –НИИСИ РАН. Использовался инструмент CTESK. 2007-2009.
• Набор тестов на соответствие стандарту ARINC-653 testing. Использовался инструмент CTESK. Заказчик –НИИСИ РАН. С 2008 по н.в.
• Симуляционное тестирование микропроцессоров. Использовались инструменты CTESK, C++TESK, MicroTESK. Заказчики – НИИСИ РАН и МЦСТ. С 2005 по н.в.

Технология UniTESK имеет два основных отличия от распространенных инструментов тестирования:

  • UniTESK позволяет описывать спецификации программного контракта модулей в форме пред- и постусловий на расширениях языков программирования (в случае C++TESK расширения не требуется);
  • вместо ручной разработки тестовых вариантов (test cases) UniTESK позволяет описать так называемый обобщенный сценарий – компактное описание логики теста, позволяющее генератору тестовых последовательностей автоматически вызвать каждый специфицированный интерфейс во всех вариантах его использования и проверить корректность полученного результата на соответствие заданному постусловию.

Ближайшими аналогами UniTESK в плане идеологии спецификации программного контракта являются JML (Java Moduling Language) и Eiffel. Ближайшим аналогом UniTESK как генератора тестов является инструмент Microsoft Spec Explorer. В отличие от Spec Explorer инструменты UniTESK распространяются под открытыми лицензиями и легко могут использоваться на всех операционных и программных платформах.

Современные объектно-ориентированные языки программирования позволяют разрабатывать формальные спецификации программных контрактов прямо на языке программирования, не требуя создания некоторого спецификационного расширения. Это существенно упрощает как освоение новой техники инженерами-тестировщиками, так и собственно разработку и поддержку систем тестирования, так вся ее разработка сводится к созданию библиотек. Благодаря этому современные реализации инструментов генерации тестов на основе спецификации программных контрактов отказываются от нестандартных расширений языка программирования. К этому, последнему поколению UniTESK-инструментов относятся иснтрументы PyTESK (для языка Python) и Summer (для языка Java).

Технологии

UniTESK

Исполнитель

Технологии программирования

Перейти к списку всех проектов