Я не на 100% впевнений, чи пояснення нижче є історично точним. Якщо це не так, будь ласка, не соромтесь редагувати чи видаляти.
Тестування на мутації винайшов Ліптон. Тестування на мутації може розглядатися як спосіб вимірювання якості та ефективності тестового набору. Ключова ідея - ввести несправності в тестувану програму (тобто мутувати програму), бажано види несправностей, які може створити людський програміст, і подивитися, чи тест-пакет знайде введені несправності. Типовим прикладом випробування мутації несправностей може бути заміна x> 0 на x <0, або заміна x на x + 1 або x-1. Частка несправностей, виявлених тестовим набором, - це "оцінка достатності мутації" тестового набору. Якщо говорити дуже вільно, можна вважати це методом Монте-Карло для обчислення оцінки адекватності мутацій.
Більш абстрактно можна сказати, що тестування на мутацію висуває на перший план симетрію чи подвійність між програмою та її тестовими наборами: не тільки тестовий набір може бути використаний для впевненості у правильності програми, але, навпаки, програма може бути використовується для отримання впевненості в якості тестового набору.
Зважаючи на цю подвійність, тестування на мутацію також концептуально близьке до введення несправності . Обидва технічно схожі, але мають різні цілі. Мутаційне тестування спрямоване на те, щоб виміряти якість тестового набору, тоді як введення несправності прагне встановити якість програми, як правило, якість її обробки помилок.
Останнім часом ідеї тестування на мутації використовувались для перевірки (формалізації) логічних теорій. Перефразовуючи конспект (4): Коли розробляються нетривіальні формалізації у доказів теореми, значна кількість часу приділяється «налагодженню» специфікацій та теорем. Як правило, під час невдалої спроби доведення виявляються невірні специфікації або теореми. Це дорога форма налагодження. Тому часто корисно перевірити домисли, перш ніж приступати до доказів. Можливий спосіб зробити це - призначити випадкові значення вільним змінним гіпотези, а потім оцінити їх. (4) використовує мутації для перевірки якості використовуваних генераторів тестових випадків.
Історія . З (1): Історія випробувань на мутації можна простежити до 1971 року в студентській роботі Річарда Ліптона. (2), а також Гамлет (3).
Репозиторій тестування мутацій: теорія тестування мутацій .
RA DeMillo, RJ Lipton, FG Sayward, Підказки щодо підбору тестових даних: Довідка для практикуючого програміста .
Р.Г. Гамлет, Тестування програм за допомогою компілятора .
С. Бергхофер, Т. Ніпков, Випадкові випробування в Ізабелі / HOL. .