Насколько важно покрытие тестами в проекте и можно ли выкатывать фичи без тестов?
Что проверяют
Зрелость, а не догму. Правильный ответ не «покрытие обязано быть полным» и не «тесты тормозят разработку». Хотят услышать, что покрытие это метрика исполненных строк, а не корректности, и что решение выкатывать без тестов зависит от цены ошибки и от того, насколько дёшево откатиться.
Как отвечать
Сначала разведите понятия. Покрытие показывает, какие строки выполнялись во время прогона, и строка может быть выполнена без единой проверки результата. Поэтому высокий процент сам по себе ничего не гарантирует, а быстро набирается тестами на тривиальный код. Ценность дают тесты на бизнес-правила, на границы диапазонов, на каждый найденный баг и на контракты с внешними системами.
Потом ответьте на вторую половину вопроса прямо: да, выкатывать без тестов можно осознанно, когда ошибка дешёвая и обратимая: внутренний скрипт, эксперимент, функция под флагом на небольшой доле пользователей. Нельзя там, где откат не спасает: деньги, права доступа, миграции и рассылки.
Добавьте конкретику по Python: типы не проверяются компилятором, поэтому опечатку в редкой ветке не поймает никто, и минимальная страховка это статический анализ в сборке плюс дымовой тест основного пути. Полезно упомянуть покрытие по ветвлениям вместо строк и мутационное тестирование как способ проверить сами тесты.
Где спотыкаются
Называют целевой процент как самоцель и требуют его от всего репозитория. На старом коде это приводит к пачке бессмысленных тестов ради цифры. Разумнее порог на изменённый код в запросе на слияние и явные исключения для сгенерированного.
Отвечают догматично: без тестов не выкатываю никогда. Часто вопрос задают там, где есть большой унаследованный код почти без тестов, и ищут человека, который умеет добавлять их постепенно, начиная с проверок вокруг куска, который собираются менять.
Путают уровни. Всё проверяется сквозными сценариями, прогон занимает полчаса, тесты мигают, команда перестаёт им верить. Основная масса это быстрые модульные тесты, интеграционные нужны на стыки с базой и очередями, сквозных достаточно нескольких на ключевые пути.