Занимался недавно минимизацией дистрибутива Linux — удалял не отвечающие назначению дистрибутива пакеты.
Потом прошелся по исходным текстам оставшихся и удивился огромному числу тестовых файловкаталогов и каталогов с примерами.
Я был приятно удивлён, так как ценю надёжное ПО.
Я был неприятно удивлён, так как каждый лишний файл, не реализующий функциональность в продакшене, затрудняет сдачу проекта Заказчику.
Вот такая шизофрения.
Ни в коей мере не оспариваю важность и нужность тестирования.
Тем более не считаю излишним помогать пользователям осваивать пакеты программ на встроенных примерах.
Однако, если мы идём по пути широкого внедрение тестирования вообще и TDD в частности, то давайте будем последовательны.
Я имею в виду следующее.
Если уж при разработке применяется тестовое чистое окружение, в котором программа тестируется перед выкладкой в production, то зачем артефакты тестирования включать в src-пакет, из которого собирается бинарный пакет для развертывания в «боевой обстановке»?
Думаю, в продакшене наличие установленных полных тестов является избыточным. Вполне можно выделить из основного пакета приложения дополнительные *.test.* и *.example.* пакеты, как уже выделены dev-версии пакетов.
Если всё же произойдёт инцидент и нужно будет провести диагностику — вот тогда и можно будет начинать разбираться. Разбиение основного и тестового функционала по нескольким пакетам этому, думаю, не сильно повредит. К тому же, TDD ведь и задуман для того, чтобы в продакшене поменьше сбоило, ведь так?
Автор: Noospheratu