![Page 1: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/1.jpg)
Модели в профессиональной инженерии
и тестировании программ
Д.ф.-м.н., Александр Константинович ПЕТРЕНКО,
Заведующий отделом Технологий программирования ИСП РАН [email protected]
http://ispras.ru/~petrenko
YaC, 19 сентября 2011 года
![Page 2: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/2.jpg)
MBT – Model Based Testing. Где это используется?
2
Участники Число докладов
Встроенные и real-time (Siemens и
др.)
6
Microsoft 5
Телеком (Nokia, Ericsson, Alcatel-
Lucent, Siemens)
5
Стандартизация 3
Information systems (SAP и др.) 2
![Page 3: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/3.jpg)
История возникновения моего
интереса к этой теме • 1974-1984 – разработка системного ПО, в частности,
для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран»
• 1994 – автоматизация тестирования ОС, компиляторы,
телеком. протоколы, микропроцессоры,
математические функции (Nortel, Microsoft, Intel,
Daimler Chrysler, Motorola, Linux Foundation, Nokia,
Google, Вымпелком, НИИСИ, МЦСТ, ГосНИИАС,
«Русские Системы»)
3
![Page 4: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/4.jpg)
Протестировать компилятор
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,
микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler
Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,
ГосНИИАС, «Русские Системы»)
4
Пусть надо протестировать компилятор:
-Что надо проверить и каковы критерии корректности?
-Когда надо остановиться?
- Как сэкономить – писать минимум и получать максимум?
![Page 5: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/5.jpg)
Задача – спроектировать набор
тестов для программного модуля
5
Структура реализации - граф control flow.
Задача генератора тестов - перебор путей теста по структуре control flow
в реализации
Подход практические не применим
к большим системам, к компиляторам,
в частности.
![Page 6: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/6.jpg)
Предложенный ответ:
-Описать формальную модель целевого языка
(синтаксис и семантику)
- Проверить все конструкции и альтернативы в этих моделях
- Вручную написать собственно модель и генератор
покрытия конструкций и альтернатив
Протестировать компилятор (2)
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора
для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,
микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler
Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,
ГосНИИАС, «Русские Системы»)
6
-Что надо проверить?
- Когда остановиться?
- Как сэкономить
![Page 7: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/7.jpg)
Протестировать компилятор (3)
Модель - грамматика:
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
![Page 8: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/8.jpg)
Протестировать компилятор (4).
Перебор путей теста по грамматике 1.
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
2.
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
![Page 9: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/9.jpg)
Протестировать операционную систему
• 1974-1984 – разработка системного ПО, в частности, для космических программ
• 1985-1993 – разработка и тестирование компилятора для кораблей типа «Буран»
• 1994 – автоматизация тестирования ОС, компиляторы,
телеком. протоколы, микропроцессоры, математические функции (Nortel,
Microsoft, Intel, Daimler Chrysler, Motorola, Linux Foundation, Nokia, Google,
Вымпелком, НИИСИ, МЦСТ, ГосНИИАС, «Русские Системы»)
9
?????????????????????:
-Что можно использовать в качестве моделей для тестирования
операционных систем, протоколов, ….. ?
- Что нужно извлекать из моделей для построения теста?
![Page 10: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/10.jpg)
Виды моделей программ
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]}; { . . . }
![Page 11: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/11.jpg)
Какие задачи помогают решать
модели? • Уточнение понимания (требований, проекта/дизайна,
критериев корректности, угроз, рисков, источников
проблем)
• В тестировании:
– систематический перебор входных данных/тестовых
воздействий
– Проблемы создания генератора ожидаемых результатов;
альтернатива – генератор оракулов
– оценка полноты проверки
• поведения внешней среды (по модели окружения)
• поведения системы (модель реализации и/или модель потока
результатов)
11
![Page 12: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/12.jpg)
Процесс тестирования на основе моделей
Требования
Модели, например,
программный
контракт
Bug reports
Модель окружения,
модель тестовых
воздействий
Реализация
Фаза 2
Дизайн
архитектуры и
интерфейсов
Фаза 1
Разработка
тестовой
системы
Фаза 3
Анализ
результатов
тестирования
Подпроцесс
верификации
Подпроцесс
реализации
Error free software
Проектная
документация
Реализация
(исходный код)
![Page 13: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/13.jpg)
09.10.2011 13
Тестирование на основе моделей
Тестируемая
система
Модель состояния
+ оракул
Модель
поведения
Генератор
воздействий
Метрика
покрытия
12%
Критерий
полноты
36% 57% 87%
Модель
состояния
Тестовый
оракул
![Page 14: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/14.jpg)
Виды
моделей-систем-задач тестирования Модель Целевая система Задача тестирования
Граф control-flow СУБД Генерация тестовых данных
Граф data-flow База данных Генерация тестовых воздействий
Конечный автомат (FSM),
система переходов (LTS)
Компилятор Оценка корректности реализации
Программный контракт Библиотека функций Оценка полноты тестового покрытия
Система аксиом,
темпоральные
спецификации (CTL/LTL)
Реактивная система Связка реализации и моделей
Сеть Петри Телеком. протокол Транспорт и хранение воздействий и
реакций
MSC (Sequence diagram) Модель
микропроцессора
Распараллеливание тестов, re-play,
контрольные точки
… … … 14
![Page 15: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/15.jpg)
Инструменты MBT в практике
• Авионика:
– SCADE (Esterel Technologies)
– Rhapsody (i-Logic / IBM)
• Телеком: Rational Tau (Telelogic / IBM)
• Общего назначения:
– SpecExplorer (Microsoft Research),
– Test Design (Conformiq),
– UniTESK (ИСПРАН)
– Code Contract (Microsoft Research)
15
![Page 16: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/16.jpg)
Унифицированный язык
тестирования – TTCN-3 • Происхождение - Телеком
• Основные игроки:
– Европейские программы стандартизации в областях:
• Автомобилестроение, авионика, здравоохранение
• IBM (Telelogic/Rational tools)
• WWW.OMG.ORG Open Management Group
– UML Testing Profile (UTP)
16
MBT?
В основе концепции лежит модель теста,
но не модель целевой системы
![Page 17: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/17.jpg)
Пример большого проекта:
MS Interoperability Initiative • 2002 год.
• Требование US Department of Justice Европейской
комиссии к Microsoft:
– Опубликовать документацию достаточную для использования
сторонними разработчиками для создания клиентских и
серверных программ.
• => Microsoft Interoperability Initiative
– 60,000 страниц API документации.
– > 50,000 дефектов.
– Размер команды > 200 специалистов, срок > 4-х лет.
• Основной инструмент - SpecExplorer
17
![Page 18: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/18.jpg)
MS Interoperability Initiative
18
![Page 19: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/19.jpg)
MS Interoperability Initiative
19
![Page 20: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/20.jpg)
ПРИМЕРЫ ИНСТРУМЕНТОВ
20
![Page 21: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/21.jpg)
SCADE (Esterel Technologies)
21
![Page 22: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/22.jpg)
TAU(Telelogic/IBM)
• SDL/UML модель поведения
• MSC (UML sequence diagram)
модель поведения теста
• TTCN-3 (UML Testing Profile - UTP)
модель архитектуры теста
22
![Page 23: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/23.jpg)
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
![Page 24: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/24.jpg)
QTRONIC / Test Design (Conformiq)
24
![Page 25: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/25.jpg)
UniTESK (ИСПРАН)
• CTESK (UniTESK для C)
• JavaTESK (UniTESK для Java)
• C++TESK, MicroTESK (для микропроцессоров)
25
![Page 26: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/26.jpg)
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
![Page 27: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/27.jpg)
Отчет о покрытии
27
![Page 28: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/28.jpg)
Как сгенерировать последовательность
вызовов операций?
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
![Page 29: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/29.jpg)
Пример отчета.
Граф обхода конечного автомата
29
![Page 30: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/30.jpg)
Пример спецификации с использованием
библиотеки 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
![Page 31: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/31.jpg)
Обсуждение.
Где полезно применение MBT?
31
![Page 33: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/33.jpg)
Запасные слайды
33
![Page 34: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/34.jpg)
MS Interoperability Initiative
34
![Page 35: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/35.jpg)
Соотношение MBT и MBSE
MBT - Model Based Testing
• Тестирование на основе моделей – это
часть общего подхода MBSE
MBSE – Model Based Software (Systems)
Engineering
35
![Page 36: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/36.jpg)
ПРИМЕРЫ MBSE КОМПЛЕКСОВ
36
![Page 37: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/37.jpg)
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
![Page 38: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН](https://reader033.vdocuments.mx/reader033/viewer/2022051411/54621f9caf7959c2408b4fd4/html5/thumbnails/38.jpg)
TOPCASED