Upload
cs-center
View
98
Download
0
Embed Size (px)
Citation preview
ТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙТЕСТИРОВАНИЕ НА ОСНОВЕ МОДЕЛЕЙ
В. В. КуляминИнститут системного программирования РАН
ПЛАНПЛАН
q Введение§ Сложность современных систем§ Тестирование и связанные понятия
q Тестирование на основе моделей§ Модели поведения§ Модели ситуаций§ Методы построения тестов
q Работы ИСП РАН
2
СЛОЖНОСТЬ СОВРЕМЕННЫХ СИСТЕМСЛОЖНОСТЬ СОВРЕМЕННЫХ СИСТЕМ
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 чел.
СЛОЖНОСТЬ ИНТЕРФЕЙСАСЛОЖНОСТЬ ИНТЕРФЕЙСА
4
5
СЛОЖНОСТЬ ДАННЫХСЛОЖНОСТЬ ДАННЫХ
6
СЛОЖНОСТЬ ПОВЕДЕНИЯСЛОЖНОСТЬ ПОВЕДЕНИЯ
СТАТИСТИКА ОШИБОКСТАТИСТИКА ОШИБОК
q Основная причина – сложностьq Среднее количество ошибок на 1000 строк кода –постоянно (???)
7
0 10 20 30 40 50
Среднее
Microsoft
NASA
Linux
РИСКИ, СВЯЗАННЫЕ С ОШИБКАМИРИСКИ, СВЯЗАННЫЕ С ОШИБКАМИ
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$
ЧТО ДЕЛАТЬ?ЧТО ДЕЛАТЬ?
q Не делать ошибок— Невозможно из-за сложности
q Предотвращение ошибок§ Повышение уровня абстракции языков§ Устранение error-prone конструкций§ Стандартизация и документирование языков, интерфейсов и библиотек
q Выявление ошибок§ Верификация и валидацияТестирование на основе моделей – частный случай
q Исправление ошибок
9
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
ТЕСТИРОВАНИЕТЕСТИРОВАНИЕ
[SWEBOK 2004]Проверка соответствия тестируемой системы требованиям
§ Верификация§ Альтернативы– валидация§ Другие мнения (Cem Caner) – любой анализ
В ходе реальной работы этой системы§ АльтернативыЭкспертиза, статический анализ, проверка моделей (model checking) дедуктивный анализ (theorem proving)
В конечном наборе специально созданных ситуаций§ Другие мнения (IEEE 610.12-1990)§ АльтернативыМониторинг (runtime verification, passive testing)
11
ЦЕЛИ ТЕСТИРОВАНИЯЦЕЛИ ТЕСТИРОВАНИЯ
q Поиск ошибок§ Четкие результаты§ Гарантировать отсутствие ошибок нельзя§ Что делать, если ошибки не находятся?§ Когда можно прекратить тестирование?
q Оценка качества тестируемой системы (SUT)§ Объективные условия завершения§ Критерии полноты тестирования – как выбирать тесты
q Контроль развития системы§ Тесты – инструмент отслеживания изменений§ Организация тестов – как облегчить модификации
12
ВИДЫ ТЕСТИРОВАНИЯВИДЫ ТЕСТИРОВАНИЯ
q По проверяемым свойствам§ ISO 9126
o Функциональностьo Надежностьo Производительность
• Нагрузочноеo Переносимостьo Удобство использования― Удобство сопровождения
§ Регрессионное§ Аттестационное (соответствия)
q По исполнителю§ При разработке§ Альфа§ Бета§ Приемочное
q По уровню§ Модульное§ Компонентное§ Интеграционное§ Функций (features)§ Системное
q По источнику тестов§ Структурное§ «Черного ящик໧ «Серого ящик໧ На отказ
o «Дымовое»o Стрессовое
q По интерфейсу§ UI§ API§ Сообщения
13
СТРУКТУРА ТЕСТАСТРУКТУРА ТЕСТА
Тест – тестовая ситуация + проверка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();
}
ТЕСТОВЫЕ СИТУАЦИИТЕСТОВЫЕ СИТУАЦИИ
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 Нажатие на кнопку
МОДЕЛИ В ТЕСТИРОВАНИИМОДЕЛИ В ТЕСТИРОВАНИИ
q Требования§ Модель поведения тестируемой системы (SUT)§ Определяет корректное и некорректное поведение
q Структура тестовых ситуаций§ Модель ситуаций, возникающих при работе SUT§ Определяет виды и элементы ситуаций, их важность и связанные риски
§ Критерий полноты тестирования, критерий покрытия, метрика покрытия
Тестирование на основе моделей― Используемые модели заданы явно
16
МОДЕЛИ ПОВЕДЕНИЯМОДЕЛИ ПОВЕДЕНИЯ
q Логико-алгебраические§ Различные логикиПервого порядка, теории типов, временные, модальные, …
§ Различные алгебраические структурыq Исполнимые
§ Различные автоматыFSM, LTS, расширенные, взаимодействующие, иерархические, временные, сети Петри, Statecharts, …
q Гибридные§ LTS ~ Алгебры процессов, модели стандартных термов§ Abstract State Machines§ Программные контракты с состоянием
17
МОДЕЛИ ПОВЕДЕНИЯ – АРИФМЕТИКАМОДЕЛИ ПОВЕДЕНИЯ – АРИФМЕТИКА
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
МОДЕЛИ ПОВЕДЕНИЯ – 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
МОДЕЛИ ПОВЕДЕНИЯ – АРКТАНГЕНСМОДЕЛИ ПОВЕДЕНИЯ – АРКТАНГЕНС
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
ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ (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
ТОЧНАЯ МОДЕЛЬ SQRT (IEEE 745)ТОЧНАЯ МОДЕЛЬ SQRT (IEEE 745)
q дает результат округления точного значения в соответствии с текущим режимом§ к ближайшему§ к +∞, к –∞, к 0
q для +∞ дает +∞ и выставляет флаг DIVISION-BY-ZEROq для -0 дает -0 (???!!!)q для x < 0 дает NaN и выставляет флаг INVALIDq в случае неточного результата выставляет флаг INEXACTq нигде не выставляет флаги OVERFLOW, UNDERFLOW
22
МОДЕЛИ ПОВЕДЕНИЯ – СЕМАФОРМОДЕЛИ ПОВЕДЕНИЯ – СЕМАФОР
Расширенный конечный автомат
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
0
P
МОДЕЛИ ПОВЕДЕНИЯ – БУФЕР-СТЕКМОДЕЛИ ПОВЕДЕНИЯ – БУФЕР-СТЕК
Расширенная сеть Петри
24
1 2 3 4
C
(in)
/x1:=in
(in) (in) (in)
/x2:=in /x3:=in /x4:=in
/x1 /x2 /x3 /x4
МОДЕЛИ ПОВЕДЕНИЯ – СПИСОКМОДЕЛИ ПОВЕДЕНИЯ – СПИСОК
Абстрактный тип данных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
МОДЕЛИ СИТУАЦИЙМОДЕЛИ СИТУАЦИЙ
q Составляющие§ Элементы тестовых ситуаций
o Действия и их наборыo Данные и состояния
§ Классификация ситуаций и их элементов, выделение однородных областей
§ Важность и риски q Виды моделей ситуаций
§ Доменные (на основе входных и выходных данных)§ Структурные (на основе затрагиваемых элементов SUT)§ Функциональные (на основе элементов требований)§ Проблемные (на основе возможных проблем и рисков, гипотез об ошибках)
26
Вариант Число 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
ДОМЕНЫ – СТРУКТУРА ДАННЫХДОМЕНЫ – СТРУКТУРА ДАННЫХ
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
ДОМЕНЫ – ИНТЕРВАЛЫ ОДНОРОДНОСТИДОМЕНЫ – ИНТЕРВАЛЫ ОДНОРОДНОСТИ
29
max
0
ДОМЕНЫ – ПОДОБЛАСТИДОМЕНЫ – ПОДОБЛАСТИ
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
СТРУКТУРА ПОТОКА УПРАВЛЕНИЯСТРУКТУРА ПОТОКА УПРАВЛЕНИЯ
q Компоненты, классы, методыq Инструкцииq Ветвленияq Цепочки блоковq Цепочки вызововq Элементарные условия и их комбинации
31
ПРИМЕРЫ КРИТЕРИЕВ ПОКРЫТИЯПРИМЕРЫ КРИТЕРИЕВ ПОКРЫТИЯ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
СТРУКТУРА ПОТОКОВ ДАННЫХСТРУКТУРА ПОТОКОВ ДАННЫХ
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
СТРУКТУРА АВТОМАТОВСТРУКТУРА АВТОМАТОВ
q Состоянияq Переходыq Цепочки переходовq Простые путиq Простые циклы с продолжением
34
0
1 2 3
4 5 6
7
ПРОБЛЕМНАЯ МОДЕЛЬ – МУТАНТЫПРОБЛЕМНАЯ МОДЕЛЬ – МУТАНТЫ
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
МЕТОДЫ ПОСТРОЕНИЯ ТЕСТОВМЕТОДЫ ПОСТРОЕНИЯ ТЕСТОВ
q Вероятностныеq Комбинаторные
§ Автоматные
q Нацеленные
36
ВЕРОЯТНОСТНЫЕ МЕТОДЫВЕРОЯТНОСТНЫЕ МЕТОДЫ
Тестовые ситуации строятсяна основе вероятностныхраспределений
q Модель ситуаций представляет собой распределения для различных элементов ситуаций§ По частоте использования§ По связанным рискам§ По отлаженности
37
ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ
ÌПозволяет получить много тестов с минимальными затратами
ÌХорошо автоматизируетсяÌХорошо находятся случайные ошибки (опечатки)
− Полнота полученного набора тестов непредсказуема
− Плохо находятся серьезные ошибки− Исходные распределения часто неизвестны
38
Вероятностное тестирование
КОМБИНАТОРНЫЕ МЕТОДЫКОМБИНАТОРНЫЕ МЕТОДЫ
Тестовые воздействия разбиваютсяна некоторые элементыТестовые ситуации строятся каквсевозможные комбинации этихэлементов по определенным правилам
q Дерево классификацииq Тестирование на основе грамматикq Покрывающие наборыq Пути в автоматах
39
ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ
ÌВо многих случаях достаточно дешевоÌХорошо автоматизируетсяÌБолее систематично, чем вероятностное
−Некоторые виды ошибок находятся плохо−При учете многих факторов построение набора тестов требует гораздо больше ресурсов
40
Комбинаторное тестирование
ПРИМЕР: ПЕЧАТЬ 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 вариантов
РЕШЕНИЕРЕШЕНИЕ
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 вариантов
ПОКРЫВАЮЩИЕ НАБОРЫПОКРЫВАЮЩИЕ НАБОРЫ
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
БИНАРНЫЕ ПОКРЫВАЮЩИЕ НАБОРЫБИНАРНЫЕ ПОКРЫВАЮЩИЕ НАБОРЫ
Алгоритм построения 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
ГЕОМЕТРИЧЕСКИЕ КОНСТРУКЦИИГЕОМЕТРИЧЕСКИЕ КОНСТРУКЦИИ
Алгоритм построения 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
РЕКУРСИВНЫЕ КОНСТРУКЦИИРЕКУРСИВНЫЕ КОНСТРУКЦИИ
Алгоритм построения 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
ОБЩИЕ ПОКРЫВАЮЩИЕ НАБОРЫОБЩИЕ ПОКРЫВАЮЩИЕ НАБОРЫ
q Неоднородныеq Переменной силыq С ограничениями на сочетания значений
Переборно-оптимизационные алгоритмы
47
НАЦЕЛЕННЫЕ МЕТОДЫНАЦЕЛЕННЫЕ МЕТОДЫ
Тестовые ситуации,определяемые критериемполноты, строятся прямо
48
Источники выделяемых ситуацийq Разбиения на классы эквивалентностиq Ограничения на элементы ситуацийq Граничные случаиq Рискиq Функции системыq Длинные сценарии использования
ДОСТОИНСТВА И НЕДОСТАТКИДОСТОИНСТВА И НЕДОСТАТКИ
ÌПозволяет находить практически любые виды ошибок
ÌПозволяет концентрировать усилия на различных целях
−Плохо автоматизируется− Требует трудоемкого построения разбиений− Требует анализа осуществимости вариантов и подбора данных
49
Нацеленное тестирование
АВТОМАТИЗАЦИЯ СОЗДАНИЯ ТЕСТОВАВТОМАТИЗАЦИЯ СОЗДАНИЯ ТЕСТОВ
Разрешение ограниченийq Перебор данных с проверкой попадания в нужную ситуацию
q Использование решателей (SMT-solvers)q Оптимизационные алгоритмы
50
АВТОМАТНЫЕ МЕТОДЫАВТОМАТНЫЕ МЕТОДЫ
Всегда ли реализация ведет себякак спецификация?
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
ОГРАНИЧЕНИЯОГРАНИЧЕНИЯ
q Требования к спецификации§ Детерминизм§ Полная определенность § Минимальность§ Сильная связность или наличие reset (R)
q Гипотезы о реализации§ Реализация – конечный детерминированный автомат с теми же стимулами I и реакциями O
§ Полная определенность§ Сильная связность или наличие reset (R)§ В начале находимся в начальном состоянии§ Число состояний ограничено
52
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
ОБЩИЕ АВТОМАТНЫЕ МЕТОДЫОБЩИЕ АВТОМАТНЫЕ МЕТОДЫ
q Недетерминизмq Неполная определенностьq Различные тестовые возможности
v Модели – Labeled Transition Systems (LTS)v Сложные отношения согласованности
Теория разработана плохо – нет финитных моделей ситуаций
54
РАБОТЫ ИСП РАНРАБОТЫ ИСП РАН
q Разработка тестов и тестирование§ Операционные системы реального времени§ Базовые библиотеки Linux (Linux Standard Base)§ Протоколы IPv6, Mobile IPv6, IPsec§ Отдельные модули компиляторов Intel§ Микропроцессоры архитектуры MIPS
q Создание технологий и инструментов§ Тестирование на основе моделей (UniTESK)§ Проверка соответствия стандарту LSB
55
ТЕХНОЛОГИЧЕСКАЯ СХЕМАТЕХНОЛОГИЧЕСКАЯ СХЕМА
56
Тестируемая система
Модель состояния + оракул
Модель поведения
Генератор воздействий
Метрика покрытия
12%Модель ситуаций
36%57%87%
Модель состояния
РАСШИРЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯРАСШИРЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
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;
}}
}
сигнатура операции
предусловиеограничения доступа
ветви функциональности
ПОСТРОЕНИЕ КОНЕЧНОГО АВТОМАТАПОСТРОЕНИЕ КОНЕЧНОГО АВТОМАТА
58
состояния
параметры область определения операции
1
2
3цели покрытия
ТЕСТИРОВАНИЕ КОМПОНЕНТОВТЕСТИРОВАНИЕ КОМПОНЕНТОВ
59
Модель ситуаций
Модель поведенияСтруктуры данных
Инварианты Пред- и постусловия
Операции и события
Варианты исполнения
Виды состояний
Модель состояния
Обходчик автоматов
Оракулы
Виды параметров
ГенераторИтераторы данных
Описание автомата
ДействияСостояния
Метрика покрытия
Тестируемая система
Генерация тестовой последовательности на
лету
Предусловия
Постусловия
ТЕСТИРОВАНИЕ АСИНХРОННОСТИТЕСТИРОВАНИЕ АСИНХРОННОСТИ
60
s11
Тести-руемая система
s21
s12
s31
q Несколько последовательностей воздействийq Частично упорядоченное множество событийq Семантика чередования
– это множество должно вытягиваться в последовательность
r12
r22
r11
r21
Время
11
12
21
11
22
21
1231
Время
Модель ситуаций
Модель поведения
Типы данных
Инструкции Модель исполнения
Структура процессора
Варианты исполнения
Шаблоны
Эквива-лентность
Алгоритм обработки
Блоки и связи Целевой язык
Ограничения сложности
Комбинации
ГЕНЕРАЦИЯ ТЕСТОВЫХ ПРОГРАММГЕНЕРАЦИЯ ТЕСТОВЫХ ПРОГРАММ
61
Тестовые программы
Зависимости
Модель исполнения
Итератор комбинацийИтератор
зависимостейИтератор ситуаций
Привязка инструкций
ГенераторИтераторы данных
СПАСИБО ЗА ВНИМАНИЕ!СПАСИБО ЗА ВНИМАНИЕ!
62