Технологии тестирования ИСП РАН

реклама
Технологии
тестирования
ИСП РАН
В. Кулямин
[email protected]
Что такое тестирование
Оценка соответствия системы требованиям к ней
на основе результатов наблюдения за ее работой
в конечном наборе специально подготовленных
ситуаций
SWEBOK (2004), IEEE 610 (1991)




Система в ходе тестирования должна работать
Нужно готовить специальные (тестовые) ситуации
Оценивается соответствие – ищем ошибки
Нужна общая оценка – нужно подготовить конечный
(небольшой) набор ситуаций, позволяющий ее дать
2 / 26
Как выполняется тестирование

Воздействуем на тестируемую
систему

Наблюдаем ее реакцию

Проверяем, такая ли реакция
должна быть

Повторяем, пока не
исчерпаются все существенно
различные ситуации
3 / 26
Тестирование на основе моделей

Распознавание ошибки
– ментальная модель правильной работы
Math.abs(-2147483648 = -231) = -2147483648

= 231 (mod 232)
Полнота набора ситуаций
– ментальная модель всех важных ситуаций
abs(x) = (x >= 0)?x:-x (mod 232)  {0,1,-1,231-1,-231,-231+1}

Управление построением тестов
– ментальная модель устройства тестовых воздействий
Один вызов или несколько
Параллелизм, синхронизация обращений
При тестировании на основе моделей
модели выделяются явно и заранее
4 / 26
Отличия от традиционного подхода
Обычное тестирование
1.
2.
3.
4.
5.
Придумываем ситуацию
Оформляем ее в виде сценария
взаимодействия теста с системой
Понимаем, как должна система
вести себя в его рамках
Дополняем сценарий проверкой
правильности
Получается тестовый вариант
(test case)
Оцениваем достаточность
имеющегося набора ситуаций:
достаточно – конец, нет – идем в 1
Тестирование на основе моделей
1.
2.
3.
4.
Строим модель поведения
системы (в нужном аспекте)
Определяем общую процедуру
оценки правильности работы
системы – оракул (используя
модель)
Определяем критерий полноты
тестирования (используя модель)
Строим набор ситуаций
(автоматизированно), чтобы
удовлетворить критерию полноты
5 / 26
Создание тестов и тестирование
Генератор
воздействий
12%
36%
87%
57%
Критерий
полноты
Метрика
покрытия
Тестируемая
система
Модель
поведения
Модель
Модель
состояния
состояния
+ оракул
6 / 26
Pro et contra
 Систематичность
 Строгость




( формальность)
Абстрактность
Автоматизация
Быстрая подготовка
тестов (часто до самой
тестируемой системы)
Тесты более высокого
качества
− Сложность
− Повышенные
требования к
разработчикам тестов



Образование
Абстрактное мышление
Умение программировать
− Трудность интеграции в
обычную разработку
7 / 26
Модели в UniTESK

Описание требований




Критерии полноты



Структура данных – простые структуры, шаблоны, грамматики
Поведение
– контрактные спецификации
Параллелизм
ll – семантика чередования
Варианты элементов структуры данных
Варианты возможного поведения системы
Построение тестов



Генераторы простых данных
Генераторы данных заданной структуры
Построение конечных автоматов, обеспечивающих полноту
покрытия ситуаций, и их автоматический обход
8 / 26
Структуры данных

BNF или шаблоны

Генерация корректных данных
– покрытие всех вариантов, комбинаций и итераций на заданную глубину

Генерация некорректных данных
– покрытие всех неправильных в данном контексте вариантов

Контекстные условия и ограничения

Нацеленная генерация
– ссылочная целостность, единственность в данном контексте


Фильтрация
Учет зависимости поведения от структуры
9 / 26
Генерация тестовых программ (1)
Критерий полноты
Шаблоны
Зависимости
Эквивалентность
Варианты
исполнения
Модель поведения
Типы
Структура
данных
процессора
Модель
Инструкции
исполнения
Генератор
Итератор
комбинаций
Итератор
зависимостей
Итераторы
данных
Итератор
ситуаций
Модель
исполнения
Привязка
инструкций
Тестовые
программы
10 / 26
Генерация тестовых программ (2)
Критерий полноты
Комбинации
Зависимости
Генератор
Итератор
комбинаций
Итераторы
данных
Ограничения сложности
Модель поведения
Алгоритм обработки
Блоки и
связи
Целевой
язык
Привязка
блоков
Тестовые
программы
if(…)…else …
for(…;…;…)
11 / 26
Генерация тестовых программ
12 / 26
Контрактные спецификации



Тестируемая система разбивается на компоненты
Каждый компонент имеет внутренние данные и набор
операций
Поведение операции определяется ее контрактом



Предусловие описывает область определения операции
sqrt(x): pre x ≥ 0
Постусловие описывает ограничения на правильные
результаты операции
sqrt(x): post sqrt*sqrt == x
Инварианты компонента описывают условия
целостности его данных
Triangle: double x,y,z : x+y>z & x+z>y & y+z>x
13 / 26
Пример
specification class ClientManager
{
specification Client addClient ( String name )
{
post
{
if ( name == null || clients.containsKey(name) )
{
branch "Client cannot be created";
return addClient == null && clients.equals( pre clients.clone() );
}
else
{
branch "Client can be created";
HashMap oldClients = (HashMap)clients.clone();
oldClients.remove(name);
return
addClient != null
&& addClient.name.equals(name)
&& addClient.parent == null
&& addClient.children.isEmpty()
&& clients.get(name) == addClient
&& oldClients.equals( pre clients.clone() );
}
}
}
}
14 / 26
Описание асинхронного поведения


Интерфейс компонента состоит из операций
и событий
События тоже описываются при помощи
контракта
 Постусловие
события определяет корректность
его наступления и изменения состояния
компонента
eMailSent:
post
pre mails.size() != 0
&& mails.size() == pre mails.size()-1
15 / 26
Семантика чередования
~
16 / 26
Критерии полноты тестирования
post {
if
( f(a, b) || g(a) )
…
else if( h(a, c) && !g(b) )
…
else !f(a, b) && !g(a) && !h(a, c) …
|| !f(a, b) && !g(a) && g(b)
}
17 / 26
Построение конечного автомата
область
определения
операции
параметры
2
3
1
варианты
исполнения
состояния
18 / 26
Построение одного воздействия
параметры
2
3
1
состояния
текущее состояние
19 / 26
Тестирование асинхронности
11
s12
21
s11
s21
21
Тестируемая
система
r11
11
r12
31
12
r21
12
r22
s31
Время



Время
22
Используется мультипоследовательность воздействий
Воздействия и реакции образуют частично упорядоченное
множество
При проверке корректности это множество вытягивается в
последовательность
20 / 26
Тестирование компонентов
Генератор
Описание автомата
Состояния
Действия
Критерий полноты
Варианты исполнения
Виды
параметров
Виды
состояний
Модель поведения
Структуры
Операции и
данных
события
Пред- и
Инварианты
постусловия
Обходчик
автоматов
Итераторы
данных
Метрика
покрытия
Предусловия
Генерация тестовой
последовательности
на лету
Тестируемая
система
Модель
состояния
Постусловия
Оракулы
21 / 26
Тестирование компонентов
22 / 26
Применение UniTESK


Тесты ядра ОС телефонной станции
Реализации IPv6






Оптимизаторы компиляторов Intel
Тестовый набор для IPsec
Пилотные проекты





Компоненты CRM-системы (Luxoft)
Оптимизатор трансляции граф. моделей
2000-2001
2002-2003
2002
2001-2003
2004-…
2004
2005
Тестовый набор для Linux Standard Base


Microsoft Research
Мобильный IPv6 (в Windows CE 4.1)
Октет
1994-1997
Core 3.1
Другие части
Компоненты биллинговой системы и EAI
НИИСИ



Тестовый набор для ОС 2000
Тесты для процессора Комдив 64 СМП
Тесты для процессора Комдив 64
2005-…
2006-...
2005-…
2005-...
2006-...
2007-...
23 / 26
Литература
1.
2.
3.
4.
5.
6.
7.
8.
9.
И. Бурдонов, А. Косачев, В. Кулямин. Использование конечных автоматов для
тестирования программ. Программирование, 26(2):61-73, 2000
I. Bourdonov, A. Kossatchev, V. Kuliamin, A. Petrenko. UniTesK Test Suite Architecture. Proc.
of FME 2002, LNCS 2391, pp. 77-88, Springer-Verlag, 2002
В. Кулямин, А. Петренко, А. Косачев, И. Бурдонов. Подход UniTesK к разработке
тестов. Программирование, 29(6):25-43, 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
С. Зеленов, С. Зеленова, А. Косачев, А. Петренко. Генерация тестов для компиляторов
и других процессоров формальных текстов. Программирование, 29(2):104-111, 2003
А. Баранцев и др. Подход UniTesK к разработке тестов: достижения и перспективы.
Труды ИСП РАН, т. 5, с. 121-156, 2004
V. Kuliamin, A. Petrenko. Applying Model Based Testing in Different Contexts. Proc. of seminar
on Perspectives of Model Based Testing, Dagstuhl, Germany, September 2004.
V. Kuliamin, N. Pakoulin, A. Petrenko. Practical Approach to Specification and Conformance
Testing of Distributed Network Applications. Proc. of 2-nd International Service Availability
Symposium, LNCS 3694, pp. 68-83, Springer-Verlag, 2005
В. Иванников, А. Камкин, А. Косачев, В. Кулямин, А. Петренко. Использование
контрактных спецификаций для представления требований и функционального
тестирования аппаратуры. Программирование, 33(5):47-61, 2007
24 / 26
Контакты


Группа RedVerst
Сайт:
Сайт UniTESK:
Linux Testing:
e-mail:
Телефон:
Факс:
www.ispras.ru/groups/rv/rv.html
www.unitesk.com
www.linuxtesting.org
[email protected]
(8-495)-9125317
(8-495)-9121524
Докладчик
Сайт:
e-mail:
www.ispras.ru/~kuliamin
[email protected]
25 / 26
Спасибо за внимание!
26 / 26
Проверка корректности
Тестовая
программа
Тестируемый
компилятор
Эталон
?
==
27 / 26
Пример: простые выражения
Test
stmts
1..*
Statement
xi = Expr
expr
1
var 1
Expression
Variable
id : string
xi
Constant
value : int
17
BinaryExpr
op : {+,-,*,/}
left
1
right 1
Expr1 + Expr2
28 / 26
Неявное описание автомата
29 / 26
Проверка корректности
Семантика чередования






✕

30 / 26
Область применимости
Тестируемые интерфейсы должны быть четко определены
Сложность
интерфейса
Компиляторы
Библиотеки
Протоколы
Информационные
системы
Web-приложения
Наблюдаемая
сложность состояния
31 / 26
Скачать