Похожие презентации:
Мутационное тестирование
1.
Мутационное тестирование2.
ВведениеМутационное тестирование это вид
тестирования ПО методом белого ящика,
основанный на всевозможных изменениях
частей исходного кода и проверке реакции на
эти изменения набора автоматических юнит
тестов. Изменения в мутантной программе
сохраняются крайне небольшими, поэтому это
не влияет на общее исполнение программы.
Если тесты после изменения кода не падают,
значит либо этот код недостаточно покрыт
тестами, либо написанные тесты бесполезны.
3.
Мутационное тестированиеДля применения этой технологии у тестировщика
должен быть исходный код и некоторый набор
тестов. После этого можно начинать изменять
отдельные части исходного кода и смотреть, как
реагируют на это тесты. Одно изменение исходного
кода можно называть Мутацией. Например,
изменение бинарного оператора "+" на бинарный "-"
является мутацией кода. Результатом мутации
является Мутант - то есть это новый мутированный
код. Каждая мутация любого оператора в коде
приводит к новому мутанту, для которого должны
быть запущены тесты.
4.
Мутационное тестированиеКроме изменения "+" на "-", существует множество
других мутационных операторов, каждый из которых
имеет свою цель и применение:
Мутация значений: изменение значения параметра
или константы;
Мутация операторов: реализуется путем
редактирования, удаления или перестановки
оператора;
Мутация решения: изменение логических,
арифметических и реляционных операторов.
5.
Мутационное тестированиеВ зависимости от результата теста мутанты
делятся на:
Выжившие мутанты: мутанты, которые все
еще живы, то есть не обнаруживаются при
выполнении теста. Их также называют live
mutants;
Убитые мутанты: мутанты, обнаруженные
тестами;
6.
Мутационное тестированиеЭквивалентные мутанты: мутанты, которые
изменив части кода не привели к какому-либо
фактическому изменению в выводе программы,
т.е. они эквивалентны исходному коду;
Нет покрытия: в этом случае мутант выжил,
потому что для этого мутанта не проводились
тесты. Этот мутант находится в части кода, не
затронутой ни одним из тестов. Это означает,
что тестовый пример не смог его охватить;
7.
Мутационное тестированиеТайм-аут: выполнение тестов с этим активным мутантом
привело к тайм-ауту. Например, мутант привел к
бесконечному циклу в вашем коде. Он считается
«обнаруженным». Логика здесь в том, что если этот
мутант будет внедрен в код, CI-сборка обнаружит его,
потому что тесты никогда не завершатся;
Ошибка выполнения: выполнение тестов привело к
ошибке. Это может произойти, когда средство запуска
тестов не работает. Например, когда средство
выполнения теста выдает ошибку OutOfMemoryError или
для динамических языков, когда мутант привел к
неразборчивому коду.
8.
Мутационное тестированиеОшибка компиляции: это состояние возникает, когда это
компилируемый язык. Мутант привел к ошибке компиляции. Он
не отражается в оценке мутации, поэтому не нужно уделять
слишком много внимания изучению этого мутанта;
Игнорируется: можно увидеть это состояние, когда пользователь
устанавливает конфигурации для его игнорирования. Он будет
отображаться в отчетах, но не повлияет на оценку мутации;
Тривиальные мутанты: фактически ничего не делают. Любой
тестовый пример может убить этих мутантов. Если в конце
тестирования остались тестовые примеры, значит, это
недопустимый мутант.
9.
МетрикиОбнаруженные: это количество мутантов,
обнаруженных тестом, то есть убитых
мутантов. Detected = Killed mutants +Timeout;
Необнаруженные: это количество мутантов,
которые не были обнаружены тестом, то
есть выживших мутантов. Undetected =
Survived mutants + No Coverage;
10.
МетрикиПокрытые: это количество мутантов
покрытых тестами. Covered = Detected
mutants + Survived mutants;
Действительные: это количество
действительных мутантов, не вызвавших
ошибки компиляции или рантайма. Valid =
Detected mutants + Undetected mutants;
11.
МетрикиНедействительные: это количество всех
недействительных мутантов, т.е. они не
могли быть протестированы, так как
вызывали ошибку компиляции или
выполнения. Invalid = Runtime errors +
Compile errors;
Всего мутантов: содержит всех мутантов.
Total = Valid + Invalid + Ignored;
12.
МетрикиОценка мутации на основе покрытого кода:
оценивает общий процент убитых мутантов на
основе покрытия кода. Mutation score based on
covered code = Detected / Covered * 100;
Неправильный синтаксис: их называют
мертворожденными мутантами, это представлено как
синтаксическая ошибка. Обычно эти ошибки должен
обнаруживать компилятор;
Оценка мутации: это оценка, основанная на
количестве мутантов. В идеале равна 1 (100%).
Mutation score = Detected / Valid * 100 (%).