Pull to refresh

Comments 8

Т.е. это уже какое-то метатестирование получается… тестирование тестов.
UFO just landed and posted this here

Это просто более полный способ оценить покрытие кода тестами.


Обычная оценка по затронутым строкам кода по время выполнения зачастую оказывается слишком поверхностной


Я пробовал мутационное тестирование, когда реализовал сложные алгоритмы, очень полезная тема

Это нормально! (tm)

Для подобных тестов всегда есть проблемы:

1. Вообще корректен ли тест? Например, мы можем проверять (не заметив это) не то, что функция вернула верное значение, а то, что она просто сработала без исключения.
2. Все ли ветки исполнения проверены? (стандартное понятие «покрытия кода»).

Для первого мы делаем инверсные тесты как обязательную часть подхода, но они становятся основным средством в сценарном функциональном тестировании — то есть когда запускается сразу составная среда из нескольких компонентов и проверяется работоспособность всего такого агрегата. А вот на нижних уровнях, где юнит-тесты — основное, такие автоматизированные мутаторы-вариаторы — очень удобное (и теоретически самое полезное, пока не придумали что-то лучше) автоматизированное средство.
Да я и не оспариваю полезность. Просто пошутил. =)
Вообще статья очень вовремя подвернулась.
Автор немного не разобрался, когда он выполнил coverage run `which pytest`, ему в ответе выдали, что 100% тестов было выполнено, а он решил, что это 100% покрытия. Чтобы увидеть покрытие, надо запустить coverage report.

Меня удивило, что в выводе этой программы (терминальном!) ненастраиваемо печатаются эмодзи. Далеко не каждый терминал такое умеет даже сейчас.
Новые времена…
PS: Хабр при отправке комментария их всех почему-то срезает...

Sign up to leave a comment.