Скачать презентацию Технологии тестирования ИСП РАН В Кулямин kuliamin ispras ru Скачать презентацию Технологии тестирования ИСП РАН В Кулямин kuliamin ispras ru

a4914b3edd9c2ac7992584788e558794.ppt

  • Количество слайдов: 37

Технологии тестирования ИСП РАН В. Кулямин kuliamin@ispras. ru Технологии тестирования ИСП РАН В. Кулямин [email protected] ru

Определение тестирования IEEE 610: Оценка соответствия системы требованиям к ней на основе результатов наблюдения Определение тестирования IEEE 610: Оценка соответствия системы требованиям к ней на основе результатов наблюдения за ее работой в специально подготовленных ситуациях n n Система в ходе тестирования должна работать Нужно готовить специальные ситуации – тесты Оценивается соответствие – ищем ошибки Нужна общая оценка – ищем все ошибки

Как происходит тестирование n Воздействуем на тестируемую систему n Наблюдаем ее реакцию n Проверяем, Как происходит тестирование n Воздействуем на тестируемую систему n Наблюдаем ее реакцию n Проверяем, такая ли реакция должна быть n Повторяем, пока не исчерпаются все существенно различные ситуации

 «Обычное» тестирование 1. 2. 3. 4. 5. Придумываем ситуацию Оформляем ее в виде «Обычное» тестирование 1. 2. 3. 4. 5. Придумываем ситуацию Оформляем ее в виде сценария взаимодействия теста с системой Понимаем, как должна система вести себя в его рамках Дополняем сценарий проверкой правильности Получается тестовый вариант (test case) Оцениваем достаточность имеющегося набора ситуаций: достаточно – конец, нет – goto 1

Пример uint gcd (uint a, uint b) { int t; if(b > a) { Пример uint gcd (uint a, uint b) { int t; if(b > a) { t = a; a = b; b = t; } while(b > 0) { t = b; b = a%b; a = t; } return a; } gcd gcd ( ( 2, 1 3, 2 4, 2 175, ) ) ) 15 ) == == 1 1 2 5 ? ?

Другой пример Ограниченная очередь размера 3 ? 1. В начале – пуста 1. В Другой пример Ограниченная очередь размера 3 ? 1. В начале – пуста 1. В начале – полна 2. put(X) 3. Y = take() 3. assert (exception) 4. assert (Y == X)

Зачем нужны модели? n Распознавание ошибки – ментальная модель правильной работы Math. abs(-2147483648) = Зачем нужны модели? n Распознавание ошибки – ментальная модель правильной работы Math. abs(-2147483648) = n -2147483648 Полнота набора ситуаций – ментальная модель всех важных ситуаций n Управление построением тестов – ментальная модель устройства тестовых воздействий При тестировании на основе моделей модели выделяются явно и заранее

Тестирование на основе моделей n n n Систематичность Строгость ( формальность) Абстрактность Автоматизация Быстрая Тестирование на основе моделей n n n Систематичность Строгость ( формальность) Абстрактность Автоматизация Быстрая подготовка тестов (часто до тестируемой системы) n n Сложность Повышенные требования к разработчикам тестов Образование ¨ Абстрактное мышление ¨ Умение программировать ¨ n Трудность интеграции в обычную разработку

Тестовые оракулы Тестовые воздействия Модель Тестируемая система Тестовый оракул ? Тестовые оракулы Тестовые воздействия Модель Тестируемая система Тестовый оракул ?

Оценка полноты тестирования Тестовые воздействия Модель Тестируемая система Метрика полноты 73% ? Оценка полноты тестирования Тестовые воздействия Модель Тестируемая система Метрика полноты 73% ?

Управление построением тестов Тестовые воздействия Модель Тестируемая система Метрика полноты Тестовые воздействия генерируются целенаправленно Управление построением тестов Тестовые воздействия Модель Тестируемая система Метрика полноты Тестовые воздействия генерируются целенаправленно – для увеличения полноты тестирования

Пример использования моделей uint gcd (uint a, uint b) gcd gcd ( ( 2, Пример использования моделей uint gcd (uint a, uint b) gcd gcd ( ( 2, 1 3, 2 4, 2 175, ) ) ) 15 ) == == 1 1 2 5 ? ? a%gcd(a, b) == 0 ? b%gcd(a, b) == 0 ? for(int i=gcd(a, b)+1; ia b>0

Другой пример Ограниченная очередь размера 3 [X, X, X] [X, X, Y] [Y, X, Другой пример Ограниченная очередь размера 3 [X, X, X] [X, X, Y] [Y, X, X] [X, Y] [X, Y, X] [Y, X] [Y, X, Y] [X, Y, Y] [Y, Y, X] [Y, Y, Y]

Что надо сделать? f(x) n При выполнении тестов ¨ ¨ ¨ ¨ n g(x) Что надо сделать? f(x) n При выполнении тестов ¨ ¨ ¨ ¨ n g(x) Обеспечение полноты Построение набора воздействий Построение каждого воздействия Применение набора воздействий Получение результатов Проверка корректности результатов Диагностика ошибок Оценка полноты тестирования При сопровождении тестов ¨ ¨ Удобство разработки Удобство использования Удобство сопровождения Переиспользование f(y) x. a = -1 x. b = 3. 1415 x. c = x Тестируемая система ? h(x, y) f(x)

Uni. TESK – модели n Описание требований Структура данных – простые структуры, грамматики ¨ Uni. TESK – модели n Описание требований Структура данных – простые структуры, грамматики ¨ Поведение – контрактные спецификации ¨ Параллелизм – аксиома простого параллелизма ¨ n Критерии полноты Варианты в рамках грамматик ¨ Варианты в рамках контракта ¨ n Построение тестов Генераторы данных по грамматикам ¨ Построение конечных автоматов, обеспечивающих полноту покрытия вариантов контракта, их автоматический обход ¨

Грамматики n BNF ¨ Генерация корректных данных – покрытие всех альтернатив, итераций на заданную Грамматики n BNF ¨ Генерация корректных данных – покрытие всех альтернатив, итераций на заданную глубину ¨ Генерация некорректных данных – покрытие всех неправильных в данном контексте терминалов n Контекстные условия ¨ Нацеленная генерация – ссылочная целостность, единственность в данном контексте ¨ n Фильтрация Описание абстрактного синтаксиса

Абстрактный синтаксис и тесты Описание абстрактного синтаксиса Набор базовых блоков модели Итератор комбинаций Привязка Абстрактный синтаксис и тесты Описание абстрактного синтаксиса Набор базовых блоков модели Итератор комбинаций Привязка базовых блоков Тестовые программы if(…)…else … for(…; …; …)

Проверка корректности Тестовая программа Тестируемый компилятор ? == Эталон Проверка корректности Тестовая программа Тестируемый компилятор ? == Эталон

Пример: простые выражения Test stmts 1. . * Statement var 1 xi = Expr Пример: простые выражения Test stmts 1. . * Statement var 1 xi = Expr expr 1 Expression Variable id : string xi Constant value : int 17 Binary. Expr op : {+, -, *, /} Expr 1 + Expr 2 left 1 right 1

Генерация данных по описанию абстрактного синтаксиса Демонстрация Генерация данных по описанию абстрактного синтаксиса Демонстрация

Контрактные спецификации n n n Тестируемая система разбивается на компоненты Каждый компонент имеет внутренние Контрактные спецификации n n n Тестируемая система разбивается на компоненты Каждый компонент имеет внутренние данные и набор операций Поведение операции определяется ее контрактом Предусловие описывает область определения операции sqrt(x): pre x ≥ 0 ¨ Постусловие описывает ограничения на правильные результаты операции sqrt(x): post result*result == x ¨ n Инварианты компонента описывают условия целостности его данных Triangle: double x, y, z : x+y>z & x+z>y & y+z>x

Пример specification class Client. Manager { specification Client add. Client ( String name ) Пример specification class Client. Manager { specification Client add. Client ( String name ) { post { if ( name == null || clients. contains. Key(name) ) { branch "Client cannot be created "; return add. Client == null && clients. equals( pre clients. clone() ); } else { branch "Client can be created"; Hash. Map old. Clients = (Hash. Map)clients. clone(); old. Clients. remove(name); return } } add. Client != null && add. Client. name. equals(name) && add. Client. parent == null && add. Client. children. is. Empty () && clients. get(name) == add. Client && old. Clients. equals( pre clients. clone() );

Метрики полноты тестирования post { if ( f(a, b) || g(a) ) … else Метрики полноты тестирования post { if ( f(a, b) || g(a) ) … else if( h(a, c) && !g(b) ) else !f(a, b) && !g(a) && !h(a, c) … || !f(a, b) && !g(a) && g(b) } …

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

Неявное описание автомата Неявное описание автомата

Построение одного воздействия параметры 2 3 1 состояния текущее состояние Построение одного воздействия параметры 2 3 1 состояния текущее состояние

Картина в целом Тестируемая система Модель поведения Описание автомата Метрика полноты Проверка одного Генерация Картина в целом Тестируемая система Модель поведения Описание автомата Метрика полноты Проверка одного Генерация тестовой воздействия последовательности на лету

Тестирование компонентов на основе контрактов Демонстрация Тестирование компонентов на основе контрактов Демонстрация

Описание асинхронных систем n n Интерфейс компонента состоит из операций и событий События тоже Описание асинхронных систем n n Интерфейс компонента состоит из операций и событий События тоже описываются при помощи контракта ¨ Постусловие события определяет корректность его наступления и изменения состояния компонента e. Mail. Sent: post pre mails. size() != 0 && mails. size() == pre mails. size()-1

Аксиома простого параллелизма ~ Аксиома простого параллелизма ~

Тестирование асинхронности 11 s 21 s 31 Время n n 21 Тестируемая система s Тестирование асинхронности 11 s 21 s 31 Время n n 21 Тестируемая система s 12 21 r 11 11 r 12 31 12 r 22 Время 22 Используется мультипоследовательность воздействий Воздействия и реакции образуют частично упорядоченное множество

Проверка корректности Аксиома простого параллелизма ✕ Проверка корректности Аксиома простого параллелизма ✕

Применение Uni. TESK n n Разработка тестового набора для ядра ОС телефонной станции Nortel Применение Uni. TESK n n Разработка тестового набора для ядра ОС телефонной станции Nortel Networks Реализации IPv 6 1994 -1997 Microsoft Research Мобильный IPv 6 (в Windows CE 4. 1) Октет 2000 -2001 2002 -2003 2002 2001 -2003 2004 -… 2005 -… 2005 -. . . ¨ ¨ ¨ n n n n Оптимизаторы компиляторов Intel Стандарт AVS-IPMP Тестовый набор для IPsec Тестовый набор для Linux Standard Base 3. 1 Компоненты биллинговой системы и EAI Тестовый набор для ОС ос2000 (НИИСИ) Пилотные проекты ¨ ¨ Гос. НИИАС Компоненты Tiny. OS Компоненты CRM-системы (Luxoft) Оптимизатор трансляции граф. моделей http: //www. unitesk. com/ru 2003 2004 2005

Область применимости Тестируемые интерфейсы должны быть четко определены Сложность интерфейса Компиляторы Информационные системы Компонентные Область применимости Тестируемые интерфейсы должны быть четко определены Сложность интерфейса Компиляторы Информационные системы Компонентные системы Web-приложения Протоколы Наблюдаемая сложность состояния

Литература 1. 2. 3. 4. 5. 6. 7. 8. И. Б. Бурдонов, А. С. Литература 1. 2. 3. 4. 5. 6. 7. 8. И. Б. Бурдонов, А. С. Косачев, В. В. Кулямин. Использование конечных автоматов для тестирования программ. Программирование, 26(2): 61 -73, 2000 I. Bourdonov, A. Kossatchev, V. Kuliamin, A. Petrenko. Uni. Tes. K Test Suite Architecture. Proc. of FME 2002, LNCS 2391, pp. 77 -88, Springer-Verlag, 2002 В. В. Кулямин, А. К. Петренко, А. С. Косачев, И. Б. Бурдонов. Подход Uni. Tes. K к разработке тестов. Программирование, 29(6): 25 -43, 2003 A. Kossatchev, A. Petrenko, S. Zelenova. Using Model-Based Approach for Automated Testing of Optimizing Compilers. Proc. Intl. Workshop on Program Undestanding, Gorno-Altaisk, 2003 А. В. Баранцев и др. Подход Uni. Tes. K к разработке тестов: достижения и перспективы. Труды ИСП РАН, т. 5, с. 121 -156, 2004 С. Зеленов, С. Зеленова, А. Косачев, А. Петренко. Генерация тестов для компиляторов и других процессоров формальных текстов. Программирование, 29(2): 104 -111, 2003 V. Kuliamin, A. Petrenko. Applying Model Based Testing in Different Contexts. Proc. of seminar on Perspectives of Model Based Testing, Dagstuhl, Germany, September 2004. V. Kuliamin, N. Pakoulin, A. Petrenko. Practical Approach to Specification and Conformance Testing of Distributed Network Applications. Proc. of 2 -nd International Service Availability Symposium, LNCS 3694, pp. 68 -83, Springer-Verlag, 2005

Контакты n Группа Red. Verst Сайт: www. ispras. ru/groups/rv/rv. html Сайт Uni. TESK: www. Контакты n Группа Red. Verst Сайт: www. ispras. ru/groups/rv/rv. html Сайт Uni. TESK: www. unitesk. com e-mail: [email protected] ru Телефон: (8 -495)-9125317 Факс: (8 -095)-9121524 n Докладчик Сайт: e-mail: www. ispras. ru/[email protected] ru

Спасибо за внимание! Спасибо за внимание!