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

Slides:



Advertisements
Similar presentations
Введение в QA или что делают тестеры Сергей Шарапа
Advertisements

PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Схема распределения грантов городам-участникам программы Тасис (TCAS) Экологические гранты для муниципалитетов.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Разработка и внедрение объектно-ориентированной библиотеки для автоматизации тестирования Кафедра системного программирования Студент: Олейник А.Л. 544.
Дипломная работа Ивановой О.О., группа 545 Научный руководитель: д. ф.-м. н., профессор Терехов А.Н. Генерация кода по диаграмме активностей.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Б.А. Новиков.
Савенко Мария Олеговна, 361 группа Научный руководитель: старший преподаватель В.С.Полозов.
Разработка информационной системы накопительной программы лояльности для мобильных устройств Автор: Дьяченко Василий Владимирович мат-мех, 545 группа Научный.
Миллер Дмитрий, 545 группа Научный руководитель: д.ф.-м.н., профессор, А.Н.Терехов Рецензент: к.ф.-м.н, доцент, А.Н. Иванов.
Российский государственный педагогический университет им. А.И. Герцена ИНСТИТУТ ДОВУЗОВСКОЙ ПОДГОТОВКИ Дистанционное обучение «Русский язык. Подготовка.
Виртуальная лаборатория для первоначального обучения проектированию программ Н. Н. Красильников, В. Г. Парфенов, Ф. Н. Царев, А. А. Шалыто Кафедра компьютерных.
1 СПбГУ ИТМО, кафедра Компьютерных Технологий ПРИМЕНЕНИЕ АВТОМАТНОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ СИСТЕМ УПРАВЛЕНИЯ БИЗНЕС- ПРОЦЕССАМИ Евгений Андреевич.
Параметризация устройств сетевого управления Казакова А.С. Научный руководитель: Венгерова Е.А. Рецензент: Ушаков К.С. Кафедра системного программирования.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Управление и Конфигурирование Встроенных Систем Ушаков Константин, 545 группа Руководитель: Елена Венгерова.
Адаптивный метод распределения SPMD-заданий в грид Паньшенсков Михаил, 545 группа Научный руководитель: Лукичев А.С. Рецензент: Демьянович Ю.К июня.
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
L/O/G/O Психология решения задач и проблем: классика и современность Спиридонов В.Ф. (РГГУ-ГУВШЭ)
Совместное применение генетического программирования и верификации моделей для построения автоматов управления системами со сложным поведением К. В. Егоров,
Понятие риска применительно к инвестиционным проектам
Apache Harmony или как сделать курсовую работу в рамках этого проекта Фурсов Михаил.
Microsoft Solutions Framework Технологии программирования. Курс на базе Microsoft Solutions Framework Семинар 2. Знакомство с построением диаграмм вариантов.
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
Поиск ошибок в программах на языке Ruby с использованием вывода типов Санкт-Петербург, 2008г. Выполнил: Шпынов Олег, 545 гр. Научный руководитель: Ломов.
 Нужно много различных протоколов связи  Каждый из них может реализовываться на разных платформах Современные сети Много устройств, компьютеров и сетей.
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
EDCWiki Electronic Document Circulation using wiki Система электронного документооборота на основе wiki Участники: Кузьмин Константин, Цыцулин Виталий.
Генерация вероятностных автоматов методами Reinforcement Learning Выполнил: Иринёв А. В. Руководитель: Шалыто А. А.
Анализ сценариев. Имитационное моделирование. 2 Метод сценариев метод, основанный на построении набора сценариев - возможных непротиворечивых комбинаций.
Оптимизация Just – in - time компилятора методом профилирования значений Соколов Андрей Владимирович, ФФ НГУ, 3 курс, Руководитель:
Конвертор байт-кода java в CIL Д. С. Возжаев, 544 группа Научный руководитель: д. т. н. проф. В. О. Сафонов Рецензент: асп. А. Н. Близнюк Санкт-Петербургский.
Симулятор квантовых вычислений Выполнил: Гедерцев А.С. Руководитель, д.ф.-м.н., профессор: Граничин О.Н.
Верификация автоматных программ Ремизов А.О., д.т.н., проф. Шалыто А.А.
Пользовательские действия (custom actions) в JSP. JSTL.
PowerPoint Presentation for Dennis, Wixom & Tegardem Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Применение метода представления функции переходов с помощью абстрактных конечных автоматов в генетическом программировании Царев Ф. Н. Научный руководитель.
Анализ и Проектирование качественных приложений Презентация по книге Крэга Лармана.
Сервис описания дискретных динамических систем на основе рекуррентных алгоритмов стохастической аппроксимации и подобных им Александр Вахитов научный руководитель.
Разработка программного обеспечения (Software Engineering)
Применение генетических алгоритмов к генерации тестов для автоматных программ Законов Андрей Юрьевич Научный руководитель: Степанов Олег Георгиевич, к.т.н.,
Методы анализа данных. Статистическая проверка гипотез.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 3. Требования к ПО: модели систем.
BioUML интегрированная расширяемая среда для моделирования биологических систем Biosoft.Ru Лабоработория Биоинформатики КТИ ВТ СО РАН
Разработка программного средства 3Genetic для генерации автоматов управления системами со сложным поведением Государственный контракт №
Формы в HTML. Элемент FORM Элемент уровня «блок» Управляющие элементы Просто текст Атрибуты: action – url обработчика method – post или get enctype –
Разработка алгоритмов распознавания текста
Предметно-ориентированное моделирование приложений для платформы Android Никонова Ольга СПбГУ Научный руководитель Брыксин Т.А.
Применение генетических алгоритмов для генерации тестов к олимпиадным задачам по программированию Буздалов М.В., СПбГУ ИТМО.
Объектно-ориентированное проектирование DSP-систем в телекоммуникациях Подготовил: Сергеев Виктор Николаевич СПбГУ, математико-механический Факультет,
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
Место человека в интеллектуальной техносреде В.В. Бушуев, д.т.н., проф., Генеральный директор Института энергетической стратегии ЦМТ, г.
Технология верификации управляющих программ со сложным поведением, построенных на основе автоматного подхода Руководитель проекта – А. А. Шалыто Докладчик.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 3. Требования к ПО: разработка требований.
Проверка эквивалентности срединной и линейной осей многоугольника Дипломная работа студента 545 группы Подколзина Максима Валериевича Санкт-Петербургский.
X n + y n = z n c n log n - 2 k ≤ p(n, k) ≤ c n log n - 1 k Arageli: Blazing Mathematics Mini–project Report ITLab, 24 Feb, 2006.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Множественное выравнивание С.А.Спирин, весна
Классификация, кластеризация и поиск изображений на основе низкоуровневых характеристик Наталья Васильева Руководитель: Новиков Б. А.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Исследование возможностей сервисной шины SonicMQ Дипломная работа студентки 545 группы Комольцевой Дарьи Владимировны Научный руководитель: Графеева Н.Г.
Подход к реализации XQuery Паращенко Олег Санкт-Петербургский Государственный Университет Обнинск, 2004.
1 Игорь Борисович Бурдонов Александр Сергеевич Косачев Тестирование и верификация систем на основе формальных моделей Институт Системного Программирования.
Стеки и очереди 1. Абстрактный стек public interface Stack { static class Underflow extends Exception { public Underflow() { super("Stack underflow");
SCOM2007: Мониторинг работы Hyper-V, Terminal Services, App-V
Presentation transcript:

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

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

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

4

5

6

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

 Космические аппараты  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$

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

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

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

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

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

Тест – тестовая ситуация + проверка  Тестовый вариант  Инициализация  Выполнение  Проверка  Финализация 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  Вызов функции или метода Product.get(74291).setValue(485);  Отправка сообщения Send( new ProductValueChangeMsg(74291, 485) );  Ввод команды produpd -t -id val 485  Нажатие на кнопку

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

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

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

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

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

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 экспонентамантисса k n, k S E M B = 2 (k–1) –1 2 (–1) · = 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

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

Расширенный конечный автомат 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

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

Абстрактный тип данных 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

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

ВариантЧисло AЧисло BA+BA+B – – 7–0 8–+ 9–– ВариантЧисло AЧисло BA+BA+B –– –+ 7+–0 8+–– 9–0– 10–++ 11–+0 12–+– 13––– ВариантЧисло AЧисло BA+BA+BВариантЧисло AЧисло BA+BA+B –+– –MAX ––– 40––20––OVR 50MIN 21–MINOVR MAX MAX+OVR MAX–+ 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

 S = 0 или S = 1  Денормализованные числа E = 0  M = 0 +0, –0  M ≠ , , , ,  Нормализованные числа 0 < E < 2 k-1  E , , , ,  M , , , , ,  Исключительные числа E = 2 k-1  M = 0 +∞, –∞  M ≠ 0 NaN , , , , знак k+1 0 экспонентамантисса k S E M

29 max 0

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 = a > 0, b 2 -4ac > a 022

 Компоненты, классы, методы  Инструкции  Ветвления  Цепочки блоков  Цепочки вызовов  Элементарные условия и их комбинации 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 УсловияВетвиКритерии покрытия abcda || !b && cc && !a || b && dDCCCD/CCMDCMC/DCSMCCMCC XXXXXXX X XXXXX X XX XXX XX X XXX X XX XX X X XXX XXXXX

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 } b = a-b; 20 a = a-b; 21 } return a; 24 } ’7’ 12 ’

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

 Операторы мутации  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

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

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

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

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

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

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 вариантов Покрытие пар – покрывающий набор силы 2 Можно построить комбинации всех троек – покрывающий набор силы 3 – 100 вариантов

 Покрывающий набор силы 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

Алгоритм построения CA(2; k, 2)  Выбрать N : k ≤ C N-1  N/2   Можно построить набор из N строк 44 kN

Алгоритм построения 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 ∞

Алгоритм построения 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

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

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

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

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

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

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

 Покрывающее множество C  Пример: C = { , b, bb}  Различающая последовательность d  Есть не всегда, м.б. экспоненциальной длины  Пример: d = ab (0  xy, 1  xx, 2  yy) 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

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

 Разработка тестов и тестирование  Операционные системы реального времени  Базовые библиотеки Linux (Linux Standard Base)  Протоколы IPv6, Mobile IPv6, IPsec  Отдельные модули компиляторов Intel  Микропроцессоры архитектуры MIPS  Создание технологий и инструментов  Тестирование на основе моделей (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"); else return (POS, "Positive argument"); } post { if(coverage(ZP, ZERO)) return SQRT == 0.; else return SQRT >= 0. && abs((SQRT*SQRT - x)/x) < epsilon; } сигнатура операции предусловие ограничения доступа ветви функциональности

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

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

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

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

62