В процессе создания РОСЫ мы не только разрабатываем и адаптируем различные пакеты для дистрибутива, но и работаем над инструментами для разработчиков.

Одним из таких инструментов является API Sanity Checker, предназначенный для полностью автоматической генерации тестов для С/C++ библиотек. Для работы инструмента необходимы только заголовочные файлы с декларациями библиотечных функций (и всех необходимых типов данных). На основе такой информации, API Sanity Checker генерирует тесты, вызывающие каждую из функций библиотеки с необходимыми аргументами. Такие автоматически сгенерированные тесты обычно служат шаблоном для написания более полных наборов (с перебором различных значений параметров, их комбинаций и т.п.).

Инструмент является полностью открытым (исходный код можно найти здесь) и может использоваться (и используется) всеми желающими. Например, не так давно API Sanity Checker был интегрирован во внутренний цикл разработки популярной open-source библиотеки GammaLib. В результате применения инструмента в библиотеке были найдены и исправлены 11 ошибок (https://cta-jenkins.irap.omp.eu/job/gammalib-sanity/).

Мы рекомендуем всем апстрим разработчикам различных Си/C++ библиотек последовать этому успешному примеру. Затрачиваемые ресурсы для создания (автоматической генерации) тестового набора минимальны, а количество найденных ошибок может быть существенным.