Семинар 7
Мутации исходного кода.
Слайды
Видео
Пример
Java-проект со скриптом сборки для Maven, который демонстрирует использование Pitest для мутационного тестирования, находится здесь. В проекте используются тесты на JUnit 5. Настроено измерение тестового покрытия при помощи JaCoCo.
Для запуска мутационного тестирования нужно запустить следующие задания Maven-а:
- compile - скомпилировать код;
- test - скомпилировать тесты;
- pitest:mutationCoverage - запустить Pitest.
Отчет о тестировании Pitest (в формате HTML) будет в папке example/target/pit-reports
.
Отчет о покрытии JaCoCo (в формате HTML) будет в папке example/target/site/jacoco
Можно сравнить эти отчеты и заметить, что покрытие кода на 100% не всегда означает,
что код был полностью протестирован.
В IntelliJ IDEA все выглядит так:
.
Домашнее задание
Срок сдачи без штрафа: 14.11.2020
Задание
- Построить покрытие тестами класса Account.
- Провести мутационное тестирование класса Account:
- Привести пример убитых мутантов (для каждого тестового метода).
- Привести пример выжившего мутанта (если будет обнаружен) и изменение в тестах его убивающее.
- Привести пример эквивалентного мутанта.
Результат
- Файл с примерами мутантов.
- Отчет о покрытии.
Примеры мутантов
Ссылки
Литература
- Мутационное тестирование (Wikipedia).
- Про мутационное тестирование (Хабр).
- Pitest.
- Пример работы с PIT mutator (Хабр).
- Еще про мутационное тестирование.
- Pitest example.
- JaCoCo для Maven.
- JUnit 5 with Maven.
- JS.
- Python.