Как Stryker (среда тестирования мутаций) генерирует мутантов? - PullRequest
3 голосов
/ 04 октября 2019

Я изучаю мутации и пытаюсь интегрировать Stryker в мою кодовую базу. Мое приложение написано на React, Nodejs и в настоящее время использует Jest для тестирования на стороне клиента и Mocha для тестирования на стороне сервера. У меня есть несколько вопросов по этому поводу:

  1. Кто-нибудь пробовал / изучал мутационное тестирование раньше? Есть ли у вас какие-либо мысли / сомнения по поводу плюсов и минусов?

  2. С точки зрения структуры Stryker, мне любопытно, как Stryker генерирует мутанты? Есть ли какой-либо алгоритм, используемый в Stryker для генерации мутантов?

Любой вклад будет высоко ценится. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 октября 2019
  1. Мутационное тестирование является отличным инструментом для значительного улучшения «охвата» теста. Если вы хотите более полное регрессионное покрытие в автоматизированном модульном тестовом наборе, мутационное тестирование может помочь вам найти дыры в вашем тестовом покрытии, и это может помочь найти и предотвратить ошибки. Имейте в виду, что: вам все еще нужно подумать о видах тестирования, которые вам нужны. Простое добавление тестов для уничтожения мутантов может быть вредным. Таким образом, ваши тесты могут оказаться слишком связаны с вашей реализацией. Однако это не делает тестирование на мутации плохим, это просто означает, что вы должны использовать инструмент разумно, как и большинство инструментов. Другое предостережение заключается в том, что тестирование на мутации может быть медленным, но поскольку вам не нужно запускать тесты на мутации так часто, как обычный набор тестов, это не страшная проблема.
  2. Stryker использует специальные мутаторы, которые ищут код, которыйон знает, как мутировать. Вы можете найти список мутаторов в справочнике . Если вы чувствуете себя авантюрным, вы можете добавить своих собственных мутаторов. Но основной способ работы алгоритма таков:
    1. разбирает код на что-то, что может быть проверено алгоритмом
    2. ищет фрагменты кода, которые соответствуют определенному шаблону
    3. modifyэтот код таким образом, что все еще должен быть действительным синтаксисом, но изменяет поведение таким образом, что, вероятно, «неправильно». (Самый простой пример - полностью удалить поведение)
1 голос
/ 04 октября 2019

Для общих концепций мутационного тестирования я полностью рекомендую документы Pitest (MT-реализация для Java):

Я также написал по этой теме некоторое время назад: https://pedrorijo.com/blog/intro-mutation/

По вашим вопросам это должно дать вам хорошее представление о существующих возможностях. Не уверен насчет информации о нападающем

...