Модели в профессиональной инженерии и тестировании...
-
Upload
yaevents -
Category
Technology
-
view
6.900 -
download
1
description
Transcript of Модели в профессиональной инженерии и тестировании...
Модели в профессиональной инженерии
и тестировании программ
Д.ф.-м.н., Александр Константинович ПЕТРЕНКО,
Заведующий отделом Технологий программирования ИСП РАН [email protected]
http://ispras.ru/~petrenko
YaC, 19 сентября 2011 года
MBT – Model Based Testing. Где это используется?
2
Участники Число докладов
Встроенные и real-time (Siemens и
др.)
6
Microsoft 5
Телеком (Nokia, Ericsson, Alcatel-
Lucent, Siemens)
5
Стандартизация 3
Information systems (SAP и др.) 2
История возникновения моего
интереса к этой теме • 1974-1984 – разработка системного ПО, в частности,
для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран»
• 1994 – автоматизация тестирования ОС, компиляторы,
телеком. протоколы, микропроцессоры,
математические функции (Nortel, Microsoft, Intel,
Daimler Chrysler, Motorola, Linux Foundation, Nokia,
Google, Вымпелком, НИИСИ, МЦСТ, ГосНИИАС,
«Русские Системы»)
3
Протестировать компилятор
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,
микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler
Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,
ГосНИИАС, «Русские Системы»)
4
Пусть надо протестировать компилятор:
-Что надо проверить и каковы критерии корректности?
-Когда надо остановиться?
- Как сэкономить – писать минимум и получать максимум?
Задача – спроектировать набор
тестов для программного модуля
5
Структура реализации - граф control flow.
Задача генератора тестов - перебор путей теста по структуре control flow
в реализации
Подход практические не применим
к большим системам, к компиляторам,
в частности.
Предложенный ответ:
-Описать формальную модель целевого языка
(синтаксис и семантику)
- Проверить все конструкции и альтернативы в этих моделях
- Вручную написать собственно модель и генератор
покрытия конструкций и альтернатив
Протестировать компилятор (2)
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,
микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler
Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,
ГосНИИАС, «Русские Системы»)
6
-Что надо проверить?
- Когда остановиться?
- Как сэкономить
Протестировать компилятор (3)
Модель - грамматика:
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
Протестировать компилятор (4).
Перебор путей теста по грамматике 1.
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
2.
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
Протестировать операционную систему
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора для кораблей типа «Буран»
• 1994 – автоматизация тестирования ОС, компиляторы,
телеком. протоколы, микропроцессоры, математические функции (Nortel,
Microsoft, Intel, Daimler Chrysler, Motorola, Linux Foundation, Nokia, Google,
Вымпелком, НИИСИ, МЦСТ, ГосНИИАС, «Русские Системы»)
9
?????????????????????:
-Что можно использовать в качестве моделей для тестирования
операционных систем, протоколов, ….. ?
- Что нужно извлекать из моделей для построения теста?
Виды моделей программ
10
State1
State 4
State 2
State 3
op2
op3
op3 op3
op2 op1
op3
SDL
MSC
FSM /
FA Грамматика
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
Программный контракт
class ArrayList { public virtual void Insert(int index , object value) requires 0 <= index && index <= Count; requires !IsReadOnly && !IsFixedSize;
ensures Count == old(Count) + 1;
ensures value == this[index ];
ensures Forall{int i in 0 : index ; old(this[i])
== this[i]};
ensures Forall{int i in index : old(Count);
old(this[i]) == this[i + 1]}; { . . . }
Какие задачи помогают решать
модели? • Уточнение понимания (требований, проекта/дизайна,
критериев корректности, угроз, рисков, источников
проблем)
• В тестировании:
– систематический перебор входных данных/тестовых
воздействий
– Проблемы создания генератора ожидаемых результатов;
альтернатива – генератор оракулов
– оценка полноты проверки
• поведения внешней среды (по модели окружения)
• поведения системы (модель реализации и/или модель потока
результатов)
11
Процесс тестирования на основе моделей
Требования
Модели, например,
программный
контракт
Bug reports
Модель окружения,
модель тестовых
воздействий
Реализация
Фаза 2
Дизайн
архитектуры и
интерфейсов
Фаза 1
Разработка
тестовой
системы
Фаза 3
Анализ
результатов
тестирования
Подпроцесс
верификации
Подпроцесс
реализации
Error free software
Проектная
документация
Реализация
(исходный код)
09.10.2011 13
Тестирование на основе моделей
Тестируемая
система
Модель состояния
+ оракул
Модель
поведения
Генератор
воздействий
Метрика
покрытия
12%
Критерий
полноты
36% 57% 87%
Модель
состояния
Тестовый
оракул
Виды
моделей-систем-задач тестирования Модель Целевая система Задача тестирования
Граф control-flow СУБД Генерация тестовых данных
Граф data-flow База данных Генерация тестовых воздействий
Конечный автомат (FSM),
система переходов (LTS)
Компилятор Оценка корректности реализации
Программный контракт Библиотека функций Оценка полноты тестового покрытия
Система аксиом,
темпоральные
спецификации (CTL/LTL)
Реактивная система Связка реализации и моделей
Сеть Петри Телеком. протокол Транспорт и хранение воздействий и
реакций
MSC (Sequence diagram) Модель
микропроцессора
Распараллеливание тестов, re-play,
контрольные точки
… … … 14
Инструменты MBT в практике
• Авионика:
– SCADE (Esterel Technologies)
– Rhapsody (i-Logic / IBM)
• Телеком: Rational Tau (Telelogic / IBM)
• Общего назначения:
– SpecExplorer (Microsoft Research),
– Test Design (Conformiq),
– UniTESK (ИСПРАН)
– Code Contract (Microsoft Research)
15
Унифицированный язык
тестирования – TTCN-3 • Происхождение - Телеком
• Основные игроки:
– Европейские программы стандартизации в областях:
• Автомобилестроение, авионика, здравоохранение
• IBM (Telelogic/Rational tools)
• WWW.OMG.ORG Open Management Group
– UML Testing Profile (UTP)
16
MBT?
В основе концепции лежит модель теста,
но не модель целевой системы
Пример большого проекта:
MS Interoperability Initiative • 2002 год.
• Требование US Department of Justice Европейской
комиссии к Microsoft:
– Опубликовать документацию достаточную для использования
сторонними разработчиками для создания клиентских и
серверных программ.
• => Microsoft Interoperability Initiative
– 60,000 страниц API документации.
– > 50,000 дефектов.
– Размер команды > 200 специалистов, срок > 4-х лет.
• Основной инструмент - SpecExplorer
17
MS Interoperability Initiative
18
MS Interoperability Initiative
19
ПРИМЕРЫ ИНСТРУМЕНТОВ
20
SCADE (Esterel Technologies)
21
TAU(Telelogic/IBM)
• SDL/UML модель поведения
• MSC (UML sequence diagram)
модель поведения теста
• TTCN-3 (UML Testing Profile - UTP)
модель архитектуры теста
22
SpecExplorer (Microsoft)
• Программный контракт
class ArrayList { public virtual void Insert(int index , object value)
requires 0 <= index && index <= Count;
requires !IsReadOnly && !IsFixedSize;
ensures Count == old(Count) + 1;
ensures value == this[index ];
ensures Forall{int i in 0 : index ; old(this[i]) == this[i]};
ensures Forall{int i in index : old(Count); old(this[i]) == this[i + 1]};
{ . . . }
23
QTRONIC / Test Design (Conformiq)
24
UniTESK (ИСПРАН)
• CTESK (UniTESK для C)
• JavaTESK (UniTESK для Java)
• C++TESK, MicroTESK (для микропроцессоров)
25
UniTESK (ИСПРАН)
Пример спецификации в JavaTESK (программный контракт):
specification int withdraw(int sum) {
pre { return sum > 0; }
post {
if (balance > 0)
mark "Withdrawal from account with positive balance";
else if (balance == 0)
mark "Withdrawal from empty account";
else
mark "Withdrawal from account with negative balance";
if(balance < sum - maximumCredit)
{
branch TooLargeSum;
return balance == pre balance && withdraw == 0 ;
}
else
{
branch Normal;
return balance == pre balance – sum && withdraw == sum ;
} } } 26
Отчет о покрытии
27
Как сгенерировать последовательность
вызовов операций?
28
Пример спецификации в JavaTESK:
specification int withdraw(int sum) {
pre { return sum > 0; }
post {
if (balance > 0)
mark "Withdrawal from account with positive
balance";
else if (balance == 0)
mark "Withdrawal from empty account";
else
mark "Withdrawal from account with negative
balance";
if(balance < sum - maximumCredit)
{
branch TooLargeSum;
return balance == pre balance && withdraw == 0 ;
}
else
{
branch Normal;
return balance == pre balance – sum && withdraw ==
sum ;
} } }
State 2
State1
State 4
State 3
op2
op3
op3
op3
op2
op1
op3
Пример отчета.
Граф обхода конечного автомата
29
Пример спецификации с использованием
библиотеки CodeContract
(Microsoft Research)
using System;
using System.Diagnostics .Contracts;
…
class Math
{
public static double Sqrt ( double x )
{
Contract.Requires( x > 0 );
Contract.Ensures (
Contract.Result<double>()*Contract.Result<double>() == x);
...
}
}
30
Обсуждение.
Где полезно применение MBT?
31
Запасные слайды
33
MS Interoperability Initiative
34
Соотношение MBT и MBSE
MBT - Model Based Testing
• Тестирование на основе моделей – это
часть общего подхода MBSE
MBSE – Model Based Software (Systems)
Engineering
35
ПРИМЕРЫ MBSE КОМПЛЕКСОВ
36
Boeing OSEE
Open System Engineering Environment is
an integrated, extensible tool environment
for large engineering projects
Разработан Boeing для поддержки разработки системы
управления полетом Apache Attack Helicopter
Разрабатывается с 2004 года
С 2007 года опубликован под Eclipse Public License как проект
Eclipse Foundation
TOPCASED