Учебники

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

Что такое мутационное тестирование?

Mutation Testing — это тип тестирования программного обеспечения, в котором мы изменяем (меняем) определенные утверждения в исходном коде и проверяем, способны ли тестовые примеры найти ошибки. Это тип тестирования белого ящика, который в основном используется для модульного тестирования . Изменения в мутантной программе сохраняются крайне небольшими, поэтому это не влияет на общую цель программы.

Цель Mutation Testing — оценить качество тестовых случаев, которые должны быть достаточно надежными, чтобы не выполнять мутантный код. Этот метод также называется стратегией тестирования на основе ошибок, так как он включает в себя создание ошибки в программе.

Мутация была первоначально предложена в 1971 году, но потеряла пыл из-за высоких затрат. Теперь он снова набирает обороты и широко используется для таких языков, как Java и XML.

В этом уроке вы узнаете

Как выполнить мутационное тестирование?

Mutation Testing: Полное руководство

Ниже приведены шаги для выполнения мутационного тестирования (мутационного анализа):

Шаг 1 : Ошибки вводятся в исходный код программы путем создания множества версий, называемых мутантами. Каждый мутант должен содержать одну ошибку, и цель состоит в том, чтобы заставить версию мутанта потерпеть неудачу, что демонстрирует эффективность тестовых случаев.

Шаг 2 : Контрольные примеры применяются к исходной программе, а также к программе мутанта. Пример теста должен быть адекватным, и она переделана , чтобы обнаружить ошибки в программе.

Step 3: Compare the results of an original and mutant program.

Step 4: If the original program and mutant programs generate the different output, then that the mutant is killed by the test case. Hence the test case is good enough to detect the change between the original and the mutant program.

Step 5: If the original program and mutant program generate the same output, Mutant is kept alive. In such cases, more effective test cases need to be created that kill all mutants.

How to Create Mutant Programs?

Mutation Testing: Полное руководство

A mutation is nothing but a single syntactic change that is made to the program statement. Each mutant program should differ from the original program by one mutation.

Original Program Mutant Program
If (x>y)

Print «Hello»

Else

Print «Hi»

If(x<y)

Print «Hello»

Else

Print «Hi»

What to change in a Mutant Program?

There are several techniques that could be used to generate mutant programs. Let’s look at them

Operand replacement operators Expression Modification Operators Statement modification Operators
Replace the operand with another operand (x with y or y with x) or with the constant value. Replace an operator or insertion of new operators in a program statement. Programmatic statements are modified to create mutant programs.
Example-

If(x>y) replace x and y values

If(5>y) replace x by constant 5

Example-

If(x==y)

We can replace == into >= and have mutant program as

If(x>=y) and inserting ++ in the statement

If(x==++y)

Example-

Delete the else part in an if-else statement

Delete the entire if-else statement to check how a program behaves

Some of sample mutation operators:

  • GOTO label replacement
  • Return statement replacement
  • Statement deletion
  • Unary operator insertion (Like — and ++)
  • Logical connector replacement
  • Comparable array name replacement
  • Removing of else part in the if-else statement
  • Adding or replacement of operators
  • Statement replacement by changing the data
  • Data Modification for the variables
  • Modification of data types in the program

Automation of Mutation Testing:

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

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

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

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

  1. Мутация оператора — разработчик вырезает и вставляет часть кода, результатом которого может быть удаление некоторых строк
  2. Value Mutation — значения первичных параметров изменены
  3. Решение Мутация — операторы управления должны быть изменены

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

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

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

Mutation Testing: Полное руководство

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

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

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

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

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

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

Вывод:

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