![Page 1: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/1.jpg)
Регрессионное тестированиеСлучайное тестирование
Software Testing 102
Марат Ахин
Санкт-Петербургский государственный политехнический университет
2013
Марат Ахин (СПбГПУ) RT 2013 118 / 201
![Page 2: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/2.jpg)
Quiz
Марат Ахин (СПбГПУ) RT 2013 119 / 201
![Page 3: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/3.jpg)
Recap
Марат Ахин (СПбГПУ) RT 2013 120 / 201
![Page 4: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/4.jpg)
Регрессионное тестирование
Содержание
1 Регрессионное тестированиеТестирование ПО в процессе разработкиРегрессионное тестированиеВыборочное регрессионное тестированиеУправление регрессионными тестамиРегрессионное тестирование на практике
2 Случайное тестирование
3 Homework
Марат Ахин (СПбГПУ) RT 2013 121 / 201
![Page 5: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/5.jpg)
Регрессионное тестирование Тестирование ПО в процессе разработки
Тестирование ПО в процессе разработки
Как ПО изменяется в процессе разработки?
Инкрементально, небольшими независимыми шагамиИзменение уже существующего кодаИсправление ошибокДобавление новой функциональностиАдаптация имеющихся компонентов к новым задачам
Любые (даже самые незначительные) изменения могут серьезноповлиять на качество ПО
Марат Ахин (СПбГПУ) RT 2013 122 / 201
![Page 6: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/6.jpg)
Регрессионное тестирование Тестирование ПО в процессе разработки
Тестирование ПО в процессе разработки
Как ПО изменяется в процессе разработки?
Инкрементально, небольшими независимыми шагамиИзменение уже существующего кодаИсправление ошибокДобавление новой функциональностиАдаптация имеющихся компонентов к новым задачам
Любые (даже самые незначительные) изменения могут серьезноповлиять на качество ПО
Марат Ахин (СПбГПУ) RT 2013 122 / 201
![Page 7: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/7.jpg)
Регрессионное тестирование Тестирование ПО в процессе разработки
Тестирование ПО в процессе разработки
Как ПО изменяется в процессе разработки?
Инкрементально, небольшими независимыми шагамиИзменение уже существующего кодаИсправление ошибокДобавление новой функциональностиАдаптация имеющихся компонентов к новым задачам
Любые (даже самые незначительные) изменения могут серьезноповлиять на качество ПО
Марат Ахин (СПбГПУ) RT 2013 122 / 201
![Page 8: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/8.jpg)
Регрессионное тестирование Тестирование ПО в процессе разработки
Тестирование ПО в процессе разработки
После любого изменения требуется проверить, что в программе непоявилось новых ошибокДля этого мы выполняем все имеющиеся тесты и проверяем, чтовсе они успешно завершаются
Основной вид тестирования в процессе разработки ПО – эторегрессионное тестирование
Марат Ахин (СПбГПУ) RT 2013 123 / 201
![Page 9: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/9.jpg)
Регрессионное тестирование Регрессионное тестирование
Регрессионное тестирование
Как выглядит одна итерация регрессионного тестирования?
1 Мы модифицируем программу P и получаем программу P′
2 Из всего множества тестов T мы выбираем набор тестов T′,
который необходимо выполнить на P′
3 Для новой функциональности мы разрабатываем новые тесты T′′
4 Полученный набор тестов T′+ T
′′запускается на P
′
5 Результаты выполнения анализируются с последующейвозможной модификацией как программы, так и набора тестов
Какие проблемы связаны с РТ?
Марат Ахин (СПбГПУ) RT 2013 124 / 201
![Page 10: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/10.jpg)
Регрессионное тестирование Регрессионное тестирование
Регрессионное тестирование
Проблема №1
Как выбрать набор тестов T′после изменения в программе?
Консервативный подходВыбираем все имеющиеся тестыПолное регрессионное тестирование
Экономичный подходВыбираем все тесты, каким-либо образом связанные потребованиям/спецификации/интуиции с изменениями в коде«Выборочное» регрессионное тестирование
Марат Ахин (СПбГПУ) RT 2013 125 / 201
![Page 11: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/11.jpg)
Регрессионное тестирование Регрессионное тестирование
Регрессионное тестирование
Каким свойствам должно удовлетворять выборочное регрессионноетестирование?
Полнота – способность выбирать те тесты, которые могутобнаружить ошибки, связанные с изменениями в кодеТочность – способность пропускать такие тесты, которые неизменяют своего поведения на модифицированной программеЭффективность – способность выполняться быстрее, чем полноерегрессионное тестированиеУниверсальность – применимость в большинстве практическихситуаций
«Качественно. Быстро. Дешево. Выберите любые два.»
Марат Ахин (СПбГПУ) RT 2013 126 / 201
![Page 12: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/12.jpg)
Регрессионное тестирование Регрессионное тестирование
Регрессионное тестирование
Умный подходВыбирать тесты, которые «затрагивают» при выполненииизмененные части программыВыборочное регрессионное тестирование
Существует множество подходов к ВРТ на различных уровняхМодульное ВРТИнтеграционное ВРТСистемное ВРТ
Все подходы различаются по двум основным критериямСпособ идентификации измененных программных компонентовМетод получения информации о покрытии элементов программытестами
Марат Ахин (СПбГПУ) RT 2013 127 / 201
![Page 13: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/13.jpg)
Регрессионное тестирование Выборочное регрессионное тестирование
Подход МакКарти
Анализ изменений на уровне целого модуляСвязь элементов программы с тестами задается вручнуюразработчиком
Преимущества и недостатки?
Марат Ахин (СПбГПУ) RT 2013 128 / 201
![Page 14: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/14.jpg)
Регрессионное тестирование Выборочное регрессионное тестирование
Подход на основе концепции файервола
Анализ изменений на уровне целых модулейСвязь элементов программы с тестами задается вручнуюразработчиком
Преимущества и недостатки?
Марат Ахин (СПбГПУ) RT 2013 129 / 201
![Page 15: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/15.jpg)
Регрессионное тестирование Выборочное регрессионное тестирование
Поход Ротермела и Харролд
Анализ изменений на уровне узлов CFG программыСвязь элементов программы с тестами задается на уровне CFG наоснове динамической информации о выполнении каждого теста
Преимущества и недостатки?
Марат Ахин (СПбГПУ) RT 2013 130 / 201
![Page 16: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/16.jpg)
Регрессионное тестирование Выборочное регрессионное тестирование
Подход Балла
Анализ изменений на уровне узлов CFG программыСвязь элементов программы с тестами задается на уровне CFG наоснове динамической информации о выполнении каждого теста
Преимущества и недостатки?
Марат Ахин (СПбГПУ) RT 2013 131 / 201
![Page 17: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/17.jpg)
Регрессионное тестирование Выборочное регрессионное тестирование
Подход на основе AST
Анализ изменений на уровне вершин AST программыСвязь элементов программы с тестами задается на уровне AST наоснове динамической информации о выполнении каждого теста
Преимущества и недостатки?
Марат Ахин (СПбГПУ) RT 2013 132 / 201
![Page 18: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/18.jpg)
Регрессионное тестирование Управление регрессионными тестами
Управление регрессионными тестами
Проблема №2Как управлять набором регрессионных тестов?
Когда и как добавлять в набор новые тесты?Когда можно удалять старые тесты?
Марат Ахин (СПбГПУ) RT 2013 133 / 201
![Page 19: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/19.jpg)
Регрессионное тестирование Управление регрессионными тестами
Добавление новых тестов
Когда надо добавлять новый регрессионный тест?
Когда в ПО появилась новая функциональностьКогда в ПО была исправлена ошибкаКогда мы хотим улучшить тестовое покрытие ПОКогда мы можем себе позволить добавить новыйнеповторяющийся тест
Марат Ахин (СПбГПУ) RT 2013 134 / 201
![Page 20: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/20.jpg)
Регрессионное тестирование Управление регрессионными тестами
Добавление новых тестов
Когда надо добавлять новый регрессионный тест?
Когда в ПО появилась новая функциональностьКогда в ПО была исправлена ошибкаКогда мы хотим улучшить тестовое покрытие ПОКогда мы можем себе позволить добавить новыйнеповторяющийся тест
Марат Ахин (СПбГПУ) RT 2013 134 / 201
![Page 21: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/21.jpg)
Регрессионное тестирование Управление регрессионными тестами
Добавление новых тестов
Когда надо добавлять новый регрессионный тест?
Когда в ПО появилась новая функциональностьКогда в ПО была исправлена ошибкаКогда мы хотим улучшить тестовое покрытие ПОКогда мы можем себе позволить добавить новыйнеповторяющийся тест
Марат Ахин (СПбГПУ) RT 2013 134 / 201
![Page 22: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/22.jpg)
Регрессионное тестирование Управление регрессионными тестами
Добавление новых тестов
Когда надо добавлять новый регрессионный тест?
Когда в ПО появилась новая функциональностьКогда в ПО была исправлена ошибкаКогда мы хотим улучшить тестовое покрытие ПОКогда мы можем себе позволить добавить новыйнеповторяющийся тест
Марат Ахин (СПбГПУ) RT 2013 134 / 201
![Page 23: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/23.jpg)
Регрессионное тестирование Управление регрессионными тестами
Добавление новых тестов
С течением времени число тестов увеличиваетсяЧем больше тестов, тем лучше тестовое покрытиеПроблемы начинаются, когда тестов становится слишком много
Что такое «слишком много»?
Марат Ахин (СПбГПУ) RT 2013 135 / 201
![Page 24: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/24.jpg)
Регрессионное тестирование Управление регрессионными тестами
Удаление старых тестов
Когда можно удалять старый тест?
Никогда
Когда тест дублирует другие тестыКогда тест не улучшает тестовое покрытиеКогда тест ни разу не обнаружил ошибки за все времятестированияКогда тест обнаруживает такие же ошибки, как и другие тесты
Марат Ахин (СПбГПУ) RT 2013 136 / 201
![Page 25: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/25.jpg)
Регрессионное тестирование Управление регрессионными тестами
Удаление старых тестов
Когда можно удалять старый тест?
Никогда
Когда тест дублирует другие тестыКогда тест не улучшает тестовое покрытиеКогда тест ни разу не обнаружил ошибки за все времятестированияКогда тест обнаруживает такие же ошибки, как и другие тесты
Марат Ахин (СПбГПУ) RT 2013 136 / 201
![Page 26: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/26.jpg)
Регрессионное тестирование Управление регрессионными тестами
Удаление старых тестов
Когда можно удалять старый тест?
Никогда
Когда тест дублирует другие тестыКогда тест не улучшает тестовое покрытиеКогда тест ни разу не обнаружил ошибки за все времятестированияКогда тест обнаруживает такие же ошибки, как и другие тесты
Марат Ахин (СПбГПУ) RT 2013 136 / 201
![Page 27: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/27.jpg)
Регрессионное тестирование Управление регрессионными тестами
Удаление старых тестов
Когда можно удалять старый тест?
Никогда
Когда тест дублирует другие тестыКогда тест не улучшает тестовое покрытиеКогда тест ни разу не обнаружил ошибки за все времятестированияКогда тест обнаруживает такие же ошибки, как и другие тесты
Марат Ахин (СПбГПУ) RT 2013 136 / 201
![Page 28: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/28.jpg)
Регрессионное тестирование Управление регрессионными тестами
Удаление старых тестов
Когда можно удалять старый тест?
Никогда
Когда тест дублирует другие тестыКогда тест не улучшает тестовое покрытиеКогда тест ни разу не обнаружил ошибки за все времятестированияКогда тест обнаруживает такие же ошибки, как и другие тесты
Марат Ахин (СПбГПУ) RT 2013 136 / 201
![Page 29: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/29.jpg)
Регрессионное тестирование Управление регрессионными тестами
Приоритизация регрессионных тестов
Проблема №3Как запускать регрессионные тесты?
Взяли имеющийся набор тестов и запустили их
Такой подход может не всегда нас устраиватьЧто мы можем изменить?
Марат Ахин (СПбГПУ) RT 2013 137 / 201
![Page 30: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/30.jpg)
Регрессионное тестирование Управление регрессионными тестами
Приоритизация регрессионных тестов
Мы можем изменить порядок, в котором мы запускаемрегрессионные тестыЗачем?
Чем раньше мы узнаем о том, что в ПО появилась регрессионнаяошибка, тем скорее мы сможем приступить к ее исправлениюЧасто причиной непрохождения различных (напрямую несвязанных друг с другом) тестов является одна и та же ошибка вПОИногда время на тестирование является ограниченным, инеобходимо найти наибольшее число ошибок с учетом всехограничений
Как мы можем приоритизировать регрессионные тесты?
Марат Ахин (СПбГПУ) RT 2013 138 / 201
![Page 31: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/31.jpg)
Регрессионное тестирование Управление регрессионными тестами
Приоритизация регрессионных тестовПри помощи интуиции
Подход работает, если у Вас хорошая интуицияКроме интуиции можно использовать имеющийся опыт разработкиПО
На основе знаний о тестовом покрытии ПОСперва выполняются тесты, которые имеют наибольшее покрытиеПОСперва выполняются тесты, которые покрывают более важныекомпоненты ПО
На основе истории разработкиПриоритет отдается тестам, которые чаще других обнаруживалирегрессионные ошибкиПервыми выполняются тесты, проверяющие корректность работынаиболее «проблемных» компонентов ПО
Марат Ахин (СПбГПУ) RT 2013 139 / 201
![Page 32: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/32.jpg)
Регрессионное тестирование Управление регрессионными тестами
Приоритизация регрессионных тестов
Случайным образомПодход перекликается со случайным ВРТЕсли мы можем случайным образом поменять порядоквыполнения тестов, то почему бы это не сделать?
На основе характеристик тестовПервыми выполняются тесты с наименьшим временем выполненияПриоритет отдается тестам, которые наиболее активно работают сокружением программной системы
Марат Ахин (СПбГПУ) RT 2013 140 / 201
![Page 33: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/33.jpg)
Регрессионное тестирование Управление регрессионными тестами
Анализ результатов регрессионного тестирования
Проблема №4Что делать с результатами регрессионного тестирования?
Если все тесты проходят – все хорошо
Если тест не проходит – то все зависит от того, по какой причинеон не проходит
Варианты?
Марат Ахин (СПбГПУ) RT 2013 141 / 201
![Page 34: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/34.jpg)
Регрессионное тестирование Управление регрессионными тестами
Анализ результатов регрессионного тестирования
В тестируемом модуле есть ошибкаОшибку необходимо локализовать и исправитьПосле исправления требуется выполнить повторное РТ
Тест больше не является корректнымНапример, была изменена спецификация модуляНеобходимо либо обновить тест, либо удалить его
Марат Ахин (СПбГПУ) RT 2013 142 / 201
![Page 35: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/35.jpg)
Регрессионное тестирование Регрессионное тестирование на практике
Регрессионное тестирование на практике
Как обстоит дело с РТ/ВРТ на практике?
Марат Ахин (СПбГПУ) RT 2013 143 / 201
![Page 36: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/36.jpg)
Регрессионное тестирование Регрессионное тестирование на практике
Регрессионное тестирование на практике
РТ используется очень частоTDDAgile DevelopmentRUP
ВРТ практически не используется
Почему?
Марат Ахин (СПбГПУ) RT 2013 144 / 201
![Page 37: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/37.jpg)
Регрессионное тестирование Регрессионное тестирование на практике
Регрессионное тестирование на практике
Крайняя сложность выбора регрессионных тестовОпасность пропустить регрессионную ошибку при использованиинебезопасного ВРТСтрах перед использованием «непонятной» технологииПростота экстенсивного пути решения проблем РТ
Отсутствие инструментальной поддержкиДо недавнего времени
Марат Ахин (СПбГПУ) RT 2013 145 / 201
![Page 38: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/38.jpg)
Регрессионное тестирование Регрессионное тестирование на практике
Регрессионное тестирование на практике
Сложность получения динамической информации о покрытиитестами компонентов программы
Требуется инструментирование ПО дополнительнымитрассирующими вызовамиЖурналирование особого вида
Какие сложности могут при этом быть?
Марат Ахин (СПбГПУ) RT 2013 146 / 201
![Page 39: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/39.jpg)
Случайное тестирование
Содержание
1 Регрессионное тестирование
2 Случайное тестированиеГенерация тестовFuzzingGenerative random testingMutation random testingDirected random testing
3 Homework
Марат Ахин (СПбГПУ) RT 2013 147 / 201
![Page 40: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/40.jpg)
Случайное тестирование Генерация тестов
Генерация тестов
Основная идеяЗаставить компьютер работать вместо нас
ДешевлеБыстрееНет человеческого фактора
Марат Ахин (СПбГПУ) RT 2013 148 / 201
![Page 41: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/41.jpg)
Случайное тестирование Генерация тестов
Генерация тестов
kd-treestoimd5sumPDF reader
Марат Ахин (СПбГПУ) RT 2013 149 / 201
![Page 42: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/42.jpg)
Случайное тестирование Fuzzing
Fuzzing
Прародитель случайного тестирования
Полностью случайные данныеВариант smoke testing
P8FT8PjBG7s71Bw1a8EP4svDPL5g4E791TJcs5t9ZbxQAsLZx436PdJcxk3vq61192
Марат Ахин (СПбГПУ) RT 2013 150 / 201
![Page 43: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/43.jpg)
Случайное тестирование Fuzzing
Fuzzing
md5sumkd-treestoiPDF reader
Работает для всех программНо есть одно «но»... c©
Марат Ахин (СПбГПУ) RT 2013 151 / 201
![Page 44: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/44.jpg)
Случайное тестирование Fuzzing
Проблема валидности данных
Полностью случайные данные являются невалидными входнымиданными для большинства программ
Марат Ахин (СПбГПУ) RT 2013 152 / 201
![Page 45: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/45.jpg)
Случайное тестирование Fuzzing
Проблема валидности данных
Большинство программ ожидают структурированные входныеданные
P8FT8PjBG7s71Bw1a8EP4svDPL5g4E791TJcs5t9ZbxQAsLZx436PdJcxk3vq61192
vs3.1415926535897932384626433832797[(1,0,0),(0,1,0),(0,0,1),(1,1,1)]
Марат Ахин (СПбГПУ) RT 2013 153 / 201
![Page 46: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/46.jpg)
Случайное тестирование Generative random testing
Generative random testing
Если мы знаем структуру, то мы можем ей воспользоваться
Генерируем отдельные элементыКомбинируем их в соответствии с заданной структуройВносим случайные нарушения структуры
Марат Ахин (СПбГПУ) RT 2013 154 / 201
![Page 47: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/47.jpg)
Случайное тестирование Generative random testing
Generative random testing
kd-treestoiPDF reader
Работает для структурированных входных данныхНо есть одно «но»... c©
Марат Ахин (СПбГПУ) RT 2013 155 / 201
![Page 48: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/48.jpg)
Случайное тестирование Generative random testing
Проблема сложной структуры
Иногда структура входных данных является слишком сложной
Марат Ахин (СПбГПУ) RT 2013 156 / 201
![Page 49: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/49.jpg)
Случайное тестирование Mutation random testing
Mutation random testing
Обычно у нас есть какой-то набор тестовых входных данных
Подвергаем тестовые данные мутацииПри этом возможно использование знания структуры данныхЧасть данных может генерироваться случайно
Марат Ахин (СПбГПУ) RT 2013 157 / 201
![Page 50: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/50.jpg)
Случайное тестирование Mutation random testing
Mutation random testing
PDF readerWeb browser
Работает практически для всегоНо есть одно «но»... c©
Марат Ахин (СПбГПУ) RT 2013 158 / 201
![Page 51: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/51.jpg)
Случайное тестирование Mutation random testing
Проблема скелета в шкафу
Добраться до самых дальних закоулков нельзя
Марат Ахин (СПбГПУ) RT 2013 159 / 201
![Page 52: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/52.jpg)
Случайное тестирование Directed random testing
Directed random testing
Мы можем узнать, где мы былиМы можем узнать, как мы туда пришли
А дальше начинается магия...
Марат Ахин (СПбГПУ) RT 2013 160 / 201
![Page 53: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/53.jpg)
Случайное тестирование Directed random testing
Directed random testing
1 void f(int x) {2 int y = x^2;34 bool A = x > 0;5 bool B = x < 10;6 bool C = y > 20;78 if (B && C) {9 if (A) {
10 ...11 }12 }13 }
SMT FTW!
SMT ⇔ NP-hard
Never believe NP-hard isalways hard!
Марат Ахин (СПбГПУ) RT 2013 161 / 201
![Page 54: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/54.jpg)
Случайное тестирование Directed random testing
Directed random testing
Visual StudioMicrosoft Office
Работает для всегоНо есть одно «но»... c©
Марат Ахин (СПбГПУ) RT 2013 162 / 201
![Page 55: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/55.jpg)
Случайное тестирование Directed random testing
Проблема мистера Икс
Некоторые части системы могут быть «черным ящиком»
Марат Ахин (СПбГПУ) RT 2013 163 / 201
![Page 56: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/56.jpg)
W.I.L.T. What I Learned Today?
W.I.L.T.
Марат Ахин (СПбГПУ) RT 2013 164 / 201
![Page 57: Регрессионное тестирование Случайное тестированиеkspt.icc.spbstu.ru/media/files/2013/courses/softwarequality/04-Testi… · Регрессионное](https://reader030.vdocuments.pub/reader030/viewer/2022040611/5ed8472b0fa3e705ec0e2d45/html5/thumbnails/57.jpg)
Homework
Содержание
1 Регрессионное тестирование
2 Случайное тестирование
3 Homework
Марат Ахин (СПбГПУ) RT 2013 165 / 201