Download - Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когда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