Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "В. В. Кулямин Институт системного программирования РАН."— Presentation transcript:

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

2  Введение  Сложность современных систем  Тестирование и связанные понятия  Тестирование на основе моделей  Модели поведения  Модели ситуаций  Методы построения тестов  Работы ИСП РАН 2

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

4 4

5 5

6 6

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

8  Космические аппараты  Mariner I (1962)  Фобос-1 (1988)  Mars Climate Orbiter, Mars Polar Lander (1999)  Инфраструктура  AT&T long distance network crash (1990)  Northeast Blackout (2003)  OpenSSL rnd in Debian (2006-8)  Heathrow Airport Terminal 5 baggage system (2008)  Автомобили  Toyota Prius (2005, 2010)  Медицинское оборудование  Therac-25 (1985-7)  Авионика и военное оборудование  Lockheed F-117 (1982)  MIM-104 Patriot (1991)  Ariane 5 (1996)  USS Yorktown (1997)  F-22 Raptor (2007) 8 Потери индустрии США в 2001 году – 60 G$

9  Не делать ошибок —Невозможно из-за сложности  Предотвращение ошибок  Повышение уровня абстракции языков  Устранение error-prone конструкций  Стандартизация и документирование языков, интерфейсов и библиотек  Выявление ошибок  Верификация и валидация Тестирование на основе моделей – частный случай  Исправление ошибок 9

10  Computer Science  Алгоритм  Одна четкая задача o ее м.б. невозможно решить o или можно решить идеально  Можно устранить ошибки  Основа – математика  Фундаментальная дисциплина  Электродинамика  Software Engineering  Система  Много неясных задач o нужно решать неразрешимое o и нельзя решить окончательно  Ошибки есть всегда  Основа – mix (???) o Ad hoc решения o Микроэкономика o Групповая и когнитивная психология o Социология  Инженерная дисциплина (???)  Электротехника 10

11 [SWEBOK 2004] Проверка соответствия тестируемой системы требованиям  Верификация  Альтернативы – валидация  Другие мнения (Cem Caner) – любой анализ В ходе реальной работы этой системы  Альтернативы Экспертиза, статический анализ, проверка моделей (model checking) дедуктивный анализ (theorem proving) В конечном наборе специально созданных ситуаций  Другие мнения (IEEE 610.12-1990)  Альтернативы Мониторинг (runtime verification, passive testing) 11

12  Поиск ошибок  Четкие результаты  Гарантировать отсутствие ошибок нельзя  Что делать, если ошибки не находятся?  Когда можно прекратить тестирование?  Оценка качества тестируемой системы (SUT)  Объективные условия завершения  Критерии полноты тестирования – как выбирать тесты  Контроль развития системы  Тесты – инструмент отслеживания изменений  Организация тестов – как облегчить модификации 12

13  По проверяемым свойствам  ISO 9126 o Функциональность o Надежность o Производительность Нагрузочное o Переносимость o Удобство использования ―Удобство сопровождения  Регрессионное  Аттестационное (соответствия)  По исполнителю  При разработке  Альфа  Бета  Приемочное  По уровню  Модульное  Компонентное  Интеграционное  Функций (features)  Системное  По источнику тестов  Структурное  «Черного ящика»  «Серого ящика»  На отказ o «Дымовое» o Стрессовое  По интерфейсу  UI  API  Сообщения 13

14 Тест – тестовая ситуация + проверка  Тестовый вариант  Инициализация  Выполнение  Проверка  Финализация 14 public void testGetClients() { Session s = SessionFactory.getSession(); s.beginTransaction(); List clients = s.createQuery("from Client").list(); Client jones = new Client("Mike", "Jones"); Assert.assertContains(clients, jones "Jones should be in clients"); s.rollbackTransaction(); }

15  Обращение к тестируемой системе  Воздействие  Данные обращения  Набор параллельных обращений  Состояние системы  Внешние условия 15  Вызов функции или метода Product.get(74291).setValue(485);  Отправка сообщения Send( new ProductValueChangeMsg(74291, 485) );  Ввод команды produpd -t -id 74291 -val 485  Нажатие на кнопку

16  Требования  Модель поведения тестируемой системы (SUT)  Определяет корректное и некорректное поведение  Структура тестовых ситуаций  Модель ситуаций, возникающих при работе SUT  Определяет виды и элементы ситуаций, их важность и связанные риски  Критерий полноты тестирования, критерий покрытия, метрика покрытия Тестирование на основе моделей ―Используемые модели заданы явно 16

17  Логико-алгебраические  Различные логики Первого порядка, теории типов, временные, модальные, …  Различные алгебраические структуры  Исполнимые  Различные автоматы FSM, LTS, расширенные, взаимодействующие, иерархические, временные, сети Петри, Statecharts, …  Гибридные  LTS ~ Алгебры процессов, модели стандартных термов  Abstract State Machines  Программные контракты с состоянием 17

18 x – 32-битное целое число  abs(x) – (x ≥ 0) ? (x) : (-x)  abs(x) ≥ 0  abs(–2147483648) = Машинная целочисленная арифметика  Z / 2 32 Z = {[-2 31 ], [-2 31 +1], …, [-2], [-1], [0], [1], [2], …, [2 31 -1]}  +, –, *  (34)! = 18 ? –2147483648 ? 0

19 x – число с плавающей точкой (double) sqrt(x) – квадратный корень  pre : (x ≥ 0)  post: (sqrt*sqrt = x) r = [sqrt(2)] double = 6369051672525773/2 52 r*r = 2.0000000000000002734323463…  post: abs(sqrt*sqrt – x) < ε = 3*10 -16 r = [sqrt(2 105 )] double = 6369051672525773 abs(r*r – 2 105 ) = 5545866846675497  post: (x = 0)  (sqrt = 0) & (x ≠ 0)  abs((sqrt*sqrt – x)/x) < ε 19

20 x – число с плавающей точкой (double) atan(x) – арктангенс  post: (x = 0)  (atan = 0) & (x ≠ 0)  abs((tan(atan) – x)/x) < ε (tan(atan(10 50 )) = 1.633123935319537... ⋅ 10 16 [ π /2] double = 884279719003555/2 49 (π /2 - [ π /2] double ) = 6.1232339957367658… ⋅ 10 –17 20 π /2 atan(x) π /2 [π /2] double

21 21  Нормализованные: E > 0 & E < 2 k –1 X = (–1) S ·2 (E–B) ·(1+M/2 (n–k–1) )  Денормализованные: E = 0 X = (–1) S ·2 (–B+1) ·(M/2 (n–k–1) )  Exceptional: E = 2 k –1  M = 0 : + , –   M ≠ 0 : NaN знак k+1 n-1n-1 0 экспонентамантисса 0111111010010000000000000000000 01k n, k S E M B = 2 (k–1) –1 2 (–1) ·1.101 2 = 13/16 = 0,8125 0, -0 1/0 = + , (–1)/0 = –  0/0 = NaN n = 32, k = 8 – float (single precision) n = 64, k = 11 – double n = 79, k = 15– extended double n = 128, k = 15– quadruple 1/2 (n-k-1) – 1 ulp

22  дает результат округления точного значения в соответствии с текущим режимом  к ближайшему  к + , к – , к 0  для +∞ дает +∞ и выставляет флаг DIVISION-BY-ZERO  для -0 дает -0 (???!!!)  для x < 0 дает NaN и выставляет флаг INVALID  для NaN дает NaN  в случае неточного результата выставляет флаг INEXACT  нигде не выставляет флаги OVERFLOW, UNDERFLOW 22

23 Расширенный конечный автомат 23 FreeLocked create() /sid; owner := null destroy() lock(tid)/ok tid ; owner:=tid trylock(tid, wt)/ ok tid ; owner:=tid [tid=owner & waiting.empty()]unlock(tid)/ok tid ; owner:=null [tid=owner]lock(tid)/locked tid [tid≠owner]lock(tid)/fail tid [tid=owner]trylock(tid, wt)/locked tid [tid≠owner]trylock(tid, wt)/timer[tid]:=wt, waiting.push(tid) timeout[tid]/fail tid ; waiting.remove(tid) [tid=owner & !waiting.empty()]unlock(tid)/ok tid, ok; owner:=waiting.pop(), timer[owner]:=0 [tid=owner]unlock(tid)/ok tid ; owner:=null waiting := new Queue timer:= new TimerList

24 0 P Расширенная сеть Петри 24 1234 C (in) /x 1 :=in (in) /x 2 :=in/x 3 :=in /x 4 :=in /x1/x1 /x2/x2 /x3/x3 /x4/x4

25 Абстрактный тип данных L – список объектов типа E  Операции empty : L insert : L  N  E  L remove : L  N  L size : L  N get : L  N  E  Аксиомы  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, e 1 ).insert(j, e 2 ) ≡ X.insert(j, e 2 ).insert(i+1, e 1 )  [0<i<X.size() & 0≤j<i] X.remove(i).remove(j) ≡ X.remove(j). remove(i-1) 25

26  Составляющие  Элементы тестовых ситуаций o Действия и их наборы o Данные и состояния  Классификация ситуаций и их элементов, выделение однородных областей  Важность и риски  Виды моделей ситуаций  Доменные (на основе входных и выходных данных)  Структурные (на основе затрагиваемых элементов SUT)  Функциональные (на основе элементов требований)  Проблемные (на основе возможных проблем и рисков, гипотез об ошибках) 26

27 ВариантЧисло AЧисло BA+BA+B 100 20+ 30– 4+0 5++ 6+– 7–0 8–+ 9–– ВариантЧисло AЧисло BA+BA+B 1000 20++ 30–– 4+0+ 5+++ 6+–+ 7+–0 8+–– 9–0– 10–++ 11–+0 12–+– 13––– ВариантЧисло AЧисло BA+BA+BВариантЧисло AЧисло BA+BA+B 100017–+– 20++18–MAX+ 30 19––– 40––20––OVR 50MIN 21–MINOVR 6+0+22MAX0 7+++23MAX+OVR 8++ 24MAX–+ 9+ OVR25MAX OVR 10+–+26MAXMIN– 11+–027MIN0 12+––28MIN+– 13+MIN–29MIN-OVR 14–0–30MINMAX– 15–++31MIN OVR 16–+0 ВариантМножество AМножество B ABAB 1  2  непусто  3  4  5 непусто = A = B 6непусто непусто = A ≠ B 7непусто непусто = B ≠ A 8непусто непусто ≠ A, ≠ B 27

28  S = 0 или S = 1  Денормализованные числа E = 0  M = 0 +0, –0  M ≠ 0 000001, 000101, 010100, 100000, 111111  Нормализованные числа 0 < E < 2 k-1  E 000001, 000101, 011111, 100010, 111110  M 000000, 000001, 000110, 011001, 100110, 111111  Исключительные числа E = 2 k-1  M = 0 +∞, –∞  M ≠ 0 NaN 000001, 000101, 010100, 101000, 111111 28 знак k+1 0 экспонентамантисса 0000000000000000000000000000000 01k S E M

29 29 max 0

30 ax 2 + bx + с = 0 int solve(double a, double, b, double c, double *x1, double *x2) 30 ВариантУсловиеЧисло решений Результат 1a = b = с = 0∞–1–1 2a = b = 0, с ≠ 000 3a = 0, b ≠ 011 4a ≠ 0, b 2 -4ac < 000 5a ≠ 0, b 2 -4ac = 011 6a ≠ 0, b 2 -4ac > 022 ВариантУсловиеЧисло решений Результат 1a = b = с = 0∞–1–1 2a = b = 0, с > 000 3a = b = 0, с < 000 4a = 0, b > 011 5a = 0, b < 011 6a > 0, b 2 -4ac < 000 7a < 0, b 2 -4ac < 000 8a > 0, b 2 -4ac = 011 9a < 0, b 2 -4ac = 011 10a > 0, b 2 -4ac > 022 11a 022

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

32 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 УсловияВетвиКритерии покрытия abcda || !b && cc && !a || b && dDCCCD/CCMDCMC/DCSMCCMCC 000000XXXXXXX 000100X 001011XXXXX 001111X 010000XX 010101XXX 011001XX 011101X 100010XXX 100110X 101010XX 101110XX 110010X 110111X 111010XXX 111111XXXXX

33 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) 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’7’ 12 ’ 4 6 23

34  Состояния  Переходы  Цепочки переходов  Простые пути  Простые циклы с продолжением 34 0 123 456 7

35  Операторы мутации  if(A) B else C o  if(A) B o  if(A) C o  if(A) C else B o  B o  C  Программа P   мутанты {P 1, P 2, …, P n }  устраняем эквивалентные  выполняем тесты  определяем «неубитых» мутантов 35  X := Y + Z o  X := Y o  X := Z o  X := Y – Z o  Y := Y + Z

36  Вероятностные  Комбинаторные  Автоматные  Нацеленные 36

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

38  Позволяет получить много тестов с минимальными затратами  Хорошо автоматизируется  Хорошо находятся случайные ошибки (опечатки) − Полнота полученного набора тестов непредсказуема − Плохо находятся серьезные ошибки − Исходные распределения часто неизвестны 38 Вероятностное тестирование

39 Тестовые воздействия разбиваются на некоторые элементы Тестовые ситуации строятся как всевозможные комбинации этих элементов по определенным правилам  Дерево классификации  Тестирование на основе грамматик  Покрывающие наборы  Пути в автоматах 39

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

41 РазмерЦветаФорматПринтерБраузерОС 1 страницаНет цветных рисунков A4HPInternet Explorer Windows XP 2 страницыЕсть цветные рисунки A3EpsonMozilla FirefoxWindows Vista 7 страницA5CanonOperaLinux Ubuntu B5XeroxLinux SUSE LetterLinux RHEL 41 3·2·5·4·3·5 = 1800 вариантов

42 11 страницаНет цветных рисунковA4HPInternet ExplorerLinux RHEL 21 страницаНет цветных рисунковA4HPOperaWindows XP 31 страницаНет цветных рисунковA3A3EpsonInternet ExplorerWindows Vista 41 страницаНет цветных рисунковLetterCanonInternet ExplorerLinux RHEL 51 страницаЕсть цветные рисункиA5EpsonOperaLinux Ubuntu 61 страницаЕсть цветные рисункиB5HPMozilla FirefoxWindows Vista 71 страницаЕсть цветные рисункиLetterXeroxOperaLinux SUSE 82 страницыНет цветных рисунковA3A3XeroxMozilla FirefoxLinux RHEL 92 страницыНет цветных рисунковB5CanonOperaLinux SUSE 102 страницыНет цветных рисунковLetterHPMozilla FirefoxLinux Ubuntu 112 страницыЕсть цветные рисункиA4XeroxOperaLinux Ubuntu 122 страницыЕсть цветные рисункиA3A3HPOperaLinux SUSE 132 страницыЕсть цветные рисункиA5XeroxOperaWindows Vista 142 страницыЕсть цветные рисункиLetterEpsonInternet ExplorerWindows XP 157 страницНет цветных рисунковA4CanonInternet ExplorerWindows Vista 167 страницНет цветных рисунковA3A3XeroxOperaWindows XP 177 страницНет цветных рисунковA5HPInternet ExplorerLinux SUSE 187 страницНет цветных рисунковA5CanonMozilla FirefoxWindows XP 197 страницНет цветных рисунковB5HPInternet ExplorerLinux RHEL 207 страницНет цветных рисунковB5XeroxInternet ExplorerLinux Ubuntu 217 страницЕсть цветные рисункиA4EpsonMozilla FirefoxLinux SUSE 227 страницЕсть цветные рисункиA3A3CanonOperaLinux Ubuntu 237 страницЕсть цветные рисункиA5EpsonOperaLinux RHEL 247 страницЕсть цветные рисункиB5EpsonOperaWindows XP 257 страницЕсть цветные рисункиLetterEpsonInternet ExplorerWindows Vista 42 25 вариантов Покрытие пар – покрывающий набор силы 2 Можно построить комбинации всех троек – покрывающий набор силы 3 – 100 вариантов

43  Покрывающий набор силы t для k параметров, имеющих значения n 1, …, n k – матрица {С ij } i  [1..N], j  [1..k], C ij  [1..n j ]  j1, …, jt jl  [1..k]  v j1, …, v jt v jl  [1..n jl ]  i  [1..N]  l  [1..t] С ijl = v jl множество таких наборов – CA(t; n 1, …, n k )  Однородные наборы – n 1 = … =n k =n, CA(t; k, n)  Минимальное число строк в однородном наборе – ~tn t log 1+  (k)  Построение минимальных однородных наборов из CA(t; k, 2) или CA(2; k, n > 2) – NP-полная задача 43

44 Алгоритм построения CA(2; k, 2)  Выбрать N : k ≤ C N-1  N/2   Можно построить набор из N строк 44 kN 2-34 45 5-106 11-157 16-358 36-569 57-12610 127-21011 1000000000000000 2000001111111111 3011110000111111 4101110111000111 5110111011011001 6111011101101010 7111101110110100

45 Алгоритм построения CA(2; p k +1, p k )  n=p k, p – простое  Первый столбец (∞)– блоки по n одинаковых значений i  Второй столбец (0) – все n значений j в каждом блоке  В столбце с номером m  1..(n-1) (i*m+j) в поле GF(p k ) 45 ∞01234 1000000 2011111 3022222 4033333 5044444 6101234 7112340 8123401 9134012 10140123 11202413 12213024 13224130 14230241 15241302 16303142 17314203 18320314 19331420 20342031 21404321 22410432 23421043 24432104 25443210

46 Алгоритм построения CA(2; mn+1, n=p k ) из CA(2; m, n)  Исходный набор {A ij } i  [1..N], j  [1..m]  Вспомогательная матрица {B ij } i  [1..z=(n 2 -n)], j  [1..(n+1)] 46 nn … n N 0A 11 … A 12 … …A 1m … 0A 21 … A 22 … …A 2m … …………………………………… 0A N1 … A N2 … …A Nm … z B 11 B 12 … B 13 … …………B 1(n+1) … …………………………………… B z1 B z2 … B z3 … …………B z(n+1) … mm…………m 10000000000000 20000111111111 30000222222222 40111000111222 50111111222000 60111222000111 70222000222111 80222111000222 90222222111000 101000011112222 111111122220000 121222200001111 132000022221111 142111100002222 15152222211110000

47  Неоднородные  Переменной силы  С ограничениями на сочетания значений Переборно-оптимизационные алгоритмы 47

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

49  Позволяет находить практически любые виды ошибок  Позволяет концентрировать усилия на различных целях − Плохо автоматизируется − Требует трудоемкого построения разбиений − Требует анализа осуществимости вариантов и подбора данных 49 Нацеленное тестирование

50 Разрешение ограничений  Перебор данных с проверкой попадания в нужную ситуацию  Использование решателей (SMT-solvers)  Оптимизационные алгоритмы 50

51 Всегда ли реализация ведет себя как спецификация? 51 0 12 Спецификация a/x b/y b/x b/y a/ya/x 0 12 Реализация a/x b/y b/x b/y a/ya/x

52  Требования к спецификации  Детерминизм  Полная определенность  Минимальность  Сильная связность или наличие reset (R)  Гипотезы о реализации  Реализация – конечный детерминированный автомат с теми же стимулами I и реакциями O  Полная определенность  Сильная связность или наличие reset (R)  В начале находимся в начальном состоянии  Число состояний ограничено 52

53  Покрывающее множество C  Пример: C = { , b, bb}  Различающая последовательность d  Есть не всегда, м.б. экспоненциальной длины  Пример: d = ab (0  xy, 1  xx, 2  yy) 53 0 12 a/x b/y b/x b/y a/ya/x  D-метод (не всегда применим, экспоненциален)  {R}CI N–n+1 {d}  Пример: RaabRbabRbaabRbbabRbbaabRbbbab / xxy.yxx.yxxx.yxyy.yxyyy.yxyxy  Характеристическое множество W  Есть всегда, строится за O(pn 2 )  Пример: W = {a, b} или {ab}  W-метод (применим всегда, сложность O(pn 3 ))  {R}CI N–n+1 W  Пример: RaaRabRbaRbbRbaaRbabRbbaRbbbRbbaaRbbabRbbbaRbbbb/ xx.xy.yx.yx.yxx.yxx.yxy.yxy.yxyy.yxyy.yxyx.yxyy

54  Недетерминизм  Неполная определенность  Различные тестовые возможности  Модели – Labeled Transition Systems (LTS)  Сложные отношения согласованности Теория разработана плохо – нет финитных моделей ситуаций 54

55  Разработка тестов и тестирование  Операционные системы реального времени  Базовые библиотеки Linux (Linux Standard Base)  Протоколы IPv6, Mobile IPv6, IPsec  Отдельные модули компиляторов Intel  Микропроцессоры архитектуры MIPS  Создание технологий и инструментов  Тестирование на основе моделей (UniTESK)  Проверка соответствия стандарту LSB 55

56 56 Тестируемая система Модель состояния + оракул Модель поведения Генератор воздействий Метрика покрытия 12% Модель ситуаций 36%57%87% Модель состояния

57 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"); else return (POS, "Positive argument"); } post { if(coverage(ZP, ZERO)) return SQRT == 0.; else return SQRT >= 0. && abs((SQRT*SQRT - x)/x) < epsilon; } сигнатура операции предусловие ограничения доступа ветви функциональности

58 58 состояния параметрыобласть определения операции 1 2 3 цели покрытия

59 59 Модель ситуаций Модель поведения Структуры данных Инварианты Пред- и постусловия Операции и события Варианты исполнения Виды состояний Модель состояния Обходчик автоматов Оракулы Виды параметров Генератор Итераторы данных Описание автомата ДействияСостояния Метрика покрытия Тестируемая система Генерация тестовой последовательности на лету Предусловия Постусловия

60 60 s 11 Тести- руемая система s 21 s 12 s 31  Несколько последовательностей воздействий  Частично упорядоченное множество событий  Семантика чередования – это множество должно вытягиваться в последовательность r 12 r 22 r 11 r 21 Время 11 12 21 11 22 21 12 31 Время

61 Модель ситуаций Модель поведения Типы данных Инструкции Модель исполнения Структура процессора Варианты исполнения Шаблоны Эквива- лентность Алгоритм обработки Блоки и связиЦелевой язык Ограничения сложности Комбинации 61 Тестовые программы Зависимости Модель исполнения Итератор комбинаций Итератор зависимостей Итератор ситуаций Привязка инструкций Генератор Итераторы данных

62 62


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

Similar presentations


Ads by Google