Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,097 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Тестовый оракул: что, где, когда Software Testing 101 Марат Ахин Санкт-Петербургский государственный политехнический университет 2014 Марат Ахин (СПбГПУ) TO 2014 205 / 328
  2. 2. Quiz Марат Ахин (СПбГПУ) TO 2014 206 / 328
  3. 3. Recap Марат Ахин (СПбГПУ) TO 2014 207 / 328
  4. 4. Проблемы тестирования Проблемы тестирования Проблемы тестирования What’s up, Doc? (с) Проблема тестовых входных данных Проблема наблюдаемости Проблема «останова» Проблема тестового оракула Марат Ахин (СПбГПУ) TO 2014 208 / 328
  5. 5. Проблема тестового оракула Содержание 1 Проблема тестового оракула Тестовый оракул Виды тестовых оракулов Генерация оракулов Марат Ахин (СПбГПУ) TO 2014 209 / 328
  6. 6. Проблема тестового оракула Тестовый оракул Тестовый оракул Magic 8-ball тестирования Марат Ахин (СПбГПУ) TO 2014 210 / 328
  7. 7. Проблема тестового оракула Тестовый оракул Тестовый оракул Марат Ахин (СПбГПУ) TO 2014 211 / 328
  8. 8. Проблема тестового оракула Тестовый оракул Тестовый оракул В чем заключается проблема тестового оракула? Его нет! Марат Ахин (СПбГПУ) TO 2014 212 / 328
  9. 9. Проблема тестового оракула Тестовый оракул Тестовый оракул Вид тестового оракула очень сильно зависит от того, какую эталонную модель мы используем kd-tree stoi md5sum PDF reader Марат Ахин (СПбГПУ) TO 2014 213 / 328
  10. 10. Проблема тестового оракула Виды тестовых оракулов Виды тестовых оракулов Точность vs Полнота Марат Ахин (СПбГПУ) TO 2014 214 / 328
  11. 11. Проблема тестового оракула Виды тестовых оракулов Точность Способность оракула избегать ложных обнаружений Ложные обнаружения при тестировании – лишние затраты на их обнаружение и игнорирование Если их будет слишком много, оракул никто не будет использовать из-за зашумления результатов Марат Ахин (СПбГПУ) TO 2014 215 / 328
  12. 12. Проблема тестового оракула Виды тестовых оракулов Полнота Способность оракула находить все ошибки Пропущенные ошибки при тестировании – дополнительные затраты на их исправление позднее Если оракул пропускает много ошибок, его необходимо усиливать другими способами Марат Ахин (СПбГПУ) TO 2014 216 / 328
  13. 13. Проблема тестового оракула Виды тестовых оракулов Виды тестовых оракулов Варьируя используемые подходы, можно получить те или иные виды тестовых оракулов Слабые Средние Сильные Марат Ахин (СПбГПУ) TO 2014 217 / 328
  14. 14. Проблема тестового оракула Виды тестовых оракулов Слабые оракулы Падение Segmentation fault Core dump Работают всегда Практически ничего не говорят о причине ошибки Марат Ахин (СПбГПУ) TO 2014 218 / 328
  15. 15. Проблема тестового оракула Виды тестовых оракулов Слабые оракулы Сбой при работе в обычном окружении NullPointerException OutOfMemoryException ClassNotFoundException Работают при поддержке стандартной среды выполнения Содержат определенную информацию о месте ошибки Марат Ахин (СПбГПУ) TO 2014 219 / 328
  16. 16. Проблема тестового оракула Виды тестовых оракулов Слабые оракулы Сбой при работе в специальном тестовом окружении Valgrind Предоставляют специальную среду выполнения Позволяют весьма точно определить причину ошибок Марат Ахин (СПбГПУ) TO 2014 220 / 328
  17. 17. Проблема тестового оракула Виды тестовых оракулов Valgrind Фреймворк для построения средств динамического анализа программ Включает встроенные реализации для Memcheck Cachegrind Callgrind Helgrind DRD Massif DHAT ... Марат Ахин (СПбГПУ) TO 2014 221 / 328
  18. 18. Проблема тестового оракула Виды тестовых оракулов Слабые оракулы Хорошая точность Плохая полнота Марат Ахин (СПбГПУ) TO 2014 222 / 328
  19. 19. Проблема тестового оракула Виды тестовых оракулов Средние оракулы Assertions Тесты Требуют определенных усилий со стороны разработчиков В зависимости от степени усилий, будут более или менее точно указывать на место возникновения ошибки Марат Ахин (СПбГПУ) TO 2014 223 / 328
  20. 20. Проблема тестового оракула Виды тестовых оракулов Средние оракулы Хорошая точность Средняя полнота Марат Ахин (СПбГПУ) TO 2014 224 / 328
  21. 21. Проблема тестового оракула Виды тестовых оракулов Сильные оракулы Эталонная реализация Предыдущая версия программы Формально верифицированная реализация Автоматически сгенерированная версия Марат Ахин (СПбГПУ) TO 2014 225 / 328
  22. 22. Проблема тестового оракула Виды тестовых оракулов Сильные оракулы «Обратная функция» Прямое/обратное преобразование Фурье Архиватор/деархиватор Кодер/декодер видео Марат Ахин (СПбГПУ) TO 2014 226 / 328
  23. 23. Проблема тестового оракула Виды тестовых оракулов Сильные оракулы Средняя точность Хорошая полнота Марат Ахин (СПбГПУ) TO 2014 227 / 328
  24. 24. Проблема тестового оракула Генерация оракулов Генерация оракулов Можно ли генерировать оракула автоматически? Да! Слабые оракулы Средние оракулы Марат Ахин (СПбГПУ) TO 2014 228 / 328
  25. 25. Проблема тестового оракула Генерация оракулов Генерация оракулов Можно ли генерировать оракула автоматически? Да! Слабые оракулы Средние оракулы Марат Ахин (СПбГПУ) TO 2014 228 / 328
  26. 26. Проблема тестового оракула Генерация оракулов Генерация слабых оракулов Все уже есть Слабый оракул предоставляется средой выполнения Если что-то упало, мы всегда об этом узнаем Марат Ахин (СПбГПУ) TO 2014 229 / 328
  27. 27. Проблема тестового оракула Генерация оракулов Генерация слабых оракулов В явном виде используются весьма редко Случайное тестирование ... Сложно понять, где произошла ошибка Не всегда очевидно, в чем именно заключается ошибка Марат Ахин (СПбГПУ) TO 2014 230 / 328
  28. 28. Проблема тестового оракула Генерация оракулов Генерация средних оракулов Assertions Тесты Марат Ахин (СПбГПУ) TO 2014 231 / 328
  29. 29. Проблема тестового оракула Генерация оракулов Генерация средних оракулов Все уже есть Средние оракулы разрабатываются параллельно с разработкой ПО При возникновении проблемы мы сразу узнаем о ней Зачем их генерировать автоматически? Марат Ахин (СПбГПУ) TO 2014 232 / 328
  30. 30. Проблема тестового оракула Генерация оракулов Генерация средних оракулов Марат Ахин (СПбГПУ) TO 2014 233 / 328
  31. 31. Проблема тестового оракула Генерация оракулов Генерация assertions Assertions проверяют корректность внутреннего состояния Как автоматически сгенерировать assertions? Machine learning Марат Ахин (СПбГПУ) TO 2014 234 / 328
  32. 32. Проблема тестового оракула Генерация оракулов Генерация assertions Собираем информацию о выполнении программы Выводим определенные закономерности в работе программы Генерируем assertion, проверяющий ненарушение закономерностей ... PROFIT! Хорошо работает для FSM-подобных программ Плохо работает для всех остальных Марат Ахин (СПбГПУ) TO 2014 235 / 328
  33. 33. Проблема тестового оракула Генерация оракулов Генерация assertions Собираем информацию о выполнении программы В случае падения определяем его причину Генерируем защитный assertion ... PROFIT! Способ усиления слабых оракулов до средних Не работает, если ничего не падает Марат Ахин (СПбГПУ) TO 2014 236 / 328
  34. 34. Проблема тестового оракула Генерация оракулов Генерация тестов Тесты – один из видов эталонной модели поведения Как автоматически сгенерировать эталонную модель? Мутационное тестирование Марат Ахин (СПбГПУ) TO 2014 237 / 328
  35. 35. Проблема тестового оракула Генерация оракулов Генерация тестов Вспомним, что: Идеальный тест работает только на тестируемой программе Если тест проходит на мутанте, это плохо Собираем информацию о выполнении оригинальной программы и мутанта Анализируем разницу ... PROFIT! Марат Ахин (СПбГПУ) TO 2014 238 / 328
  36. 36. Проблема тестового оракула Генерация оракулов Генерация тестов для GUI А если у нас есть GUI??? Что такое разница в работе GUI? Как можно автоматически ее обнаружить? Марат Ахин (СПбГПУ) TO 2014 239 / 328
  37. 37. Проблема тестового оракула Генерация оракулов Генерация тестов для GUI Нужна модель самого GUI Нужна модель изменений GUI Извлечение моделей должно выполняться автоматически Марат Ахин (СПбГПУ) TO 2014 240 / 328
  38. 38. Проблема тестового оракула Генерация оракулов Генерация тестов для GUI GUITAR GUI – иерархия отдельных компонентов События – переводят иерархию из одного состояния в другое Как сгенерировать тестового оракула? Марат Ахин (СПбГПУ) TO 2014 241 / 328
  39. 39. Проблема тестового оракула Генерация оракулов Генерация тестов для GUI Capture/replay Формальная спецификация Трассировка выполнения Каждому событию соответствует свой переход Марат Ахин (СПбГПУ) TO 2014 242 / 328
  40. 40. Проблема тестового оракула Генерация оракулов Генерация тестов для GUI Оракул – набор (частичных) состояний, соответствующих переходам по событиям GUI Как проверять корректность? Активный компонент Активное окно Видимые окна Все окна В конце теста После каждого N события После каждого события Марат Ахин (СПбГПУ) TO 2014 243 / 328
  41. 41. Проблема тестового оракула Генерация оракулов Генерация тестов Можно ли придумать что-то еще? Случайное тестирование Марат Ахин (СПбГПУ) TO 2014 244 / 328
  42. 42. W.I.L.T. What I Learned Today? W.I.L.T. Марат Ахин (СПбГПУ) TO 2014 245 / 328

×