Статья написана на основе поста в телеграм-канале Крестовое соединение .
Прежде чем говорить об этом подходе, я сначала в двух словах объясню, что такое мутационное тестирование в целом.
Для тех, кто не знает.
Мутационное тестирование
Когда вы пишете тесты, TDD или нет, даже с формальным 100% покрытием, вы никогда не будете уверены, что всё в коде действительно протестировано.Например, вы можете просто ошибиться при вызове Assert в самом тесте.
И даже если при тестировании нам удалось достичь какого-то if, то не факт, что все условия в этом if были проверены правильно.assertEquals($a, $a);
Чтобы убедиться, что тесты действительно тестируются, есть такой способ: сами вносите ошибки в код и смотрите, не приводит ли это к провалу тестов.
Если тесты по-прежнему зеленые с явной ошибкой, значит, не все протестировано.
Например, замените плюс на минус или добавьте к условию «нет» и посмотрите, отреагируют ли тесты.
Этот подход называется «мутационное тестирование».
Обычно это делается в очень важных областях программирования, где ошибки обычно недопустимы.
Например, программное обеспечение марсохода или медицинское программное обеспечение.
Конечно, при строительстве марсохода все это делается автоматически: специальный инструмент искажает вашу программу и проверяет, не прошли ли испытания.
Проблема такого подхода в том, что его довольно утомительно настраивать, много нюансов, как описать, что нужно мутировать, что нет. И все это потребляет дикое количество ресурсов: парсинг кода в AST, мутацию и обратное преобразование.
Развитие, основанное на мутациях
Теперь некоторые авторы предложить подход к разработке, основанный на мутациях.Это похоже на TDD, но наоборот.
- сначала добавьте новый код в проект
- временно внести ошибку
- напишите тест, который ловит эту ошибку (или исправьте старые тесты)
- перейти к следующей строке (или к следующей части условия if).
Конечно, и здесь можно случайно упустить кусочек логики, но в целом MDD(?) гораздо упрямее, чем 100% покрытие или TDD.
ИМХО, тестирование, основанное на мутациях, может и должно использоваться только там, где есть ответственная логика.
Работа с деньгами, медицинским ПО и т. д. Понятно, что вам не придется тратить ресурсы, как ручные, так и автоматические, на конечную точку, отображающую текущую погоду или прочую ерунду.
В целом, многие проекты содержат 95% стандартного шаблона и лишь немного важной бизнес-логики.
При желании эту важную логику можно довести до состояния, близкого к идеальному.
Конечно, мы обсудим развитие, основанное на мутациях, в одном из следующих выпусков.
«Продажа цинка» , не забудьте подписаться на подкаст Теги: #программирование #мутационное тестирование #Разработка, основанная на мутациях
-
Вся Правда О Разработке Iphone
19 Oct, 24 -
44 Года 4-Битному Микропроцессору Intel 4004
19 Oct, 24 -
Google Adsense Для Доменеров.
19 Oct, 24