Поначалу мерил себя процентами покрытия и подгонял, пока не стала зелёная цифра. А потом понял: красивые 90% не спасают, если критичный сценарий не проверен. Уже не скажу, чтобы обрадовала сама цифра, скорее пришло спокойствие — важны сценарии и их границы, а не «строка-в-строку».
Нейтрально: процент покрытия показывает, какие строки трогались тестами, но не гарантирует, что поведение проверено правильно. Лучший компас — список важных сценариев.
# тестируем поведение: успех, пусто, граница
def reserve(slots: int) -> bool:
if slots <= 0:
return False
return True
def test_reserve_pustoy():
assert reserve(0) is False
def test_reserve_granitsa():
assert reserve(1) is True
Урок с процентами дорогой: я потратил вечера на «добивание цифры», хотя можно было покрыть главное. Теперь первым делом описываю сценарии, потом думаю о метрике. Итог — меньше фальшивой уверенности, больше пользы от теста.