Что такое мутационное тестирование? (Пример)
Что такое мутационное тестирование?
Мутационное тестирование — это тип тестирования программного обеспечения, при котором определенные утверждения исходного кода изменяются/мутируются, чтобы проверить, могут ли тестовые примеры найти ошибки в исходном коде. Целью мутационного тестирования является обеспечение качества тестовых примеров с точки зрения надежности, чтобы они не допускали сбоев в работе мутировавшего исходного кода.
Изменения, вносимые в программу мутантов, должны быть крайне небольшими, чтобы они не влияли на общую цель программы. Мутационное тестирование также называют стратегией тестирования на основе ошибок, поскольку оно включает в себя создание ошибки в программе и является разновидностью тестирования. Белый Box Тестирование который в основном используется для Модульное тестирование.
Первоначально мутация была предложена в 1971 году, но ее не стали использовать из-за высоких затрат. Теперь он снова набрал обороты и широко используется в таких языках, как Java и XML.
Как провести мутационное тестирование?
Ниже приведены шаги для выполнения мутационного тестирования (мутационного анализа):
Шаг 1: Ошибки в исходный код программы вносятся путем создания множества версий, называемых мутантами. Каждый мутант должен содержать одну ошибку, и цель состоит в том, чтобы привести к сбою мутантной версии, что демонстрирует эффективность тестовых примеров.
Шаг 2: Тестовые примеры применяются к исходной программе, а также к программе-мутанту. А Тестовый кейс должен быть адекватным и настроен для обнаружения ошибок в программе.
Шаг 3: Сравните результаты оригинальной и мутантной программы.
Шаг 4: Если исходная программа и программы-мутанты генерируют разные выходные данные, то тестовый пример уничтожает мутанта. Следовательно, тестовый пример достаточно хорош, чтобы обнаружить разницу между исходной и мутантной программой.
Шаг 5: Если исходная программа и программа-мутант генерируют одинаковый вывод, Mutant остается в живых. В таких случаях необходимо создать более эффективные тестовые сценарии, уничтожающие всех мутантов.
Как создавать программы-мутанты?
Мутация — это не что иное, как одно синтаксическое изменение, внесенное в оператор программы. Каждая программа-мутант должна отличаться от исходной программы на одну мутацию.
| Оригинальная программа | Программа мутантов |
|---|---|
| Если (х>у)
Напечатать «Привет» Еще Напечатайте «Привет» |
Если(х <у)
Напечатать «Привет» Еще Напечатайте «Привет» |
Что изменить в программе-мутанте?
Существует несколько методов, которые можно использовать для создания мутантных программ. Давайте посмотрим на них
| Operand операторы замены | Модификация выражения OperaTORs | Модификация заявления OperaTORs |
|---|---|---|
| Замените операнд другим операндом (x на y или y на x) или постоянным значением. | Замена оператора или вставка новых операторов в оператор программы. | Программные операторы модифицируются для создания мутантных программ. |
| Пример-
If(x>y) заменить значения x и y Если (5>y) замените x на константу 5 |
Пример-
Если (х == у) Мы можем заменить == на >= и получить программу-мутант как If(x>=y) и вставка ++ в оператор Если(х==++у) |
Пример-
Удалить часть else в операторе if-else Удалите весь оператор if-else, чтобы проверить, как ведет себя программа. Некоторые из примеров операторов мутации:
|
Автоматизация мутационного тестирования
Мутационное тестирование занимает чрезвычайно много времени и его сложно выполнять вручную. Чтобы ускорить процесс, рекомендуется использовать инструменты автоматизации. Инструменты автоматизации также снижают стоимость тестирования.
Список доступных инструментов-
Типы мутационного тестирования
In Программная инженерияМутационное тестирование можно условно разделить на три типа: мутация утверждения, мутация решения и мутация значения.
- Мутация заявления – разработчик вырезал и вставил часть кода, результатом чего может стать удаление некоторых строк.
- Мутация значения– изменяются значения основных параметров
- Мутация решения– управляющие операторы должны быть изменены
Оценка мутаций
Оценка мутации определяется как процент убитых мутантов от общего числа мутантов.
- Оценка мутации = (Убитые мутанты / Общее количество мутантов) * 100
Тестовые случаи адекватны мутации, если оценка равна 100%. Результаты экспериментов показали, что мутационное тестирование является эффективным подходом для измерения адекватности тестовых случаев. Но основным недостатком является высокая стоимость создания мутантов и выполнения каждого тестового примера против этой мутантной программы.
Преимущества мутационного тестирования
Ниже приведены преимущества мутационного тестирования:
- Это мощный подход для достижения высокого охвата исходной программы.
- Это тестирование способно всесторонне протестировать мутантную программу.
- Мутационное тестирование обеспечивает разработчику программного обеспечения хороший уровень обнаружения ошибок.
- Этот метод выявляет неоднозначности в исходном коде и способен обнаружить все ошибки в программе.
- Клиенты получают выгоду от этого тестирования, поскольку получают наиболее надежную и стабильную систему.
Недостатки мутационного тестирования
С другой стороны, у мутантного тестирования есть недостатки:
- Мутационное тестирование является чрезвычайно дорогостоящим и трудоемким, поскольку необходимо создать множество мутантных программ.
- Поскольку это тестирование требует много времени, справедливо будет сказать, что такое тестирование невозможно провести без инструмента автоматизации.
- Каждая мутация будет иметь такое же количество тестовых случаев, как и исходная программа. Таким образом, возможно, потребуется протестировать большое количество мутантных программ с помощью исходного набора тестов.
- Поскольку этот метод предполагает изменение исходного кода, он совершенно неприменим для Цвет - Черный. Box Тестирование.
Заключение
Вам нужно исчерпывающее тестирование вашего приложения? Ответ: мутационное тестирование. Это наиболее полный метод тестирования программы. Это метод, который проверяет эффективность и точность программы тестирования для обнаружения неисправностей или ошибок в системе.



