Alex Four
🚨 Код каверадж или как сделать через хорошо намного хуже
Если программиста спросить, нужно ли писать тесты для своего кода, то он согласится. А нужно ли чтобы покрытие кода росло, или хотя бы не уменьшалось? Скорее всего, тоже согласится. А я вижу тут дорожку в ад.
Существуют метрики которые автоматически считают, насколько процентов твой код покрыт тестами. , что чем больше кода протестировано, тем лучше. Поэтому некоторые команды на уровне СI вводят проверку покрытия кода (code coverage). И если твой комит его уменьшает значит ты добавляешь протестированный код.
Но поскольку система автоматическая она проверяет наличие тестов, но не проверяет их качество. И для того, чтобы обойти эту систему человек (ленивый) разумный начинают писать тесты, которые просто обходят эту проверку. И в итоге они либо плохо проверяют, либо вообще ничего не проверяют.
Казалось бы ну и ладно, но оказывается, что такие тесты, как и любой плохо написанный код, потом тяжело поддерживать.
Ну а дальше, картина маслом, тесты начнут падать, в и мешать разработке. Разработчики будут мучиться, менеджеры срывать сроки, все будут страдать. Потом настанет такой момент, когда команда встанет перед выбором, либо релизимся сейчас, либо еще пол дня чиним тесты, а ждать нельзя. И будет решено сейчас отключить тесты, а после релиза поправить.
Отключили один раз, второй, потом так и не включили. Вот и все, код в проекте больше не протестирован.
У меня на предыдущей работе была дикая система для тестирования, на селениуме. Она мало того, что работала долго, минут 40, так еще и могла упасть, а могла и не упасть. Мы уже наизусть знали все мигающие тесты, и знали когда надо фиксить, а когда стоит перезапустить. Я до сих пор помню то удовольствие с которым я удалял эти тесты.
👮 А как стоит делать?
Конечно покрывать код тестами нужно, и следить за покрытием тоже нужно. Но не стоит мешать при этом разработке. Разработчик всегда срезает углы, потому что на него давят сроки и лень.
Поэтому стоит просто следить за текущим покрытием тестами, и если оно стало ниже какой-то линии, то стоит выделить время в спокойно заняться приведением тестов в порядок. Можно считать тесты обычным техническим долгом.
Поддержать меня можно на бусти, а обсудить можно в моем телеграм канале
А ты тестируешь свой код? И как вы следите за покрытием кода тестами?