Я читал этот блог Джоэла Спольски о 12 шагах по улучшению кода . Отсутствие Test Driven Development действительно удивило меня. Поэтому я хочу передать вопрос Гуру. Разве TDD не стоит усилий?
23
Я читал этот блог Джоэла Спольски о 12 шагах по улучшению кода . Отсутствие Test Driven Development действительно удивило меня. Поэтому я хочу передать вопрос Гуру. Разве TDD не стоит усилий?
Ответы:
Разработка, основанная на тестировании, была практически неизвестна до выхода книги Кента Бека в 2002 году, через два года после того, как Джоэл написал этот пост. Тогда возникает вопрос, почему Джоэл не обновил свой тест, или если бы TDD был более известен в 2000 году, включил бы он его в свои критерии?
Я полагаю, что у него не будет, по той простой причине, что важно то, что у вас есть четко определенный процесс, а не конкретные детали этого процесса. По той же причине он рекомендует управление версиями без указания конкретной системы управления версиями или рекомендует иметь базу данных ошибок без рекомендации конкретного бренда. Хорошие команды постоянно совершенствуют и адаптируют, а также используют инструменты и процессы, которые хорошо подходят для их конкретной ситуации в данное время. Для некоторых команд это определенно означает TDD. Для других команд не так уж и много. Если вы принимаете TDD, убедитесь, что это не из менталитета культа грузов .
источник
Джоэл на самом деле обращался к этому конкретно в нескольких местах.
Он объяснил, что тесты не способны уловить много важных проблем, особенно субъективных, таких как "пользовательский интерфейс этого программного обеспечения - отстой?" По его словам, чрезмерная зависимость от автоматизированных тестов в Microsoft - это то, как мы закончили с Windows Vista.
Он написал, как, по его опыту, ошибки, которые на самом деле обнаруживают пользователи, делятся на две категории: 1) те, которые обнаруживаются в обычном использовании, которые программисты могли бы найти, если бы они запускали свой собственный код перед его использованием. или 2) крайние случаи настолько неясны, что никто бы и не подумал написать тесты, чтобы покрыть их в первую очередь. Он заявляет, что лишь очень небольшой процент ошибок, которые он и его команда исправляют в FogBugz, - это та вещь, которую поймало бы модульное тестирование. (Я не могу найти эту статью сейчас, но если кто-то знает, какую я имею в виду, не стесняйтесь редактировать ссылку здесь.)
И он написал, что это может быть больше проблем, чем стоит, особенно когда ваш проект превращается в очень большой проект с множеством модульных тестов, а затем вы что-то меняете (намеренно) и в итоге получаете очень большое количество неработающих модульных тестов. Он специально использует проблемы, которые может вызвать модульное тестирование, в качестве причины, по которой он не добавил его в качестве 13-го пункта к тесту Джоэла, даже когда люди предполагают, что он должен.
источник
Джоэл Спольски сам ответил на этот вопрос еще в 2009 году :
источник
Никто, кроме Джоэла, не мог ответить на это наверняка. Но мы можем попробовать некоторые причины / наблюдения.
Прежде всего, тестирование не отсутствует в тесте Джоэла
Во-вторых, вся идея теста Джоэла (насколько я понимаю) состоит в том, чтобы иметь быстрые вопросы, да-нет. "Ты делаешь TDD?" не совсем подходит (ответ может быть: «некоторые из нас», «для этой части кода» или «мы проводим модульный тест»).
В-третьих, я думаю, что никто не сказал, что (даже Джоэл), что те моменты, когда «единственное стоит времени» (кстати, «ты программируешь», не на нем), просто, что это хорошие быстрые вопросы, которые нужно задать, когда придет в контакте с командой разработчиков программного обеспечения, будь то будущий член команды или даже клиент, - вот список, который я дал некоторым нетехническим людям вокруг меня, которые искали подсказки о том, насколько хорош / плох их собственный ИТ-отдел. Это не все, но это действительно плохо бить за три минуты.
источник