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