AZOV тесты
Общие сведения
AZOV тесты (или Shallow тесты) – тесты, которые могут гарантировать только отсутствие падения функции при ее вызове с определенными корректными параметрами и в корректном окружении. В некоторых случаях возможна проверка возвращаемого результата или кода ошибки. Для создания таких тестов нами используются специальная технология и инструменты. Все вмете они составляют инфраструктуру AZOV. Генерация тестов происходит автоматически по некоторому описанию функций, их параметров, типов и их взаимосвязей в базе данных LSB. Осносная идея технологии состоит в добавлении в базу данных информации, необходимой для создания корректной цепочки вызовов функций, соответствующей типичному использованию данных функций в программе.
Инфраструктура AZOV
Инфраструктура AZOV разработана для автоматического создания "поверхностных" тестов, т.е. тех, которые проверяют присутствие функции в библиотеке и отсутствие критических ошибок при типичном ее использовании. Данная технология позволяет создавать множество API тестов для большой системы, используя структурированную семантическую информацию о целевых интерфейсах из базы данных LSB. Роль разработчика тестов заключается в добавлении такой информации для типа каждого аргумента целевой функции.
Инфраструктура Azov состоит из следующих компонентов:
- Расширение базы данных LSB включает 11 новых таблиц (связанных с существующими в БД LSB), содержащими дополнительную информацию о корректной инициализации параметров, окружения для запуска целевого интерфейса, а также об ограничениях на возвращаемое значение.
- Веб интерфейс используется разработчиком для заполнения расширения к базе данных.
- Генератор кода служит для автоматического создания тестов, используя информацию из расширенной базы данных. Имеет возможность создавать тесты как в виде С-программы (для их отладки) так и в T2C формате (для переиспользования средств запуска тестов и генерации отчетов).
Основная идея технологии - автоматическое создание тестов, осуществляющих типичные вызовы целевых функции и проверяющих (по возможности) возвращаемые значения. Для многих функций корректный вызов подрузомевает предварительную инициализацию окружения и значений параметров, что в свою очередь может требовать вызова других функций. В расширенной базе данных Azov хранится информация о разных способах инициализации для разных окружений и семантическая информация о типах параметров (уточняющие типы). Данная информация может быть переиспользована в других интерфейсах каждый раз, когда такой же семантический тип используется, что значительно ускоряет разработку тестов. Корректные значения для простых типов создаются генератором полностью автоматически. После определения путей инициализации параметров (и, если необходимо, окружения) генератор автоматически компонует тест для данной функции.
Ключевые особенности:
- Разработка тестов для большого числа функций требует небольших усилий на одну функцию. Эффективность технологии проявляется наилучшим образом при разработке тестов для библиотек, содержащих более 100 функций.
- Полностью автоматическое создание тестов происходит на основе информации из расширенной базы LSB.
- Переиспользование существующей в базе LSB информация о функциях.
- Дополнительная информация заносится в базу вручную через графический интерфейс.
- Инструменты из инфраструктуры T2C могут быть использованы для отладнки и запуска тестов.
Дальнейшие разработки генератора тестов, привели к созданию отдельного инструмента, работающего без привязки к информации в базе данных - API Sanity Autotest.
Результаты
С помощью технологии Azov были разработаны тестовые наборы для библиотек Qt 3, Qt 4 и xml 2. Эти наборы включены в систему сертификации на стандарт LSB 4.0.
Azov-Qt3:
Библиотека | Кол-во тестируемых функций |
libqt-mt | 9792 |
Azov-Qt4:
Библиотека | Кол-во тестируемых функций |
libQtCore | 2066 |
libQtGui | 7439 |
libQtNetwork | 406 |
libQtOpenGL | 84 |
libQtSql | 362 |
libQtSvg | 66 |
libQtXml | 380 |
Total | 10803 |
Azov-xml2:
Библиотека | Кол-во тестируемых функций |
libxml2 | 1284 |
Сткачать
Последние версии Azov-Qt3 и Azov-Qt4 тетов можно скачать на этой странице.
Последнюю версию Azov-xml2 тестов можно скачать на этой странице.
Весь набор Azov тестов может быть запущен с помощью Distribution Checker или вручную.