Технические вопросы
Если Вы не нашли ответа на свой вопрос, обращайтесь - мы будем рады помочь.
- Что тестируется в проекте OLVER?
- Каким образом получаются тесты на основе формальных спецификаций требований?
- Чем тесты Центра отличаются от существующих?
- С чего стоит начать знакомство с технологией UniTESK?
- Где можно найти описание спецификационного языка SeC?
- Что тестируется в проекте OLVER?
Объектом тестирования проекта OLVER являются системные библиотеки, определенные в стандарте LSB Core 3.1. Тестируется поведение 1532 интерфейсов этих библиотек (список конкретных функций можно найти в разделе Спецификации). Однако стоит отметить, что многие из этих функций в своей работе опираются на вызовы системных интерфейсов ядра Linux. Кроме того, может иметь место влияние аппаратуры. Таким образом тестируется конфигурация Linux системы в целом, которую определяет комбинация версии ядра (включая отдельные патчи), версий системных библиотек, параметров их сборки и собственно конфигурации аппаратуры, на которой это все работает. Побробнее см. Объект тестирования. - Каким образом получаются тесты на основе формальных спецификаций требований?
Требования стандартов, выраженные в виде формальных спецификаций и дополненные тестовыми сценариями, позволяют получать тесты, проверяющие соответствие этим требованиям, автоматически. Процесс генерации и последующего запуска тестов позволяет устанавливать различные параметры (например, тщательность тестирования, особенности целевой системы, выбор одного из нескольких допустимых стандартом вариантов поведения, критерии остановки и т.п.). Для создания тестовых наборов для ОС Linux в Центре используются инструменты CTesK, являющиеся реализацией общей технологии UniTESK для языка C. Подробнее о нашем процессе создания тестов можно посмотреть здесь. - Чем тесты Центра отличаются от существующих?
Существующие тесты используют традиционный подход, когда требования стандарта к одной функции разбиваются на несколько случаев, для каждого из которых составляется отдельный тест, как правило, в виде самостоятельной программы. При этом и само разбиение, и тесты строятся "ad hoc" - так, как это покажется удобным или правильным разработчику. Качество таких тестов определяется опытностью разработчика и его внимательностью при выполнении этой работы. Мы строим тесты по-другому: сначала мы внимательно анализируем стандарт, чтобы понять, какие ограничения он накладывает на работу функций, записываем эти ограничения в виде формальных спецификаций, а затем анализируем их для нескольких функций сразу, чтобы выяснить какие существенно различные ситуации могут сложиться при работе системы. Эта информация тоже записывается формально и позволяет проверить все требования во всех обнаруженных ситуациях. Сами тесты строятся автоматически из этих двух описаний, говорящих что проверять и в каких случаях. Систематический перебор возможных ситуаций выполняется алгоритмом, похожим на робота, пытающегося обойти лабиринт, о плане которого он сначала ничего не знает, но, записывая информацию о пройденных участках, постепенно строит полную карту лабиринта. При этом построенный им путь - цепочка вызовов отдельных функций - оказывается тестом, покрывающим в ходе работы все нужные ситуации. Подробнее о нашем процессе создания тестов можно посмотреть здесь.Конечно, вдумчивый и аккуратный разработчик тестов способен вручную написать тесты аналогичной полноты. Мы, однако, перекладываем большую часть работы на компьютер, и получаем их с меньшими усилиями. Приложив аналогичные усилия для создания тестов вручную, практически невозможно получить результат такого же качества.
- С чего стоит начать знакомство с технологией UniTESK?
Наиболее эффективным способом изучения технологии UniTESK и ее конкретных инструментов является прохождение специальных тренингов, проводимых в Институте системного программирования РАН. Однако получить представление о технологии и попробовать освоить ее самостоятельно можно, используя документацию на сайте UniTESK. Кроме того, полезно ознакомиться с разделами Технологии и Публикации данного сайта. - Где можно найти описание спецификационного языка SeC?
Документацию по языку SeC можно загрузить с сайта http://unitesk.com/. Там же можно найти дополнительную информацию о технологии и использовании инструментов CTesK.