Тестирование на основе моделей: теория, инструменты

реклама
Тестирование на
основе моделей:
теория, инструменты,
применения
Группа спецификации,
верификации и тестирования
ИСП РАН
2004
Формирование группы
Совместный проект ИСП
и Nortel Networks
Разработка набора функциональных
тестов для ядра операционной
системы цифровой АТС
1994 – 1996
Результаты первого проекта





Разработана технология KVEST автоматизированного
построения тестов на основе формальных спецификаций
Язык спецификаций – RSL, язык реализации – Protel
Разработаны инструменты, поддерживащие KVEST
Разработаны формальные спецификации ядра ОС
~60 тыс. строк
Разработаны дополнительные компоненты тестов
~100 тыс. строк
Сравнение:
Код целевой системы
~250 тыс. строк
Сгенерированный тестовый набор ~850 тыс. строк
Найдено 230 ошибок
Из них около 20 приводит к «холодной перезагрузке» ОС
Проблемы тестирования
Тестирование призвано измерять
качество целевого ПО
 Как быть с качеством тестов?

 Проверка
соответствия требованиям
 «Достаточная» представительность
Ошибки и «возможные» ошибки
 Покрытие элементов кода
 Покрытие требований

Нужна модель
требований
KVEST: решения





Контрактные спецификации:
Предусловия и постусловия операций
Инварианты типов данных
Критерий качества тестирования – покрытие
спецификаций
Построение конечного автомата по спецификации и
заданному уровню покрытия
Построение теста во время выполнения – обход
конечного автомата
Повышение уровня абстракции при разработке
тестов
Контрактные спецификации



Предусловие описывает область
определения операции
sqrt(x)
pre x ≥ 0
Постусловие описывает ограничения на
правильные результаты операции
sqrt(x)
post result*result = x
Инвариант типа описывает условия
целостности его данных
Triangle
x,y,z : x+y≥z & x+z≥y & y+z≥x
Тестовые оракулы
Тестовые
воздействия
Формальные
спецификации
Целевая
система
Тестовый
оракул
?
Виды спецификаций

Контрактные




Близки к требованиям
Абстрактны или конкретны по выбору
Удобны для построения оракулов
Плохи для построения тестовых последовательностей

Исполнимые




Часто далеки от требований
Обычно слишком конкретны
Не вполне удобны для построения оракулов
Удобны для построения тестовых последовательностей

Аксиоматические




Далеки от требований
Обычно слишком абстрактны
Не вполне удобны для построения оракулов
Неудобны для построения тестовых последовательностей

Сценарные




Близки к требованиям
Абстрактны или конкретны по выбору
Не вполне удобны для построения оракулов
Неудобны для построения тестовых последовательностей
Критерии покрытия

Качество тестирования
измеряется степенью
покрытия тестируемой
системы

Покрытие спецификаций
близко к покрытию
требований
/* Контроллер лифта */
if
Inner_up  Outer_up
then
// двигаться вверх
else if
Inner_down  Outer_down
then
// двигаться вниз
else
// стоять на месте
Построение конечного автомата
параметры
область
определения
операции
2
3
1
цели покрытия
состояния
Выполнение теста I
Вычисление одного тестового воздействия
параметры
Был разработан инструмент,
автоматически вычисляющий
параметры в случае линейных
условий
2
3
1
состояния
текущее состояние
Выполнение теста II
Построение тестовой последовательности
1 2 3
Повышение уровня абстракции
Критерий покрытия
Целевая система
Медиатор
Спецификации –
модель поведения
Модель теста
Факторизация автомата
Неявное представление автомата
KVEST: архитектура теста
Скрипт-драйвер
на ЯР
Скрипт-драйвер
на RSL
Оракулы на ЯР
Оракулы на
RSL
Медиаторы на
ЯР
Целевая
система
Шаблон скриптдрайвера
Вставки в
шаблон
Спецификации
на RSL
Другие проекты до 2000 года I




Тестирование разных версий ядра ОС
АТС
Спецификация и тестирование системы
настройки телекоммуникационных
сервисов базового уровня
Перепроектирование подсистемы
управления очередями сообщений в ОС
АТС
Разработка методики
автоматизированной генерации
документации на естественном языке из
спецификаций
1996 –
2000
1997
1998
1998
Другие проекты до 2000 года II





Разработка технологии KVEST2
Спецификация и тестирование системы
управления очередями сообщений в
контроллере смарт-карт
Спецификация и тестирование системы
управления шлюзом IP-телефонии
Разработка технологии коверификационной разработки ПО
Спецификация и тестирование системы
поддержки распеределенных сервисов
1998
1999
1999
1999 –
2000
1999 –
2000
Недостатки KVEST

Несколько языков
 Трудности
построения связи между
спецификациями и реализацией
Недостаточная структурированность
теста
 Трудности обучения и внедрения

UniTesK

Один язык
 Спецификации
и другие компоненты тестов
разрабатываются на расширении целевого
языка
Лучшая структуризация тестов
 Интеграция с привычными средами
разработки

UniTesK: архитектура теста
Обходчик
Итератор
тестовых
воздействий
Сценарий
Оракулы на ЯР
Спецификации
Медиаторы на
ЯР
Медиаторы
Целевая
система
UniTesK: разработка тестов
Проетные
документы
Требования
Критерии
качества
Целевая
система
Выделение
интерфейса
Разработка
спецификаций
Спецификации
Разработка
сценариев
Тестовые
сценарии
Разработка
медиаторов
Медиаторы
Выполнение
тестов
Анализ
результатов
Тестовые
отчеты
Параллелизм: модели поведения
Асинхронность и распределенность
 Модели – асинхронные автоматы

!x
!y
!x
?b
!y
!z
?a
B : X* → P (R*)
ai ↦ { xi }
?e
?a
?a
!x
!y
B : X* → P (R*)
ai ↦ { yjxk…xlyn : k+…+l = i }
Распределенность
?a
?{a,b}
?b
?{a,a}
?{b,b}
?{a,a,a}
?{a,a,b}
Как моделировать реакции
на все возможные
комбинации входов?
Аксиома простого параллелизма :
Реакция на несколько одновременных входов
совпадает с реакцией на некоторую их
последовательность
Генерация тестовых входов
s14
s24
s33
s13
s23
s12
s22
s11
s21
s32
Целевая
система
s31
Вместо тестовой последовательности
используется набор последовательностей
Сбор реакций
11
r11
Целевая
система
r21
21
31
r12
r22
12
r23
22
32
23
r31
r32
r33
33
время
Реакции образуют частично упорядоченное
множество
Проверка корректности поведения
стимулы
реакции
Аксиома простого параллелизма






✕

Текущее состяние



Стационарное тестирование
Выполняем (мульти)последовательность и
ждем, пока система не «успокоится»
Покрытие стимулов и производные
Гарантировать покрытие нестационарных
состояний нельзя – требуются новые
гипотезы
Тестирование компиляторов
Спецификации
языка
Набор базовых
блоков модели
Итератор
комбинаций
Привязка
базовых блоков
Тестовые
программы
if(…)…else …
for(…;…;…)
Проверка корректности оптимизации
Тестовое
воздействие
Компилятор
Оптимизатор
?
==
Компилятор
Поддержка UniTesK





J@T
2000 – 2002
Java / NetBeans, Eclipse (план)
CTesK
2000 – 2001
C / Visual Studio 6.0, gcc
J@T–C++ Link
2002 – 2003
Java / NetBeans
Ch@se
2002 – 2003
C# / Visual Studio .NET 7.1
OTK
2002 – 2003
Инструмент построения тестов для компиляторов
Применения UniTesK

Реализации IPv6






- 2001-2003
Microsoft Research
Мобильный IPv6 (в Windows CE 4.1)
Октет
Компиляторы Intel
Инструменты поддержки UniTesK
Пилотные проекты




- 2001-2003
- 2001-2003
- 2003
ГосНИИАС
Банковская система ведения данных о клиентах
Библиотека классов для разработки приложений уровня
предприятия
Биллинговая система
Участие в обучении

МГУ




МФТИ



Курс «Формальные спецификации программ»
Спецкурс «Методы автоматизации тестирования»
Спецсеминар «Верификация и валидация ПО»
Курс «Языки формальных спецификаций»
Спецсеминар «Верификация и валидация ПО»
Тренинги по UniTesK




Ланит-Терком, Россия
Университет Саарланда, Германия
Systematic Software Engineering, Дания
Luxoft, Россия
Состав группы
30
25
20
Студенты
Аспиранты
15
Сотрудники без степени
Кандидаты наук
10
Доктора наук
5
0
1994
1996
1998
2001
2004
Контакты
Сайт группы
http://www.ispras.ru/groups/rv/rv.html
 Сайт проектов UniTesK
http://www.unitesk.com
 Электронный адрес
petrenko@ispras.ru

Литература











I. Burdonov, A. Kossatchev, A. Petrenko, H. Wong. Overview of the Kernel Verification project.
BNR Reports, 1997
И. Б. Бурдонов, А. В. Демаков, А. С. Косачев, А. В. Максимов, А. К. Петренко. Формальные
спецификации в технологиях обратной инженерии и верификации программ. Труды ИСП,
т.1, 1999, стр. 35-47
I. Bourdonov, A. Kossatchev, A. Petrenko, D. Galter. KVEST: Automated Generation of Test Suites
from Formal Specifications. Proc. FM’99, LNCS 1708, Springer-Verlag, 1999, pp. 608-621
И. Б. Бурдонов, А. С. Косачев, В. В. Кулямин. Использование конечных автоматов для
тестирования программ. Программирование, т. 26, №. 2, 2000, стр. 61-73
A. K. Petrenko, I. B. Bourdonov, A. S. Kossatchev, V. V. Kuliamin. Experiences in using testing
tools and technology in real-life applications. Proc. SETT’2001, Pune, India, 2001
A.Petrenko. Specification Based Testing: Towards Practice. Proc. PSI’2001, LNCS 2244, 2001
I. Bourdonov, A. Kossatchev, V. Kuliamin, A. Petrenko. UniTesK Test Suite Architecture. Proc.
FME 2002, LNCS 2391, pp. 77-88, Springer-Verlag, 2002
И.Б.Бурдонов, А.С.Косачев, В.В.Кулямин. Асинхронные автоматы: классификация и
тестирование. Труды ИСП РАН, т. 4, 2003, стр. 7-84
V. Kuliamin, A. Petrenko, N. Pakoulin, A. Kossatchev, I. Bourdonov. Integration of Functional and
Timed Testing of Real-time and Concurrent Systems. Proc. PSI’2003.
A. Kossatchev, A. Petrenko, S. Zelenov, S. Zelenova. Using Model-Based Approach for
Automated Testing of Optimizing Compilers. Proc. Intl. Workshop on Program Undestanding,
Gorno-Altaisk, 2003
В.В.Кулямин, А.К.Петренко, А.С.Косачев, И.Б.Бурдонов. Подход UniTesK к разработке
тестов. Программирование, т. 29, № 6, 2003, стр. 25-43
Спасибо за внимание
Скачать