в продолжение к ответу на #87> Опять обман. Покрытие unit-тестами приводит к следующему этапу - сервер тестирования, который
> в цикле гоняет тесты один за другим, рассылая уведомления. Зачем вновь
> и вновь проверять одну и ту же неизменённую функцию одними и
> теми же тестами? Вопрос риторический.
Чтобы знать, что она работает ВСЕГДА, при ЛЮБЫХ изменениях во всём проекте.
Нет никакого другого пути ДОКАЗАТЬ, что код работает, кроме как протестировать его (руками или автоматом - но что быстрее?). А если что-то изменилось - то это уже другой код, который также нуждается в таковом доказательстве.
Для сравнения, чтобы понять зачем нужно доказательство работы кода:
(вопрос для СЕБЯ, а не чтобы отвечать на него другим)
Доверяете ли Вы своему коду так же, как парашюту во время прыжка с самолёта?
> А что, отлаженный код вдруг, сам по себе, перестаёт работать правильно и
> начинает сыпать ошибками?
Всегда есть, как минимум, список новых хотелок от пользователей. И их приходится реализовывать, т.е. МЕНЯТЬ код. И после любого изменения - он автоматически теряет статус отлаженного, т.к. не было ни проверок, ни обкаток его в таком виде (а что и какой пяткой можно зацепить в большой системе, изменив лишь строчку - не всегда можно догадаться; да, программист - это не всезнающий Бог).
Итого: поменялся код - нужно заново выяснить ВСЁ ли работает.
Иначе это будут выяснять либо тестировщики, либо бета-тестеры, либо конечные пользователи.
Выбирать - разработчикам (что говорит об уровне их профессионализма).
> Чаще возникает ситуация, когда что-то не учли. И эти ошибки обычно логические.
> Напр. функция должна возвращать должность сотрудника, но "забыли" про совместителей, которые
> работают на 2+ должностях. В результате неверно начислили зар.плату. Как написать
> unit-тест, чтобы он проверил данную ошибку?
2 разных теста: звать ф-цию в двух разных условиях, которым она должна отвечать.
И тогда она будет отвечать им ВСЕГДА (а если нет - _программист_ увидит CI отчёт о сломанном тесте).
Всё просто.