62
ТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙ ТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙ В. В. Кулямин Институт системного программирования РАН

Тестирование на основе моделей, весна 2010: Лекции 1-3

Embed Size (px)

Citation preview

Page 1: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙ

В. В. КуляминИнститут системного программирования РАН

Page 2: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПЛАНПЛАН

q Введение§ Сложность современных систем§ Тестирование и связанные понятия

q Тестирование на основе моделей§ Модели поведения§ Модели ситуаций§ Методы построения тестов

q Работы ИСП РАН

2

Page 3: Тестирование на основе моделей, весна 2010: Лекции 1-3

СЛОЖНОСТЬ СОВРЕМЕННЫХ СИСТЕМСЛОЖНОСТЬ СОВРЕМЕННЫХ СИСТЕМ

Software сложнее hardware (1968)

3

36 10 15 16 30 45

51

25

59

105

216

283

20 30

80

140

180

40

45

89

138

0

50

100

150

200

250

300

Код Windows, млн. строк Код Debian Linux, млн. строкКоманда Windows, 10 чел. Команда Debian, 10 чел.

Page 4: Тестирование на основе моделей, весна 2010: Лекции 1-3

СЛОЖНОСТЬ ИНТЕРФЕЙСАСЛОЖНОСТЬ ИНТЕРФЕЙСА

4

Page 5: Тестирование на основе моделей, весна 2010: Лекции 1-3

5

СЛОЖНОСТЬ ДАННЫХСЛОЖНОСТЬ ДАННЫХ

Page 6: Тестирование на основе моделей, весна 2010: Лекции 1-3

6

СЛОЖНОСТЬ ПОВЕДЕНИЯСЛОЖНОСТЬ ПОВЕДЕНИЯ

Page 7: Тестирование на основе моделей, весна 2010: Лекции 1-3

СТАТИСТИКА ОШИБОКСТАТИСТИКА ОШИБОК

q Основная причина – сложностьq Среднее количество ошибок на 1000 строк кода –постоянно (???)

7

0 10 20 30 40 50

Среднее

Microsoft

NASA

Linux

Page 8: Тестирование на основе моделей, весна 2010: Лекции 1-3

РИСКИ, СВЯЗАННЫЕ С ОШИБКАМИРИСКИ, СВЯЗАННЫЕ С ОШИБКАМИ

q Космические аппараты§ Mariner I (1962)§ Фобос-1 (1988)§ Mars Climate Orbiter, Mars

Polar Lander (1999)q Инфраструктура

§ AT&T long distance network crash (1990)

§ Northeast Blackout (2003)§ OpenSSL rnd in Debian

(2006-8)§ Heathrow Airport Terminal 5

baggage system (2008)

q Автомобили§ Toyota Prius (2005, 2010)

q Медицинское оборудование§ Therac-25 (1985-7)

q Авионика и военное оборудование§ Lockheed F-117 (1982)§ MIM-104 Patriot (1991)§ Ariane 5 (1996)§ USS Yorktown (1997)§ F-22 Raptor (2007)

8

Потери индустрии США в 2001 году – 60 G$

Page 9: Тестирование на основе моделей, весна 2010: Лекции 1-3

ЧТО ДЕЛАТЬ?ЧТО ДЕЛАТЬ?

q Не делать ошибок— Невозможно из-за сложности

q Предотвращение ошибок§ Повышение уровня абстракции языков§ Устранение error-prone конструкций§ Стандартизация и документирование языков, интерфейсов и библиотек

q Выявление ошибок§ Верификация и валидацияТестирование на основе моделей – частный случай

q Исправление ошибок

9

Page 10: Тестирование на основе моделей, весна 2010: Лекции 1-3

COMPUTER SCIENCE И SOFTWARE ENGINEERINGCOMPUTER SCIENCE И SOFTWARE ENGINEERING

q Computer Science§ Алгоритм§ Одна четкая задача

o ее м.б. невозможно решитьo или можно решить идеально

§ Можно устранить ошибки§ Основа – математика

q Фундаментальная дисциплина§ Электродинамика

q Software Engineering§ Система§ Много неясных задач

o нужно решать неразрешимоеo и нельзя решить окончательно

§ Ошибки есть всегда§ Основа – mix (???)

o Ad hoc решенияo Микроэкономикаo Групповая и когнитивная психология

o Социологияq Инженерная дисциплина (???)

§ Электротехника

10

Page 11: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕСТИРОВАНИЕТЕСТИРОВАНИЕ

[SWEBOK 2004]Проверка соответствия тестируемой системы требованиям

§ Верификация§ Альтернативы– валидация§ Другие мнения (Cem Caner) – любой анализ

В ходе реальной работы этой системы§ АльтернативыЭкспертиза, статический анализ, проверка моделей (model checking) дедуктивный анализ (theorem proving)

В конечном наборе специально созданных ситуаций§ Другие мнения (IEEE 610.12-1990)§ АльтернативыМониторинг (runtime verification, passive testing)

11

Page 12: Тестирование на основе моделей, весна 2010: Лекции 1-3

ЦЕЛИ ТЕСТИРОВАНИЯЦЕЛИ ТЕСТИРОВАНИЯ

q Поиск ошибок§ Четкие результаты§ Гарантировать отсутствие ошибок нельзя§ Что делать, если ошибки не находятся?§ Когда можно прекратить тестирование?

q Оценка качества тестируемой системы (SUT)§ Объективные условия завершения§ Критерии полноты тестирования – как выбирать тесты

q Контроль развития системы§ Тесты – инструмент отслеживания изменений§ Организация тестов – как облегчить модификации

12

Page 13: Тестирование на основе моделей, весна 2010: Лекции 1-3

ВИДЫ ТЕСТИРОВАНИЯВИДЫ ТЕСТИРОВАНИЯ

q По проверяемым свойствам§ ISO 9126

o Функциональностьo Надежностьo Производительность

• Нагрузочноеo Переносимостьo Удобство использования― Удобство сопровождения

§ Регрессионное§ Аттестационное (соответствия)

q По исполнителю§ При разработке§ Альфа§ Бета§ Приемочное

q По уровню§ Модульное§ Компонентное§ Интеграционное§ Функций (features)§ Системное

q По источнику тестов§ Структурное§ «Черного ящик໧ «Серого ящик໧ На отказ

o «Дымовое»o Стрессовое

q По интерфейсу§ UI§ API§ Сообщения

13

Page 14: Тестирование на основе моделей, весна 2010: Лекции 1-3

СТРУКТУРА ТЕСТАСТРУКТУРА ТЕСТА

Тест – тестовая ситуация + проверкаq Тестовый вариант

§ Инициализация§ Выполнение§ Проверка§ Финализация

14

public void testGetClients(){

Session s = SessionFactory.getSession();s.beginTransaction();List<Client> clients = s.createQuery("from Client").list();Client jones = new Client("Mike", "Jones");

Assert.assertContains(clients, jones "Jones should be in clients");s.rollbackTransaction();

}

Page 15: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕСТОВЫЕ СИТУАЦИИТЕСТОВЫЕ СИТУАЦИИ

q Обращение к тестируемой системе§ Воздействие§ Данные обращения

q Набор параллельных обращенийq Состояние системыq Внешние условия

15

q Вызов функции или методаProduct.get(74291).setValue(485);

q Отправка сообщенияSend( new ProductValueChangeMsg(74291, 485) );

q Ввод командыprodupd -t -id 74291 -val 485

q Нажатие на кнопку

Page 16: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ В ТЕСТИРОВАНИИМОДЕЛИ В ТЕСТИРОВАНИИ

q Требования§ Модель поведения тестируемой системы (SUT)§ Определяет корректное и некорректное поведение

q Структура тестовых ситуаций§ Модель ситуаций, возникающих при работе SUT§ Определяет виды и элементы ситуаций, их важность и связанные риски

§ Критерий полноты тестирования, критерий покрытия, метрика покрытия

Тестирование на основе моделей― Используемые модели заданы явно

16

Page 17: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯМОДЕЛИ ПОВЕДЕНИЯ

q Логико-алгебраические§ Различные логикиПервого порядка, теории типов, временные, модальные, …

§ Различные алгебраические структурыq Исполнимые

§ Различные автоматыFSM, LTS, расширенные, взаимодействующие, иерархические, временные, сети Петри, Statecharts, …

q Гибридные§ LTS ~ Алгебры процессов, модели стандартных термов§ Abstract State Machines§ Программные контракты с состоянием

17

Page 18: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯ – АРИФМЕТИКАМОДЕЛИ ПОВЕДЕНИЯ – АРИФМЕТИКА

x – 32-битное целое числоq abs(x) – (x ≥ 0) ? (x) : (-x)q abs(x) ≥ 0q abs(–2147483648) =

Машинная целочисленная арифметикаq Z/232Z = {[-231], [-231+1], …, [-2], [-1], [0], [1], [2], …, [231-1]}

q +, –, *q (34)! =

18

?–2147483648

?0

Page 19: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯ – SQRTМОДЕЛИ ПОВЕДЕНИЯ – SQRT

x – число с плавающей точкой (double)sqrt(x) – квадратный кореньq pre : (x ≥ 0)q post: (sqrt*sqrt = x)

r = [sqrt(2)]double = 6369051672525773/252

r*r = 2.0000000000000002734323463…

q post: abs(sqrt*sqrt – x) < ε = 3*10-16

r = [sqrt(2105)]double = 6369051672525773abs(r*r – 2105) = 5545866846675497

q post: (x = 0) ⇒ (sqrt = 0)& (x ≠ 0) ⇒ abs((sqrt*sqrt – x)/x) < ε

19

Page 20: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯ – АРКТАНГЕНСМОДЕЛИ ПОВЕДЕНИЯ – АРКТАНГЕНС

x – число с плавающей точкой (double)atan(x) – арктангенсq post: (x = 0) ⇒ (atan = 0)

& (x ≠ 0) ⇒ abs((tan(atan) – x)/x) < ε(tan(atan(1050)) = 1.633123935319537...⋅1016

[π/2]double = 884279719003555/249

(π/2 - [π/2]double) = 6.1232339957367658…⋅10–17

20

π/2

atan(x)π/2[π/2]double

Page 21: Тестирование на основе моделей, весна 2010: Лекции 1-3

ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ (IEEE 745)ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ (IEEE 745)

21

q Нормализованные: E > 0 & E < 2k –1 X = (–1)S·2(E–B)·(1+M/2(n–k–1))

q Денормализованные: E = 0 X = (–1)S·2(–B+1)·(M/2(n–k–1))

q Exceptional : E = 2k –1§ M = 0 : +∞, –∞§ M ≠ 0 : NaN

знак

k+1 n-10

экспонента мантисса

0 1 1 1 1 1 1 0 1 0 01 0 0 0 0 0 0 0 0 00 0 0 0 0 00 0 0 00 1 k

n, kS E M

B = 2(k–1) –1

2(–1)·1.1012 = 13/16 = 0,8125

0, -0

1/0 = +∞, (–1)/0 = –∞0/0 = NaN

n = 32, k = 8 – float (single precision)n = 64, k = 11 – doublen = 79, k = 15 – extended doublen = 128, k = 15 – quadruple

1/2(n-k-1) – 1 ulp

Page 22: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТОЧНАЯ МОДЕЛЬ SQRT (IEEE 745)ТОЧНАЯ МОДЕЛЬ SQRT (IEEE 745)

q дает результат округления точного значения в соответствии с текущим режимом§ к ближайшему§ к +∞, к –∞, к 0

q для +∞ дает +∞ и выставляет флаг DIVISION-BY-ZEROq для -0 дает -0 (???!!!)q для x < 0 дает NaN и выставляет флаг INVALIDq в случае неточного результата выставляет флаг INEXACTq нигде не выставляет флаги OVERFLOW, UNDERFLOW

22

Page 23: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯ – СЕМАФОРМОДЕЛИ ПОВЕДЕНИЯ – СЕМАФОР

Расширенный конечный автомат

23

Free Locked

create() /sid; owner := null

destroy()

lock(tid)/oktid; owner:=tidtrylock(tid, wt)/ oktid; owner:=tid

[tid=owner & waiting.empty()]unlock(tid)/oktid; owner:=null

[tid=owner]lock(tid)/lockedtid[tid≠owner]lock(tid)/failtid[tid=owner]trylock(tid, wt)/lockedtid[tid≠owner]trylock(tid, wt)/timer[tid]:=wt,

waiting.push(tid) timeout[tid]/failtid; waiting.remove(tid)

[tid=owner & !waiting.empty()]unlock(tid)/ok;owner:=waiting.pop(), timer[owner]:=0

[tid=owner]unlock(tid)/oktid; owner:=null

waiting := new Queuetimer:= new TimerList

Page 24: Тестирование на основе моделей, весна 2010: Лекции 1-3

0

P

МОДЕЛИ ПОВЕДЕНИЯ – БУФЕР-СТЕКМОДЕЛИ ПОВЕДЕНИЯ – БУФЕР-СТЕК

Расширенная сеть Петри

24

1 2 3 4

C

(in)

/x1:=in

(in) (in) (in)

/x2:=in /x3:=in /x4:=in

/x1 /x2 /x3 /x4

Page 25: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ ПОВЕДЕНИЯ – СПИСОКМОДЕЛИ ПОВЕДЕНИЯ – СПИСОК

Абстрактный тип данныхL – список объектов типа Eq Операции

empty : L insert : L×N×E → L remove : L×N→ Lsize : L →N get : L → E

q Аксиомы§ empty.size() = 0§ [0≤i≤X.size()] X.insert(i, e).size() = X.size() + 1§ [0≤i<X.size()] X.remove(i).size() = X.size() – 1§ [0≤i≤X.size()] X.insert(i, e).get(i) = e§ [0<i≤X.size() & 0≤j<i] X.insert(i, e).get(j) = X.get(j)§ [0≤i<X.size() & i<j≤X.size()] X.insert(i, e).get(j) = X.get(j-1)§ [0≤i≤X.size()] X.insert(i, e).remove(i) ≡ X§ [0<i≤X.size() & 0≤j<i] X.insert(i, e).remove(j) ≡ X.remove(j). insert(i-1, e)§ [0≤i≤X.size() & i<j≤X.size()] X.insert(i, e).remove(j) ≡ X.remove(j-1). insert(i, e)§ [0≤i≤X.size() & 0≤j≤i] X.insert(i, e1).insert(j, e2)≡ X.insert(j, e2).insert(i+1, e1)§ [0<i<X.size() & 0≤j<i] X.remove(i).remove(j) ≡ X.remove(j). remove(i-1)

25

Page 26: Тестирование на основе моделей, весна 2010: Лекции 1-3

МОДЕЛИ СИТУАЦИЙМОДЕЛИ СИТУАЦИЙ

q Составляющие§ Элементы тестовых ситуаций

o Действия и их наборыo Данные и состояния

§ Классификация ситуаций и их элементов, выделение однородных областей

§ Важность и риски q Виды моделей ситуаций

§ Доменные (на основе входных и выходных данных)§ Структурные (на основе затрагиваемых элементов SUT)§ Функциональные (на основе элементов требований)§ Проблемные (на основе возможных проблем и рисков, гипотез об ошибках)

26

Page 27: Тестирование на основе моделей, весна 2010: Лекции 1-3

Вариант Число A Число B A+B

1 0 0

2 0 +

3 0 –

4 + 0

5 + +

6 + –

7 – 0

8 – +

9 – –

Вариант Число A Число B A+B

1 0 0 0

2 0 + +

3 0 – –

4 + 0 +

5 + + +

6 + – +

7 + – 0

8 + – –

9 – 0 –

10 – + +

11 – + 0

12 – + –

13 – – –

Вариант Число A Число B A+B Вариант Число A Число B A+B

1 0 0 0 17 – + –

2 0 + + 18 – MAX +

3 0 MAX MAX 19 – – –

4 0 – – 20 – – OVR

5 0 MIN MIN 21 – MIN OVR

6 + 0 + 22 MAX 0 MAX

7 + + + 23 MAX + OVR

8 + + OVR 24 MAX – +

9 + MAX OVR 25 MAX MAX OVR

10 + – + 26 MAX MIN –

11 + – 0 27 MIN 0 MIN

12 + – – 28 MIN + –

13 + MIN – 29 MIN - OVR

14 – 0 – 30 MIN MAX –

15 – + + 31 MIN MIN OVR

16 – + 0

ДОМЕНЫ – КОМБИНАЦИИ ПОДТИПОВДОМЕНЫ – КОМБИНАЦИИ ПОДТИПОВВариант Множество A Множество B A∩B

1 ∅ ∅ ∅

2 ∅ непусто ∅

3 непусто ∅ ∅

4 непусто непусто ∅

5 непусто непусто непусто = A = B

6 непусто непусто непусто = A ≠ B

7 непусто непусто непусто = B ≠ A

8 непусто непусто непусто ≠ A, ≠ B

27

Page 28: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОМЕНЫ – СТРУКТУРА ДАННЫХДОМЕНЫ – СТРУКТУРА ДАННЫХ

q S = 0 или S = 1q Денормализованные числа E = 0

§ M = 0 +0, –0§ M ≠ 0 000001, 000101, 010100, 100000, 111111

q Нормализованные числа 0 < E < 2k-1

§ E 000001, 000101, 011111, 100010, 111110§ M 000000, 000001, 000110, 011001, 100110, 111111

q Исключительные числа E = 2k-1

§ M = 0 +∞, –∞§ M ≠ 0 NaN 000001, 000101, 010100, 101000, 111111

28

знак

k+10

экспонента мантисса

0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 00 0 0 00 1 k

S E M

Page 29: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОМЕНЫ – ИНТЕРВАЛЫ ОДНОРОДНОСТИДОМЕНЫ – ИНТЕРВАЛЫ ОДНОРОДНОСТИ

29

max

0

Page 30: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОМЕНЫ – ПОДОБЛАСТИДОМЕНЫ – ПОДОБЛАСТИ

ax2 + bx + с = 0int solve(double a, double, b, double c, double *x1, double *x2)

30

Вариант Условие Число решений

Результат

1 a = b = с = 0 ∞ –1

2 a = b = 0, с ≠ 0 0 0

3 a = 0, b ≠ 0 1 1

4 a ≠ 0, b2-4ac < 0 0 0

5 a ≠ 0, b2-4ac = 0 1 1

6 a ≠ 0, b2-4ac > 0 2 2

Вариант Условие Число решений

Результат

1 a = b = с = 0 ∞ –1

2 a = b = 0, с > 0 0 0

3 a = b = 0, с < 0 0 0

4 a = 0, b > 0 1 1

5 a = 0, b < 0 1 1

6 a > 0, b2-4ac < 0 0 0

7 a < 0, b2-4ac < 0 0 0

8 a > 0, b2-4ac = 0 1 1

9 a < 0, b2-4ac = 0 1 1

10 a > 0, b2-4ac > 0 2 2

11 a < 0, b2-4ac > 0 2 2

Page 31: Тестирование на основе моделей, весна 2010: Лекции 1-3

СТРУКТУРА ПОТОКА УПРАВЛЕНИЯСТРУКТУРА ПОТОКА УПРАВЛЕНИЯ

q Компоненты, классы, методыq Инструкцииq Ветвленияq Цепочки блоковq Цепочки вызововq Элементарные условия и их комбинации

31

Page 32: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПРИМЕРЫ КРИТЕРИЕВ ПОКРЫТИЯПРИМЕРЫ КРИТЕРИЕВ ПОКРЫТИЯpublic Node ReplaceChild(Node nc, Node oc){

if(nc == null) throw new NullReferenceException("The new child is null");if(oc == null || !Children.Contains(oc)) throw new DomException("Ref node is not a child of this node", NOT_FOUND_ERROR);if( !(this is Document) && nc.OwnerDocument != this.ownerDocument || this is Document && nc.OwnerDocument != this)

throw new DomException("New child provided is from another document context", WRONG_DOCUMENT_ERROR);if(nc == this || Ancestors.Contains(nc)) throw new DomException("Cannot insert this node or its ancestor", HIERARCHY_REQUEST_ERROR);if(!(nc is ISPImplDocumentFragment) && !this.IsAllowedChild(nc)) throw new DomException("Cannot insert ...", HIERARCHY_REQUEST_ERROR);if(this is Document && nc is DocumentType && !this.Children.Contains(nc) && this.HasDifferentChildOfType(typeof(DocumentType), oc))

throw new DomException("The second DocumentType cannot be inserted in a Document", HIERARCHY_REQUEST_ERROR);if( this is Document && nc is DocumentType && !this.Children.Contains(nc) && !this.HasDifferentChildOfType(typeof(DocumentType), oc)

&& HasDifferentNoncommentChildrenBefore(oldChild, newChild))throw new DomException("DocumentType node cannot be inserted in a Document after non-comment nodes", UNKNOWN_ERROR);

if( this is Document && !(nc is Comment) && !(nc is DocumentFragment) && !(oldChild is DocumentType) && HasDifferentDocumentTypeChildAfter(oldChild, newChild))

throw new DomException("Non-comment node cannot be inserted into a Document before DocumentType", UNKNOWN_ERROR);if(this is Document && nc is Element && !this.Children.Contains(nc) && this.HasDifferentChildOfType(typeof(Element), oc))

throw new DomException("The second Element cannot be inserted in a Document", HIERARCHY_REQUEST_ERROR);if(this.IsReadOnly) throw new DomException("This node is read-only", NO_MODIFICATION_ALLOWED_ERROR);if(nc.ParentNode != null && nc.ParentNode.IsReadOnly) throw new DomException("Parent of new child is ...", NO_MODIFICATION_ALLOWED_ERROR);if(nc is DocumentFragment) {

foreach(Node ni in nc.Children) {if(!this.IsAllowedChild(ni)) throw new DomException("Cannot insert ...", HIERARCHY_REQUEST_ERROR);if(this is Document && ni is DocumentType && this.HasDifferentChildOfType(typeof(DocumentType), null))

throw new DomException("The second DocumentType cannot be inserted in a Document", HIERARCHY_REQUEST_ERROR);if(this is Document && ni is Element && this.HasDifferentChildOfType(typeof(Element), null))

throw new DomException("The second Element cannot be inserted in a Document", HIERARCHY_REQUEST_ERROR);if(this is Document && !(ni is Comment) && !(oldChild is DocumentType) && HasDifferentDocumentTypeChildAfter(oldChild, null))

throw new DomException("Non-comment node cannot be inseted into a Dcoument before DocumentType", UNKNOWN_ERROR);}

}

int i = this.Children.IndexOf(oc);if(!(nc is DocumentFragment) && nc != oc) {

if(nc.ParentNode != null) nc.ParentNode.Children.Remove(nc);nc.parent = this;if(this.Children.Contains(nc)) this.Children.Remove(nc);this.Children.Insert(i, nc);

}else if(nc is DocumentFragment) {

foreach(Node ni in nc.Children) { ni.parent = this; this.Children.Insert(i++, ni); }nc.Children.Clear();

}if(nc != oc) { this.Children.Remove(oc); oc.parent = null; }return oc;

}32

Условия Ветви Критерии покрытия

a b c d a || !b && c c && !a || b && d DC CC D/CC MDC MC/DC SMCC MCC

0 0 0 0 0 0 X X X X X X X

0 0 0 1 0 0 X

0 0 1 0 1 1 X X X X X

0 0 1 1 1 1 X

0 1 0 0 0 0 X X

0 1 0 1 0 1 X X X

0 1 1 0 0 1 X X

0 1 1 1 0 1 X

1 0 0 0 1 0 X X X

1 0 0 1 1 0 X

1 0 1 0 1 0 X X

1 0 1 1 1 0 X X

1 1 0 0 1 0 X

1 1 0 1 1 1 X

1 1 1 0 1 0 X X X

1 1 1 1 1 1 X X X X X

Page 33: Тестирование на основе моделей, весна 2010: Лекции 1-3

СТРУКТУРА ПОТОКОВ ДАННЫХСТРУКТУРА ПОТОКОВ ДАННЫХ

DU-пары и DU-пути

33

1 int gcd(int a, int b)2 {3 if(a == 0)4 return b;5 if(b == 0)6 return a;7 if(a > 0 && b < 0 || a < 0 && b > 0)8 b = -b;9 10 while(b != 0)11 { 12 if(b > a && a > 0 || b < a && a < 0)13 { 14 a = b-a;15 b = b-a;16 a = a+b;17 }18 19 b = a-b;20 a = a-b;21 }22 23 return a;24 }

3

5

7

10

12

7’

12’

4

6

23

Page 34: Тестирование на основе моделей, весна 2010: Лекции 1-3

СТРУКТУРА АВТОМАТОВСТРУКТУРА АВТОМАТОВ

q Состоянияq Переходыq Цепочки переходовq Простые путиq Простые циклы с продолжением

34

0

1 2 3

4 5 6

7

Page 35: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПРОБЛЕМНАЯ МОДЕЛЬ – МУТАНТЫПРОБЛЕМНАЯ МОДЕЛЬ – МУТАНТЫ

q Операторы мутации§ if(A) B else C

o ⇒ if(A) Bo ⇒ if(A) Co ⇒ if(A) C else Bo ⇒ Bo ⇒ C

q Программа P§ ⇒ мутанты {P1, P2, …, Pn}§ устраняем эквивалентные§ выполняем тесты§ определяем «неубитых» мутантов

35

§ X := Y + Zo ⇒ X := Yo ⇒ X := Zo ⇒ X := Y – Zo ⇒ Y := Y + Z

Page 36: Тестирование на основе моделей, весна 2010: Лекции 1-3

МЕТОДЫ ПОСТРОЕНИЯ ТЕСТОВМЕТОДЫ ПОСТРОЕНИЯ ТЕСТОВ

q Вероятностныеq Комбинаторные

§ Автоматные

q Нацеленные

36

Page 37: Тестирование на основе моделей, весна 2010: Лекции 1-3

ВЕРОЯТНОСТНЫЕ МЕТОДЫВЕРОЯТНОСТНЫЕ МЕТОДЫ

Тестовые ситуации строятсяна основе вероятностныхраспределений

q Модель ситуаций представляет собой распределения для различных элементов ситуаций§ По частоте использования§ По связанным рискам§ По отлаженности

37

Page 38: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ

ÌПозволяет получить много тестов с минимальными затратами

ÌХорошо автоматизируетсяÌХорошо находятся случайные ошибки (опечатки)

− Полнота полученного набора тестов непредсказуема

− Плохо находятся серьезные ошибки− Исходные распределения часто неизвестны

38

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

Page 39: Тестирование на основе моделей, весна 2010: Лекции 1-3

КОМБИНАТОРНЫЕ МЕТОДЫКОМБИНАТОРНЫЕ МЕТОДЫ

Тестовые воздействия разбиваютсяна некоторые элементыТестовые ситуации строятся каквсевозможные комбинации этихэлементов по определенным правилам

q Дерево классификацииq Тестирование на основе грамматикq Покрывающие наборыq Пути в автоматах

39

Page 40: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ

ÌВо многих случаях достаточно дешевоÌХорошо автоматизируетсяÌБолее систематично, чем вероятностное

−Некоторые виды ошибок находятся плохо−При учете многих факторов построение набора тестов требует гораздо больше ресурсов

40

Комбинаторное тестирование

Page 41: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПРИМЕР: ПЕЧАТЬ WEB-СТРАНИЦЫПРИМЕР: ПЕЧАТЬ WEB-СТРАНИЦЫ

Размер Цвета Формат Принтер Браузер ОС1 страница Нет цветных

рисунков A4 HP Internet

ExplorerWindows XP

2 страницы Есть цветные рисунки

A3 Epson Mozilla Firefox Windows Vista

7 страниц A5 Canon Opera Linux Ubuntu

B5 Xerox Linux SUSE

Letter Linux RHEL

41

3·2·5·4·3·5 = 1800 вариантов

Page 42: Тестирование на основе моделей, весна 2010: Лекции 1-3

РЕШЕНИЕРЕШЕНИЕ

1 1 страница Нет цветных рисунков A4 HP Internet Explorer Linux RHEL

2 1 страница Нет цветных рисунков A4 HP Opera Windows XP

3 1 страница Нет цветных рисунков A3 Epson Internet Explorer Windows Vista

4 1 страница Нет цветных рисунков Letter Canon Internet Explorer Linux RHEL

5 1 страница Есть цветные рисунки A5 Epson Opera Linux Ubuntu

6 1 страница Есть цветные рисунки B5 HP Mozilla Firefox Windows Vista7 1 страница Есть цветные рисунки Letter Xerox Opera Linux SUSE8 2 страницы Нет цветных рисунков A3 Xerox Mozilla Firefox Linux RHEL9 2 страницы Нет цветных рисунков B5 Canon Opera Linux SUSE10 2 страницы Нет цветных рисунков Letter HP Mozilla Firefox Linux Ubuntu11 2 страницы Есть цветные рисунки A4 Xerox Opera Linux Ubuntu12 2 страницы Есть цветные рисунки A3 HP Opera Linux SUSE13 2 страницы Есть цветные рисунки A5 Xerox Opera Windows Vista14 2 страницы Есть цветные рисунки Letter Epson Internet Explorer Windows XP15 7 страниц Нет цветных рисунков A4 Canon Internet Explorer Windows Vista16 7 страниц Нет цветных рисунков A3 Xerox Opera Windows XP17 7 страниц Нет цветных рисунков A5 HP Internet Explorer Linux SUSE18 7 страниц Нет цветных рисунков A5 Canon Mozilla Firefox Windows XP19 7 страниц Нет цветных рисунков B5 HP Internet Explorer Linux RHEL20 7 страниц Нет цветных рисунков B5 Xerox Internet Explorer Linux Ubuntu21 7 страниц Есть цветные рисунки A4 Epson Mozilla Firefox Linux SUSE22 7 страниц Есть цветные рисунки A3 Canon Opera Linux Ubuntu23 7 страниц Есть цветные рисунки A5 Epson Opera Linux RHEL24 7 страниц Есть цветные рисунки B5 Epson Opera Windows XP25 7 страниц Есть цветные рисунки Letter Epson Internet Explorer Windows Vista

42

25 вариантовПокрытие пар –покрывающий набор силы 2

Можно построитькомбинации всех троек –покрывающий набор силы 3– 100 вариантов

Page 43: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПОКРЫВАЮЩИЕ НАБОРЫПОКРЫВАЮЩИЕ НАБОРЫ

q Покрывающий набор силы t для k параметров, имеющих значения n1, …, nk– матрица {Сij} i∈[1..N], j∈[1..k], Cij∈[1..nj]∀j1, …, jt jl∈[1..k] ∀vj1, …, vjt vjl∈[1..njl]∃i∈[1..N] ∀l∈[1..t] Сijl = vjlмножество таких наборов – CA(t; n1, …, nk)

q Однородные наборы– n1= … =nk=n, CA(t; k, n)

q Минимальное число строк в однородном наборе– ~tntlog1+ε(k)

q Построение минимальных однородных наборов из CA(t; k, 2) или CA(2; k, n > 2) – NP-полная задача

43

Page 44: Тестирование на основе моделей, весна 2010: Лекции 1-3

БИНАРНЫЕ ПОКРЫВАЮЩИЕ НАБОРЫБИНАРНЫЕ ПОКРЫВАЮЩИЕ НАБОРЫ

Алгоритм построения CA(2; k, 2)q Выбрать N : k ≤ CN-1

⎡N/2⎤

q Можно построить набор из N строк

44

k N

2-3 44 5

5-10 611-15 716-35 836-56 957-126 10127-210 11

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1

3 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1

4 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1

5 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1

6 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0

7 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0

Page 45: Тестирование на основе моделей, весна 2010: Лекции 1-3

ГЕОМЕТРИЧЕСКИЕ КОНСТРУКЦИИГЕОМЕТРИЧЕСКИЕ КОНСТРУКЦИИ

Алгоритм построения CA(2; pk+1, pk)q n=pk, p – простоеq Первый столбец (∞)– блоки по n одинаковых значений i

q Второй столбец (0) – все n значений j в каждом блоке

q В столбце с номером m∈1..(n-1)(i*m+j) в поле GF(pk)

45

∞ 0 1 2 3 41 0 0 0 0 0 02 0 1 1 1 1 13 0 2 2 2 2 24 0 3 3 3 3 35 0 4 4 4 4 46 1 0 1 2 3 47 1 1 2 3 4 08 1 2 3 4 0 19 1 3 4 0 1 2

10 1 4 0 1 2 311 2 0 2 4 1 312 2 1 3 0 2 413 2 2 4 1 3 014 2 3 0 2 4 115 2 4 1 3 0 216 3 0 3 1 4 217 3 1 4 2 0 318 3 2 0 3 1 419 3 3 1 4 2 020 3 4 2 0 3 121 4 0 4 3 2 122 4 1 0 4 3 223 4 2 1 0 4 324 4 3 2 1 0 425 4 4 3 2 1 0

Page 46: Тестирование на основе моделей, весна 2010: Лекции 1-3

РЕКУРСИВНЫЕ КОНСТРУКЦИИРЕКУРСИВНЫЕ КОНСТРУКЦИИ

Алгоритм построения CA(2; mn+1, n=pk) из CA(2; m, n)q Исходный набор {Aij} i∈[1..N], j∈[1..m]q Вспомогательная матрица {Bij} i∈[1..z=(n2-n)],

j∈[1..(n+1)]

46

n n … n

N

0 A11 A11 … A11 A12 A12 … A12 … A1m A1m … A1m

0 A21 A21 … A21 A22 A22 … A22 … A2m A2m … A2m

… … … … … … … … … … … … … …

0 AN1 AN1 … AN1 AN2 AN2 … AN2 … ANm ANm … ANm

z

B11 B12 … B12 B13 … B13 … … … … B1(n+1) … B1(n+1)

… … … … … … … … … … … … … …

Bz1 Bz2 … Bz2 Bz3 … Bz3 … … … … Bz(n+1) … Bz(n+1)

m m … … … … m

1 0 0 0 0 0 0 0 0 0 0 0 0 0

2 0 0 0 0 1 1 1 1 1 1 1 1 1

3 0 0 0 0 2 2 2 2 2 2 2 2 2

4 0 1 1 1 0 0 0 1 1 1 2 2 2

5 0 1 1 1 1 1 1 2 2 2 0 0 0

6 0 1 1 1 2 2 2 0 0 0 1 1 1

7 0 2 2 2 0 0 0 2 2 2 1 1 1

8 0 2 2 2 1 1 1 0 0 0 2 2 2

9 0 2 2 2 2 2 2 1 1 1 0 0 0

10 1 0 0 0 0 1 1 1 1 2 2 2 2

11 1 1 1 1 1 2 2 2 2 0 0 0 0

12 1 2 2 2 2 0 0 0 0 1 1 1 1

13 2 0 0 0 0 2 2 2 2 1 1 1 1

14 2 1 1 1 1 0 0 0 0 2 2 2 2

15 2 2 2 2 2 1 1 1 1 0 0 0 0

Page 47: Тестирование на основе моделей, весна 2010: Лекции 1-3

ОБЩИЕ ПОКРЫВАЮЩИЕ НАБОРЫОБЩИЕ ПОКРЫВАЮЩИЕ НАБОРЫ

q Неоднородныеq Переменной силыq С ограничениями на сочетания значений

Переборно-оптимизационные алгоритмы

47

Page 48: Тестирование на основе моделей, весна 2010: Лекции 1-3

НАЦЕЛЕННЫЕ МЕТОДЫНАЦЕЛЕННЫЕ МЕТОДЫ

Тестовые ситуации,определяемые критериемполноты, строятся прямо

48

Источники выделяемых ситуацийq Разбиения на классы эквивалентностиq Ограничения на элементы ситуацийq Граничные случаиq Рискиq Функции системыq Длинные сценарии использования

Page 49: Тестирование на основе моделей, весна 2010: Лекции 1-3

ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ

ÌПозволяет находить практически любые виды ошибок

ÌПозволяет концентрировать усилия на различных целях

−Плохо автоматизируется− Требует трудоемкого построения разбиений− Требует анализа осуществимости вариантов и подбора данных

49

Нацеленное тестирование

Page 50: Тестирование на основе моделей, весна 2010: Лекции 1-3

АВТОМАТИЗАЦИЯ СОЗДАНИЯ ТЕСТОВАВТОМАТИЗАЦИЯ СОЗДАНИЯ ТЕСТОВ

Разрешение ограниченийq Перебор данных с проверкой попадания в нужную ситуацию

q Использование решателей (SMT-solvers)q Оптимизационные алгоритмы

50

Page 51: Тестирование на основе моделей, весна 2010: Лекции 1-3

АВТОМАТНЫЕ МЕТОДЫАВТОМАТНЫЕ МЕТОДЫ

Всегда ли реализация ведет себякак спецификация?

51

0

1 2

Спецификация

a/x

b/y

b/x

b/y

a/ya/x

0

1 2

Реализация

a/x

b/y

b/x

b/y

a/ya/x

Page 52: Тестирование на основе моделей, весна 2010: Лекции 1-3

ОГРАНИЧЕНИЯОГРАНИЧЕНИЯ

q Требования к спецификации§ Детерминизм§ Полная определенность § Минимальность§ Сильная связность или наличие reset (R)

q Гипотезы о реализации§ Реализация – конечный детерминированный автомат с теми же стимулами I и реакциями O

§ Полная определенность§ Сильная связность или наличие reset (R)§ В начале находимся в начальном состоянии§ Число состояний ограничено

52

Page 53: Тестирование на основе моделей, весна 2010: Лекции 1-3

W-МЕТОД И D-МЕТОДW-МЕТОД И D-МЕТОД

q Покрывающее множество C§ Пример: C = {ε, b, bb}

q Различающая последовательность d§ Есть не всегда, м.б. экспоненциальной длины§ Пример: d = ab (0→xy, 1→xx, 2→yy)

53

0

1 2

a/x

b/y

b/x

b/y

a/ya/xq D-метод (не всегда применим, экспоненциален)

§ {R}CIN–n+1{d}§ Пример: RaabRbabRbaabRbbabRbbaabRbbbab

q Характеристическое множество W§ Есть всегда, строится за O(pn2)§ Пример: W = {a, b} или {ab}

q W-метод (применим всегда, сложность O(pn3))§ {R}CIN–n+1W§ Пример: RaaRabRbaRbbRbaaRbabRbbaRbbbRbbaaRbbabRbbbaRbbbb

Page 54: Тестирование на основе моделей, весна 2010: Лекции 1-3

ОБЩИЕ АВТОМАТНЫЕ МЕТОДЫОБЩИЕ АВТОМАТНЫЕ МЕТОДЫ

q Недетерминизмq Неполная определенностьq Различные тестовые возможности

v Модели – Labeled Transition Systems (LTS)v Сложные отношения согласованности

Теория разработана плохо – нет финитных моделей ситуаций

54

Page 55: Тестирование на основе моделей, весна 2010: Лекции 1-3

РАБОТЫ ИСП РАНРАБОТЫ ИСП РАН

q Разработка тестов и тестирование§ Операционные системы реального времени§ Базовые библиотеки Linux (Linux Standard Base)§ Протоколы IPv6, Mobile IPv6, IPsec§ Отдельные модули компиляторов Intel§ Микропроцессоры архитектуры MIPS

q Создание технологий и инструментов§ Тестирование на основе моделей (UniTESK)§ Проверка соответствия стандарту LSB

55

Page 56: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕХНОЛОГИЧЕСКАЯ СХЕМАТЕХНОЛОГИЧЕСКАЯ СХЕМА

56

Тестируемая система

Модель состояния + оракул

Модель поведения

Генератор воздействий

Метрика покрытия

12%Модель ситуаций

36%57%87%

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

Page 57: Тестирование на основе моделей, весна 2010: Лекции 1-3

РАСШИРЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯРАСШИРЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

57

постусловие

specification class SqrtSpecification{specification static double sqrt(double x)reads x

{pre { return x >= 0; }post{if(x == 0){branch "Zero argument";return sqrt == 0;

}else{branch "Positive argument";return sqrt >= 0

&& Math.abs((sqrt*sqrt-x)/x< epsilon;

}}

}}

specification double SQRT(double x)reads (double)x

{pre { return x >= 0.; }coverage ZP{if(x == 0.)return (ZERO, "Zero argument");

elsereturn (POS, "Positive argument");

}post{if(coverage(ZP, ZERO))return SQRT == 0.;

elsereturn SQRT >= 0.

&& abs((SQRT*SQRT - x)/x)< epsilon;

}}

}

сигнатура операции

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

ветви функциональности

Page 58: Тестирование на основе моделей, весна 2010: Лекции 1-3

ПОСТРОЕНИЕ КОНЕЧНОГО АВТОМАТАПОСТРОЕНИЕ КОНЕЧНОГО АВТОМАТА

58

состояния

параметры область определения операции

1

2

3цели покрытия

Page 59: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕСТИРОВАНИЕ КОМПОНЕНТОВТЕСТИРОВАНИЕ КОМПОНЕНТОВ

59

Модель ситуаций

Модель поведенияСтруктуры данных

Инварианты Пред- и постусловия

Операции и события

Варианты исполнения

Виды состояний

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

Обходчик автоматов

Оракулы

Виды параметров

ГенераторИтераторы данных

Описание автомата

ДействияСостояния

Метрика покрытия

Тестируемая система

Генерация тестовой последовательности на

лету

Предусловия

Постусловия

Page 60: Тестирование на основе моделей, весна 2010: Лекции 1-3

ТЕСТИРОВАНИЕ АСИНХРОННОСТИТЕСТИРОВАНИЕ АСИНХРОННОСТИ

60

s11

Тести-руемая система

s21

s12

s31

q Несколько последовательностей воздействийq Частично упорядоченное множество событийq Семантика чередования

– это множество должно вытягиваться в последовательность

r12

r22

r11

r21

Время

11

12

21

11

22

21

1231

Время

Page 61: Тестирование на основе моделей, весна 2010: Лекции 1-3

Модель ситуаций

Модель поведения

Типы данных

Инструкции Модель исполнения

Структура процессора

Варианты исполнения

Шаблоны

Эквива-лентность

Алгоритм обработки

Блоки и связи Целевой язык

Ограничения сложности

Комбинации

ГЕНЕРАЦИЯ ТЕСТОВЫХ ПРОГРАММГЕНЕРАЦИЯ ТЕСТОВЫХ ПРОГРАММ

61

Тестовые программы

Зависимости

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

Итератор комбинацийИтератор

зависимостейИтератор ситуаций

Привязка инструкций

ГенераторИтераторы данных

Page 62: Тестирование на основе моделей, весна 2010: Лекции 1-3

СПАСИБО ЗА ВНИМАНИЕ!СПАСИБО ЗА ВНИМАНИЕ!

62