Що таке тестування на мутацію?
Як слово "мутувати" взагалі означає "зміна", так і тестування на мутацію означає. Тестування на мутацію - це тип тестування програмного забезпечення, яке виконується шляхом зміни або вимкнення фрагмента коду, щоб перевірити / перевірити, чи є тестові випадки достатньо здатними знайти помилки / дефекти. Тестування на мутацію підпадає під тестування White Box і в основному проводиться під час виконання тестів Unit для певного модуля програми. Зміни, внесені у виконаний вихідний / основний код, вносяться в невеликій кількості, щоб це не впливало на загальну мету. Це також відоме як техніка виявлення несправностей, оскільки це робиться з метою виявлення слабкості тестових випадків шляхом створення несправності в вихідному коді.
Перш ніж проводити тестування, дуже важливо зрозуміти, що стоїть за ним. Основна мета тестування на мутацію - знайти ефективність розроблених тестових випадків, яка повинна бути достатньо здатною виявити навіть невеликі зміни, внесені в код. Це робиться для пошуку проблем у наборі тестування та даних тестів, які використовуються під час виконання тестування будь-якого програмного забезпечення. Створюються кілька мутантів або версій оригінального коду, і кожна з них тестується на оригінальних тестових випадках. Якщо результати тестових випадків залишаються такими ж, як і в оригінальному коді, то і код, і тестові випадки перевіряються знову, оскільки або код не був виконаний, або тестовий набір недостатньо здатний знайти мутантний код.
Види тестування на мутації
В основному існує 3 типи тестування на мутації, які виконуються для створення мутантів вихідного коду:
1. Ціннісна мутація
Як зазначає ім'я, в мутації Значення значення констант, параметрів, що передаються в методах, значення, використовувані в циклі, змінюються для створення програми-мутанта. Або велике значення змінюється на менше, або навпаки. В основному значення, які вже визначені в програмі, змінюються, щоб виконати мутацію значення.
Оригінальний код:
int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);
Код мутанта:
int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);
2. Мутація рішення
У мутації рішень змінюються логічні та арифметичні оператори, що використовуються в програмі, що змінює загальне прийняття рішень у програмі та її відповідні результати. Наприклад, певний оператор "якщо" запускається лише тоді, коли (a> b). У мутантному коді цей оператор змінюється на (a <b), що змінює загальне прийняття рішення в коді.
Оригінальний код:
if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)
Код мутанта:
if (a (
print(“yes”);
)
else
(
print (“No”);
)
3. Мутація заяви
У «Мутації заяви» зміни вносяться в повних висловлюваннях коду, щоб створити програму-мутант. Зміни в операторі можуть видаляти весь вислів, змінити порядок висловлювання в коді, скопіювати і вставити заяви в інше місце в коді, повторюючи або дублюючи кілька заяв у вихідному коді.
Оригінальний код:
if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)
Код мутанта:
if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)
Переваги та недоліки мутаційного тестування
Переваги та недоліки мутаційного тестування наведені нижче:
Переваги
Нижче наведено деякі переваги тестування на мутації:
- Однією з найбільших переваг тестування на мутації є те, що воно допомагає знайти приховані дефекти та максимальне покриття коду, щоб виявити частину коду, яка не ретельно перевірена оригінальними тестовими кейсами.
- Тестування на мутації допомагає знайти якість тестових випадків, які використовуються для тестування програмного забезпечення та надають справжній зворотній зв’язок тестерам про процес тестування та якість тесту.
- Це допомагає знайти якісні помилки, які не просто знайти звичайним тестуванням.
- Тестування мутацій іноді виявляє приховані дефекти, такі як неоднозначність коду, неправильні значення змінних тощо у коді на ранніх етапах тестування програмного забезпечення, що дуже вигідно.
- Іноді і код, і тестовий випадок є правильними, але проблема, викликана даними тесту. Тестування на мутацію допомагає з’ясувати проблеми в тестових даних.
Недоліки
Нижче наведено деякі недоліки тестування на мутації:
- Під час тестування на мутації різні мутанти коду створюються та перевіряються на оригінальний тестовий набір, а значить, це забирає багато часу, виконуючи лише тестування одиниці однієї функції / модуля програми.
- Як було сказано вище, всі мутанти тестуються на оригінальний набір, тож існує велика кількість тестових випадків, які потрібно виконати, і, отже, це неможливо виконати без інструмента автоматизації, який коштує дорого і може заважати бюджету проекту.
- Складні мутанти, створені з оригінального коду, можуть призвести до плутанини та помилок у вихідному коді.
Висновок
Наведене вище пояснення чітко визначає, що таке тест на мутацію та її значення в галузі тестування програми. Якщо ми хочемо провести та вичерпати тестування програми із тестовими сценаріями максимального покриття коду, мутаційне тестування відіграє вирішальну роль.
Рекомендовані статті
Це керівництво по тестуванню мутацій. Тут ми обговорюємо, що таке тестування на мутації? а також типи мутаційного тестування, а також переваги та недоліки. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше
- Що таке React?
- Негативне тестування
- Тестування мобільного додатку
- Розширений стандарт шифрування
- Кодове покриття проти тестового покриття | Топ-4 відмінності, які потрібно вивчити
- Інструменти охоплення коду | Топ-6 інструментів покриття коду