Что для вас TDD (разработка через тестирование)?

fisher

накатила суть
может, я чего не понимаю, конечно... я против TDD. вернее, не то что против - не считаю, что вообще надо придерживаться какой-то методологии, с пеной у рта ее защищать, продвигать в массы, задаваться вопросом почему вы ещё не. разве это не вторично? что вы хотите получить - удовольствие или деньги? методология - абстракция, теоретизирование. эффективное ведение проекта - практика. нет абстрактного проекта. нет абстрактной команды. есть ты, твоя башка, твоя команда, твой проект, твое начальство и все прочие частные условия. это дело. завтра будет другая команда и другое дело. почуствуя "неэффективность" работы - а это только на опыте - вы адаптируетесь к новым условиям. задача проекта - качество? счаз. задача - пардон, бабло. мы с вами - инструмент. бизнесу нужен результат, а наш с вами внутренний комфорт - не цель, а средство. что для вас тест? что он проверяет? детсадовские ошибки геттеров и сеттров? такие ошибки "дешевые" - чаще всего выявляются раньше введния в эксплуатацию. как вы протестирует ошибки архитектуры? чем тест поможет в "проектировании"? вы говорите, что на этапе тестов становится ясно, какой должен быть проект? это чушь, наверное, вы не работали над действительно крупными проектами. да и спасает это только относительно Ваших субъективных ошибок. но на жизнь проекта влияет масса других независящих от Вас условий. вам нужна мобильность - тесты вам навредят - мобильность вы теряете. вам нужет быстрый прототип, тестирование по результату (но не тестирование ДО - этот бред меня вообще удивляет), нагрузочное тестирование, измение прототипа, и по кругу. зачем какие-то мелкие никому не нужные тесты?
 

syfisher

TDD infected!!
О да, я ждал такого поста! fisher-у спасибо!! Очень ясное изложение мысли насчет "Что для вас TDD" Кто еще??? Но чтобы именно также качественно. Только не нужно делать из этой темы флуд, пожалуйста.
 

Mihail

Guest
Уважаемый
Вы разницу чувствуете.
Смотрю Limb - где тест на класс db_factory?
Я в online.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Собственно, ничего особо нового добавить не могу.
модульное тестирование во многих задачах (исключения все же есть) - потеря драгоценного времени. Очень часто делаются пробные проекты, просто посмотреть выйдет ли какой-то толк или нет (в денежном эквиваленте). Пока пишешь тесты на методы get и set, всё благополучно устареет. Да еще и переписывать эти тесты при изменении в классе/структуре классов!

Писать программы правильно надо, но при определенном опыте это можно делать приемлемо и без тестов. Я рад, что вы с помощью тестирования сначала думаете, потом пишете класс, но тесты здесь необязательны, это можно делать и так. Вопрос самодисциплины, а скорее даже привычки.

А некоторые куски программ при некоторых обстоятельствах бывает и не надо правильно писать, лишь бы работало :) (щас меня побьют:)). В моей практике таких примеров море, когда достаточно того, что программа сработатывает верно с некоторой вероятностью, только для того, чтобы подтвердить/опровергнуть мега-эксперимент, пока все это не устарело. Уж какие там тесты геттеров и сеттеров. Разумеется речь не идет о CMS; это извращенская специфика моих задач :), да и опять-таки при определенной привычке/самодисциплине код все равно получается приемлимым, и потом потихоньку рефакторится, но только там где есть реальные проблемы с добавлением фич или еще какие проблемы, а не каждую строчку вылизывать и тестировать.

Удовлетворение от быстро написанного проекта, который начал приносить деньги гораздо выше чем удовлетворение от долгописанного проекта который работает на 100%, код правильный на 100%, но денег еще не приносит.

Опять же геморрой с базами данных, наследованием, и т.д. Вместо того, чтобы думать над приложением, думаешь как его правильно протестировать. Нафиг надо?

Есть, наверняка есть приложения которым требуются тесты. Возможно это очень большая CMS для очень-очень ответственных сайтов, где любой баг - катастрофа, и его исправление должно быть моментальным.

Или например, при построении космического корабля, (возможно) должен быть протестирована каждый винтик, но и денег на это у них выделяется соответственно.

По крайней мере, если и тестировать модульным тестированием, то не всё подряд, не во всех программах, не во всех проектах.

Короче, TDD - перфекционизм.
 
Сверху