Модели в профессиональной инженерии и тестировании...

38
Модели в профессиональной инженерии и тестировании программ Д.ф.-м.н., Александр Константинович ПЕТРЕНКО, Заведующий отделом Технологий программирования ИСП РАН [email protected] http://ispras.ru/~petrenko YaC, 19 сентября 2011 года

Upload: yaevents

Post on 11-Nov-2014

6.905 views

Category:

Technology


1 download

DESCRIPTION

Александр Петренко, ИСП РАН Профессор, доктор физико-математических наук, заведующий отделом технологий программирования Института системного программирования (ИСП РАН), профессор ВМК МГУ. Основные работы в областях: формализация требований, генерация тестов на основе формализованных требований и формальных моделей (model based testing – MBT). Приложения: тестирование операционных систем и распределенных систем, тестирование компиляторов, верификация дизайна микропроцессоров, формализация стандартов на API операционных систем и телекоммуникационных протоколов. Сопредседатель оргкомитетов International MBT workshop (http://www.mbrworkshop.org/), Spring Young Researcher Colloquium on Software Engineering – SYRCoSE (http://syrocose.ispras.ru), городского семинара по технологиям разработки и анализа программ ТРАП/SDAT (http://sdat.ispras.ru/). Тема доклада Модели в профессиональной инженерии и тестировании программ. Тезисы Model Based Software Engineering (MBSE) является расширением подхода к разработке программ на основе моделей. В MBSE в отличие, например, от MDA (Model Driver Architecture) существенное внимание уделяется не только задачам собственно проектирования и разработки кода, но и задачам других фаз жизненного цикла – анализу требований, верификации и валидации, управлению требованиями на всех фазах жизненного цикла. Model Based Testing (MBT) хронологически возник гораздо раньше, чем MBSE и MDA, однако его место в разработке программ в полной мере раскрылось вместе с развитием MBSE. По этой причине MBT и MBSE следует рассматривать в тесной связке. В докладе будут рассмотрены концепции MBSE-MDA-MBT, основные источники и виды моделей, которые используются в этих подходах, методы генерации тестов на основе моделей, известные инструменты для

TRANSCRIPT

Page 1: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Модели в профессиональной инженерии

и тестировании программ

Д.ф.-м.н., Александр Константинович ПЕТРЕНКО,

Заведующий отделом Технологий программирования ИСП РАН [email protected]

http://ispras.ru/~petrenko

YaC, 19 сентября 2011 года

Page 2: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

MBT – Model Based Testing. Где это используется?

2

Участники Число докладов

Встроенные и real-time (Siemens и

др.)

6

Microsoft 5

Телеком (Nokia, Ericsson, Alcatel-

Lucent, Siemens)

5

Стандартизация 3

Information systems (SAP и др.) 2

Page 3: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

История возникновения моего

интереса к этой теме • 1974-1984 – разработка системного ПО, в частности,

для космических программ

• 1985-1993 – разработка и тестирование компилятора

для кораблей типа «Буран»

• 1994 – автоматизация тестирования ОС, компиляторы,

телеком. протоколы, микропроцессоры,

математические функции (Nortel, Microsoft, Intel,

Daimler Chrysler, Motorola, Linux Foundation, Nokia,

Google, Вымпелком, НИИСИ, МЦСТ, ГосНИИАС,

«Русские Системы»)

3

Page 4: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Протестировать компилятор

• 1974-1984 – разработка системного ПО, в частности, для космических программ

• 1985-1993 – разработка и тестирование компилятора

для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,

микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler

Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,

ГосНИИАС, «Русские Системы»)

4

Пусть надо протестировать компилятор:

-Что надо проверить и каковы критерии корректности?

-Когда надо остановиться?

- Как сэкономить – писать минимум и получать максимум?

Page 5: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Задача – спроектировать набор

тестов для программного модуля

5

Структура реализации - граф control flow.

Задача генератора тестов - перебор путей теста по структуре control flow

в реализации

Подход практические не применим

к большим системам, к компиляторам,

в частности.

Page 6: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Предложенный ответ:

-Описать формальную модель целевого языка

(синтаксис и семантику)

- Проверить все конструкции и альтернативы в этих моделях

- Вручную написать собственно модель и генератор

покрытия конструкций и альтернатив

Протестировать компилятор (2)

• 1974-1984 – разработка системного ПО, в частности, для космических программ

• 1985-1993 – разработка и тестирование компилятора

для кораблей типа «Буран» • 1994 – автоматизация тестирования ОС, компиляторы, телеком. протоколы,

микропроцессоры, математические функции (Nortel, Microsoft, Intel, Daimler

Chrysler, Motorola, Linux Foundation, Nokia, Google, Вымпелком, НИИСИ, МЦСТ,

ГосНИИАС, «Русские Системы»)

6

-Что надо проверить?

- Когда остановиться?

- Как сэкономить

Page 7: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Протестировать компилятор (3)

Модель - грамматика:

<assign> ::= <id> “:=” <expr>

<expr> ::= <intexp> | <boolexp>

Page 8: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Протестировать компилятор (4).

Перебор путей теста по грамматике 1.

<assign> ::= <id> “:=” <expr>

<expr> ::= <intexp> | <boolexp>

2.

<assign> ::= <id> “:=” <expr>

<expr> ::= <intexp> | <boolexp>

Page 9: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Протестировать операционную систему

• 1974-1984 – разработка системного ПО, в частности, для космических программ

• 1985-1993 – разработка и тестирование компилятора для кораблей типа «Буран»

• 1994 – автоматизация тестирования ОС, компиляторы,

телеком. протоколы, микропроцессоры, математические функции (Nortel,

Microsoft, Intel, Daimler Chrysler, Motorola, Linux Foundation, Nokia, Google,

Вымпелком, НИИСИ, МЦСТ, ГосНИИАС, «Русские Системы»)

9

?????????????????????:

-Что можно использовать в качестве моделей для тестирования

операционных систем, протоколов, ….. ?

- Что нужно извлекать из моделей для построения теста?

Page 10: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Виды моделей программ

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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Какие задачи помогают решать

модели? • Уточнение понимания (требований, проекта/дизайна,

критериев корректности, угроз, рисков, источников

проблем)

• В тестировании:

– систематический перебор входных данных/тестовых

воздействий

– Проблемы создания генератора ожидаемых результатов;

альтернатива – генератор оракулов

– оценка полноты проверки

• поведения внешней среды (по модели окружения)

• поведения системы (модель реализации и/или модель потока

результатов)

11

Page 12: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Процесс тестирования на основе моделей

Требования

Модели, например,

программный

контракт

Bug reports

Модель окружения,

модель тестовых

воздействий

Реализация

Фаза 2

Дизайн

архитектуры и

интерфейсов

Фаза 1

Разработка

тестовой

системы

Фаза 3

Анализ

результатов

тестирования

Подпроцесс

верификации

Подпроцесс

реализации

Error free software

Проектная

документация

Реализация

(исходный код)

Page 13: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

09.10.2011 13

Тестирование на основе моделей

Тестируемая

система

Модель состояния

+ оракул

Модель

поведения

Генератор

воздействий

Метрика

покрытия

12%

Критерий

полноты

36% 57% 87%

Модель

состояния

Тестовый

оракул

Page 14: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Виды

моделей-систем-задач тестирования Модель Целевая система Задача тестирования

Граф control-flow СУБД Генерация тестовых данных

Граф data-flow База данных Генерация тестовых воздействий

Конечный автомат (FSM),

система переходов (LTS)

Компилятор Оценка корректности реализации

Программный контракт Библиотека функций Оценка полноты тестового покрытия

Система аксиом,

темпоральные

спецификации (CTL/LTL)

Реактивная система Связка реализации и моделей

Сеть Петри Телеком. протокол Транспорт и хранение воздействий и

реакций

MSC (Sequence diagram) Модель

микропроцессора

Распараллеливание тестов, re-play,

контрольные точки

… … … 14

Page 15: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Инструменты 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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Унифицированный язык

тестирования – TTCN-3 • Происхождение - Телеком

• Основные игроки:

– Европейские программы стандартизации в областях:

• Автомобилестроение, авионика, здравоохранение

• IBM (Telelogic/Rational tools)

• WWW.OMG.ORG Open Management Group

– UML Testing Profile (UTP)

16

MBT?

В основе концепции лежит модель теста,

но не модель целевой системы

Page 17: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Пример большого проекта:

MS Interoperability Initiative • 2002 год.

• Требование US Department of Justice Европейской

комиссии к Microsoft:

– Опубликовать документацию достаточную для использования

сторонними разработчиками для создания клиентских и

серверных программ.

• => Microsoft Interoperability Initiative

– 60,000 страниц API документации.

– > 50,000 дефектов.

– Размер команды > 200 специалистов, срок > 4-х лет.

• Основной инструмент - SpecExplorer

17

Page 18: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

MS Interoperability Initiative

18

Page 19: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

MS Interoperability Initiative

19

Page 20: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

ПРИМЕРЫ ИНСТРУМЕНТОВ

20

Page 21: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

SCADE (Esterel Technologies)

21

Page 22: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

TAU(Telelogic/IBM)

• SDL/UML модель поведения

• MSC (UML sequence diagram)

модель поведения теста

• TTCN-3 (UML Testing Profile - UTP)

модель архитектуры теста

22

Page 23: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

QTRONIC / Test Design (Conformiq)

24

Page 25: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

UniTESK (ИСПРАН)

• CTESK (UniTESK для C)

• JavaTESK (UniTESK для Java)

• C++TESK, MicroTESK (для микропроцессоров)

25

Page 26: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Отчет о покрытии

27

Page 28: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Как сгенерировать последовательность

вызовов операций?

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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Пример отчета.

Граф обхода конечного автомата

29

Page 30: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Пример спецификации с использованием

библиотеки 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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Обсуждение.

Где полезно применение MBT?

31

Page 32: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Спасибо!

А.К.Петренко [email protected] http://ispras.ru/~petrenko

32

Page 33: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Запасные слайды

33

Page 34: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

MS Interoperability Initiative

34

Page 35: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

Соотношение MBT и MBSE

MBT - Model Based Testing

• Тестирование на основе моделей – это

часть общего подхода MBSE

MBSE – Model Based Software (Systems)

Engineering

35

Page 36: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

ПРИМЕРЫ MBSE КОМПЛЕКСОВ

36

Page 37: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

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: Модели в профессиональной инженерии и тестировании программ. Александр Петренко, ИСП РАН

TOPCASED