Тестирование мутаций при тестировании программного обеспечения: оценка мутантов и amp; Пример анализа

Содержание:

Anonim

Мутационное тестирование

Мутационное тестирование - это тип тестирования программного обеспечения, при котором определенные утверждения исходного кода изменяются / видоизменяются, чтобы проверить, могут ли тестовые примеры находить ошибки в исходном коде. Целью тестирования мутаций является обеспечение качества тестовых примеров с точки зрения надежности, чтобы он не смог выполнить измененный исходный код.

Изменения, внесенные в программу мутантов, должны быть очень небольшими, чтобы они не влияли на общую цель программы. Мутационное тестирование также называется стратегией тестирования на основе ошибок, поскольку оно включает в себя создание ошибки в программе и представляет собой тип тестирования белого ящика, который в основном используется для модульного тестирования.

Мутация была первоначально предложена в 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, чтобы проверить, как ведет себя программа.
Некоторые из примеров операторов мутации:
  • GOTO замена ярлыка
  • Замена заявления на возврат
  • Удаление выписки
  • Вставка унарного оператора (Like - и ++)
  • Замена логического разъема
  • Замена имени сопоставимого массива
  • Удаление части else в выражении if-else
  • Добавление или замена операторов
  • Замена выписки путем изменения данных
  • Изменение данных для переменных
  • Модификация типов данных в программе

Автоматизация мутационного тестирования:

Мутационное тестирование занимает очень много времени и его сложно выполнить вручную. Чтобы ускорить процесс, желательно перейти на средства автоматизации. Инструменты автоматизации также снижают стоимость тестирования.

Список доступных инструментов -

  • Страйкер
  • PIT-тестирование

Типы мутационного тестирования

В программной инженерии тестирование мутаций можно разделить на три основных типа: мутацию операторов, мутацию решений и мутацию значений.

  1. Мутация оператора - разработчик вырезает и вставляет часть кода, результатом которой может быть удаление некоторых строк.
  2. Мутация значения - изменяются значения основных параметров
  3. Мутация решения - необходимо изменить управляющие утверждения

Оценка мутации:

Оценка мутации определяется как процент убитых мутантов от общего числа мутантов.

  • Оценка мутации = (убитых мутантов / общее количество мутантов) * 100

Тестовые случаи адекватны мутации, если результат равен 100%. Экспериментальные результаты показали, что тестирование на мутации является эффективным методом измерения адекватности тестовых примеров. Но главный недостаток заключается в высокой стоимости создания мутантов и выполнения каждого тестового примера для этой мутантной программы.

Преимущества мутационного тестирования:

Ниже приведены преимущества мутационного тестирования:

  • Это мощный подход для достижения высокого охвата исходной программы.
  • Это тестирование позволяет всесторонне протестировать мутантную программу.
  • Мутационное тестирование дает разработчику программного обеспечения хороший уровень обнаружения ошибок.
  • Этот метод выявляет неоднозначности в исходном коде и способен обнаруживать все ошибки в программе.
  • Заказчики получают выгоду от этого тестирования, получая самую надежную и стабильную систему.

Недостатки мутационного тестирования:

С другой стороны, недостатки тестирования мутантов:

  • Мутационное тестирование является чрезвычайно дорогостоящим и трудоемким, поскольку необходимо создать множество мутантных программ.
  • Так как это требует много времени, справедливо сказать, что это тестирование невозможно провести без инструмента автоматизации.
  • У каждой мутации будет такое же количество тестовых примеров, как у исходной программы. Таким образом, может потребоваться тестирование большого количества мутантных программ с использованием исходного набора тестов.
  • Поскольку этот метод включает в себя изменения исходного кода, он совершенно неприменим для тестирования черного ящика.

Вывод:

Вы хотите исчерпывающего тестирования вашего приложения? Ответ - мутационное тестирование. Это наиболее полный метод тестирования программы. Это метод, который проверяет эффективность и точность программы тестирования для обнаружения отказов или ошибок в системе.