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

Post on 11-Nov-2014

6.906 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

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

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

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

Заведующий отделом Технологий программирования ИСП РАН petrenko@ispras.ru

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

Спасибо!

А.К.Петренко petrenko@ispras.ru http://ispras.ru/~petrenko

32

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

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

top related