Я работаю в небольшой компании в качестве индивидуального разработчика. На самом деле я единственный разработчик в компании. У меня есть несколько (относительно) крупных проектов, которые я написал и регулярно поддерживаю, и ни у одного из них нет тестов для их поддержки. Когда я начинаю новые проекты, я часто задаюсь вопросом, стоит ли мне попробовать подход TDD. Это звучит как хорошая идея, но я, честно говоря, никогда не смогу оправдать дополнительную работу.
Я усердно работаю, чтобы быть дальновидным в своем дизайне. Я понимаю, что, безусловно, однажды другому разработчику придется поддерживать мой код или, по крайней мере, устранять его. Я держу вещи настолько простыми, насколько это возможно, и я комментирую и документирую вещи, которые будет трудно понять. И дело в том, что эти проекты не настолько велики или сложны, что достойному разработчику будет сложно их понять.
Многие примеры тестов, которые я видел, доходят до мелочей, охватывающих все аспекты кода. Поскольку я единственный разработчик, и я очень близок к коду во всем проекте, гораздо эффективнее следовать шаблону «запись-потом-проверка вручную». Я также нахожу, что требования и функции меняются достаточно часто, так что поддержание тестов добавит значительного сопротивления проекту. Время, которое могло бы быть потрачено на решение бизнес-задач.
Так что я получаю один и тот же вывод каждый раз. Возврат инвестиций слишком низок.
Иногда я настраивал несколько тестов, чтобы убедиться, что я правильно написал алгоритм, например, подсчет количества лет, проведенных в компании, на основе даты их найма. Но с точки зрения покрытия кода я покрыл около 1% своего кода.
В моей ситуации, вы все равно найдете способ сделать модульное тестирование регулярной практикой, или я оправдан, чтобы избежать этих накладных расходов?
ОБНОВЛЕНИЕ: Несколько вещей о моей ситуации, которые я пропустил: все мои проекты - это веб-приложения. Чтобы покрыть весь мой код, я должен был бы использовать автоматизированные тесты пользовательского интерфейса, и это область, в которой я до сих пор не вижу большого преимущества по сравнению с ручным тестированием.