Тестовый оракул: что, где, когда

Post on 04-Jul-2015

412 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Тестовый оракул: что, где, когдаSoftware Testing 101

Марат Ахин

Санкт-Петербургский государственный политехнический университет

2014

Марат Ахин (СПбГПУ) TO 2014 205 / 328

Quiz

Марат Ахин (СПбГПУ) TO 2014 206 / 328

Recap

Марат Ахин (СПбГПУ) TO 2014 207 / 328

Проблемы тестирования Проблемы тестирования

Проблемы тестирования

What’s up, Doc? (с)

Проблема тестовых входных данныхПроблема наблюдаемостиПроблема «останова»Проблема тестового оракула

Марат Ахин (СПбГПУ) TO 2014 208 / 328

Проблема тестового оракула

Содержание

1 Проблема тестового оракулаТестовый оракулВиды тестовых оракуловГенерация оракулов

Марат Ахин (СПбГПУ) TO 2014 209 / 328

Проблема тестового оракула Тестовый оракул

Тестовый оракул

Magic 8-ball тестирования

Марат Ахин (СПбГПУ) TO 2014 210 / 328

Проблема тестового оракула Тестовый оракул

Тестовый оракул

Марат Ахин (СПбГПУ) TO 2014 211 / 328

Проблема тестового оракула Тестовый оракул

Тестовый оракул

В чем заключается проблема тестового оракула?

Его нет!

Марат Ахин (СПбГПУ) TO 2014 212 / 328

Проблема тестового оракула Тестовый оракул

Тестовый оракул

Вид тестового оракула очень сильно зависит от того, какуюэталонную модель мы используем

kd-treestoimd5sumPDF reader

Марат Ахин (СПбГПУ) TO 2014 213 / 328

Проблема тестового оракула Виды тестовых оракулов

Виды тестовых оракулов

Точность

vs

Полнота

Марат Ахин (СПбГПУ) TO 2014 214 / 328

Проблема тестового оракула Виды тестовых оракулов

Точность

Способность оракула избегать ложных обнаружений

Ложные обнаружения при тестировании – лишние затраты на ихобнаружение и игнорированиеЕсли их будет слишком много, оракул никто не будетиспользовать из-за зашумления результатов

Марат Ахин (СПбГПУ) TO 2014 215 / 328

Проблема тестового оракула Виды тестовых оракулов

Полнота

Способность оракула находить все ошибки

Пропущенные ошибки при тестировании – дополнительныезатраты на их исправление позднееЕсли оракул пропускает много ошибок, его необходимо усиливатьдругими способами

Марат Ахин (СПбГПУ) TO 2014 216 / 328

Проблема тестового оракула Виды тестовых оракулов

Виды тестовых оракулов

Варьируя используемые подходы, можно получить те или иные видытестовых оракулов

СлабыеСредниеСильные

Марат Ахин (СПбГПУ) TO 2014 217 / 328

Проблема тестового оракула Виды тестовых оракулов

Слабые оракулы

ПадениеSegmentation faultCore dump

Работают всегдаПрактически ничего не говорят о причине ошибки

Марат Ахин (СПбГПУ) TO 2014 218 / 328

Проблема тестового оракула Виды тестовых оракулов

Слабые оракулы

Сбой при работе в обычном окруженииNullPointerExceptionOutOfMemoryExceptionClassNotFoundException

Работают при поддержке стандартной среды выполненияСодержат определенную информацию о месте ошибки

Марат Ахин (СПбГПУ) TO 2014 219 / 328

Проблема тестового оракула Виды тестовых оракулов

Слабые оракулы

Сбой при работе в специальном тестовом окруженииValgrind

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

Марат Ахин (СПбГПУ) TO 2014 220 / 328

Проблема тестового оракула Виды тестовых оракулов

Valgrind

Фреймворк для построения средств динамического анализапрограммВключает встроенные реализации для

MemcheckCachegrindCallgrindHelgrindDRDMassifDHAT...

Марат Ахин (СПбГПУ) TO 2014 221 / 328

Проблема тестового оракула Виды тестовых оракулов

Слабые оракулы

Хорошая точностьПлохая полнота

Марат Ахин (СПбГПУ) TO 2014 222 / 328

Проблема тестового оракула Виды тестовых оракулов

Средние оракулы

AssertionsТесты

Требуют определенных усилий со стороны разработчиковВ зависимости от степени усилий, будут более или менее точноуказывать на место возникновения ошибки

Марат Ахин (СПбГПУ) TO 2014 223 / 328

Проблема тестового оракула Виды тестовых оракулов

Средние оракулы

Хорошая точностьСредняя полнота

Марат Ахин (СПбГПУ) TO 2014 224 / 328

Проблема тестового оракула Виды тестовых оракулов

Сильные оракулы

Эталонная реализация

Предыдущая версия программыФормально верифицированная реализацияАвтоматически сгенерированная версия

Марат Ахин (СПбГПУ) TO 2014 225 / 328

Проблема тестового оракула Виды тестовых оракулов

Сильные оракулы

«Обратная функция»

Прямое/обратное преобразование ФурьеАрхиватор/деархиваторКодер/декодер видео

Марат Ахин (СПбГПУ) TO 2014 226 / 328

Проблема тестового оракула Виды тестовых оракулов

Сильные оракулы

Средняя точностьХорошая полнота

Марат Ахин (СПбГПУ) TO 2014 227 / 328

Проблема тестового оракула Генерация оракулов

Генерация оракулов

Можно ли генерировать оракула автоматически?

Да!Слабые оракулыСредние оракулы

Марат Ахин (СПбГПУ) TO 2014 228 / 328

Проблема тестового оракула Генерация оракулов

Генерация оракулов

Можно ли генерировать оракула автоматически?

Да!Слабые оракулыСредние оракулы

Марат Ахин (СПбГПУ) TO 2014 228 / 328

Проблема тестового оракула Генерация оракулов

Генерация слабых оракулов

Все уже естьСлабый оракул предоставляется средой выполненияЕсли что-то упало, мы всегда об этом узнаем

Марат Ахин (СПбГПУ) TO 2014 229 / 328

Проблема тестового оракула Генерация оракулов

Генерация слабых оракулов

В явном виде используются весьма редкоСлучайное тестирование...

Сложно понять, где произошла ошибкаНе всегда очевидно, в чем именно заключается ошибка

Марат Ахин (СПбГПУ) TO 2014 230 / 328

Проблема тестового оракула Генерация оракулов

Генерация средних оракулов

AssertionsТесты

Марат Ахин (СПбГПУ) TO 2014 231 / 328

Проблема тестового оракула Генерация оракулов

Генерация средних оракулов

Все уже естьСредние оракулы разрабатываются параллельно с разработкой ПОПри возникновении проблемы мы сразу узнаем о ней

Зачем их генерировать автоматически?

Марат Ахин (СПбГПУ) TO 2014 232 / 328

Проблема тестового оракула Генерация оракулов

Генерация средних оракулов

Марат Ахин (СПбГПУ) TO 2014 233 / 328

Проблема тестового оракула Генерация оракулов

Генерация assertions

Assertions проверяют корректность внутреннего состоянияКак автоматически сгенерировать assertions?

Machine learning

Марат Ахин (СПбГПУ) TO 2014 234 / 328

Проблема тестового оракула Генерация оракулов

Генерация assertions

Собираем информацию о выполнении программыВыводим определенные закономерности в работе программыГенерируем assertion, проверяющий ненарушение закономерностей...PROFIT!

Хорошо работает для FSM-подобных программПлохо работает для всех остальных

Марат Ахин (СПбГПУ) TO 2014 235 / 328

Проблема тестового оракула Генерация оракулов

Генерация assertions

Собираем информацию о выполнении программыВ случае падения определяем его причинуГенерируем защитный assertion...PROFIT!

Способ усиления слабых оракулов до среднихНе работает, если ничего не падает

Марат Ахин (СПбГПУ) TO 2014 236 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов

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

Мутационное тестирование

Марат Ахин (СПбГПУ) TO 2014 237 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов

Вспомним, что:Идеальный тест работает только на тестируемой программе

Если тест проходит на мутанте, это плохо

Собираем информацию о выполнении оригинальной программы имутантаАнализируем разницу...PROFIT!

Марат Ахин (СПбГПУ) TO 2014 238 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов для GUI

А если у нас есть GUI???

Что такое разница в работе GUI?Как можно автоматически ее обнаружить?

Марат Ахин (СПбГПУ) TO 2014 239 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов для GUI

Нужна модель самого GUIНужна модель изменений GUIИзвлечение моделей должно выполняться автоматически

Марат Ахин (СПбГПУ) TO 2014 240 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов для GUI

GUITAR

GUI – иерархия отдельных компонентовСобытия – переводят иерархию из одного состояния в другое

Как сгенерировать тестового оракула?

Марат Ахин (СПбГПУ) TO 2014 241 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов для GUI

Capture/replayФормальная спецификацияТрассировка выполнения

Каждому событию соответствует свой переход

Марат Ахин (СПбГПУ) TO 2014 242 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов для GUI

Оракул – набор (частичных) состояний, соответствующихпереходам по событиям GUI

Как проверять корректность?Активный компонентАктивное окноВидимые окнаВсе окна

В конце тестаПосле каждого N событияПосле каждого события

Марат Ахин (СПбГПУ) TO 2014 243 / 328

Проблема тестового оракула Генерация оракулов

Генерация тестов

Можно ли придумать что-то еще?

Случайное тестирование

Марат Ахин (СПбГПУ) TO 2014 244 / 328

W.I.L.T. What I Learned Today?

W.I.L.T.

Марат Ахин (СПбГПУ) TO 2014 245 / 328

top related