Этот вопрос проверяет понимание экономической стороны тестирования и жизненного цикла ошибок.
Unit-тесты позволяют находить ошибки на самом раннем этапе.
Чем раньше найдена ошибка, тем дешевле ее исправить.
Исправление бага в unit-тесте занимает минуты, а в продакшене — дни или недели.
Это напрямую снижает стоимость разработки.
Стоимость ошибки растет по мере продвижения кода по этапам разработки.
Одна и та же ошибка может стоить по-разному:
Во время написания кода
Исправляется за несколько минут
На этапе тестирования
Требует анализа, воспроизведения
В продакшене
Возможны простои
Потеря пользователей
Репутационные риски
Unit-тесты:
Запускаются быстро
Не требуют сложной среды
Локализуют проблему в одном месте
Ошибка сразу указывает на конкретный метод или класс.
Без unit-теста:
Ошибка попадает в общий билд
Проходит несколько этапов
Ловится на проде
С unit-тестом:
Тест падает при локальном запуске
Разработчик сразу видит проблему
@Test
void shouldNotAllowNegativeBalance() {
Account account = new Account(100);
account.withdraw(150);
assertEquals(0, account.getBalance());
}
Если логика изменится, ошибка будет обнаружена сразу.
Unit-тесты минимизируют стоимость ошибок за счет раннего обнаружения.
Это один из самых экономически выгодных инструментов в разработке.