Какой уровень покрытия тестами вы считаете достаточным? Всегда ли нужен 100% охват?
Уровень: Senior
Ответ
Достаточный уровень покрытия тестами зависит от природы проекта, его критичности и темпа изменений, но распространённая цель — 70-90% покрытие кода модульными тестами. 100% покрытие не является обязательным и не гарантирует отсутствие ошибок: важнее, какие случаи покрыты. Практически добиться 100% сложно и иногда не нужно: некоторые простые геттеры/сеттеры или тривиальный код нет смысла явно тестировать, это только тратит время. Кроме того, "coverage" измеряет лишь долю строк, выполненных в тестах, но не качество самих тестов (они могут не проверять правильность результата). Я считаю, что нужно стремиться покрыть тестами основную бизнес-логику, критические и сложные части системы. Если какой-то модуль не критичен или часто меняется, возможно, тесты на него писать избыточно. 100% охват может быть неоправдан по затратам: проще потратить усилия на тестирование ключевых сценариев и регрессий, нежели гоняться за формальным показателем. Также важно проводить интеграционные и end-to-end тесты, помимо unit. В итоге, полный охват — утопия, вместо этого метрика покрытия должна использоваться разумно: как подсказка, куда добавить тесты, но не самоцель.