Автор оригинала: Dave Schinkel.
TDD …?
Прежде чем двигаться дальше, остановитесь и скажите себе, что на этот раз вы будете открыты, чтобы узнать о нем, даже если вы не планируете применить его. То, что вы не будете делать предположения об этом, не понимая его на высоком уровне.
Подробнее об этом на пользу вашей команды, коллеги и бизнеса, чтобы вы могли понять обе стороны ( Test Dranced Дизайн Devs vs. Тест после Devs или Тест Нет Devs ). Разница важно понять Отказ Если вы являетесь руководителем проекта, VP или CTO, вам нужно понять его на высоком уровне.
Это не уходит Отказ И это сделано на основе на разработчике, основанном на Индивидуальный выбор Отказ
Тот факт, что тесты проверяются не должны удивлять или беспокоить вас Отказ У вас нет права, чтобы просмотреть первые Devs не писать тесты. Начнем с тестов, но по причинам, о которых вы не можете знать. И именно поэтому вы должны читать этот блог.
О чем нужно беспокоиться о том, что мы пишем тесты, но что Кодовая база, которая продолжает становиться огромным беспорядком, замедляющим Все вниз … или Разработчики, которые тратите время вручную Отладка для Часы или найти больше ошибок, чем любая команда. Мы знаем, что это происходит много.
А для тех, кто проповедует «тест позже», не отрицаю его. Тем, кто думает, что они собираются вернуться, чтобы добавить тесты позже, вы знаете Это никогда не бывает Отказ И это неудачная стратегия в первую очередь, мне все равно, что у вас есть сроки.
Существует целые команды, которые практикуют дисциплину TDD Daily Отказ Усыновление TDD растет, и это здорово. Иногда команды не TDD, а Это тоже хорошо! Отказ У некоторых команд есть сочетание разработчиков, некоторые TDD некоторые нет, а это тоже хорошо Отказ Но знайте, что разработчики, которые это практикуют, и привыкли к нему перестать делать это, и они делают это ежедневно весь день.
О, я знаю, что такое TDD …
Уверены ли вы? Вы должны быть уверены Отказ Я слышал, так много говорят мне это, и это очевидно, что не имеет подсказки. Это может быть не то, что Вы думаете Это. Там больше, чем просто тонкое значение.
TDD нет
Это не:
- Теория. Это никогда не было теорией
- А «Иногда» тем, кто это практикует это ежедневно
- О Приявка на тесты , Есть ли тесты или Когда иметь тесты
- Только о Кодовое покрытие или « приятно иметь » или что-то, что вы диктуете с%, чтобы определить, писать ли их
- тонкая или случайная концепция
Было доказано работы в 1996 году и продолжает работать намного больше сегодня:
Кент Бек, Мартин Фаулер, Рон Джеффрис и другие в Chrysler изобрели техники, которые стали известны как Экстремальное программирование Для того, чтобы помочь повернуть проект в то время, когда они были Привез в Chrsyler для создания новой системы заработной платы система.
Мы узнали с тех пор, как Экстремальное программирование Это вообще не очень, и большинство его практики все еще распространяются сегодня. Один из них TDD.
Подробнее о системе заработной платы Chrysler
Непонимания TDD вызывает ангст разработчика
К сожалению, многие разработки, менеджеры проекта, VPS и т. Д. Не смотрят на него и инвестируют некоторое время чтения о. Чтобы сделать вопросы хуже, самое название приводит к неправильному толку, недоразумениям и трению связи между теми, кто практикует и полагается на нее, и те, кто не делает.
«Нет тестов на этот раз правило»
Важно, чтобы менеджеры проекта, разработчики и бизнес Понять, что такое TDD, прежде чем случайно проскользнуть вниз по тестам правила Как плоский мандат по всей команде, которая не приемлема.
Да, я сказал это, это не приемлемо, чтобы мандатировать это для каждый Разработчик в команде. Если некоторые разработчики выбирают не писать тесты, это их прерогатива. Если некоторые хотят написать console.logs по всему месту и тратить время отладки, что это их прерогатива. Точно так же, если другие практикуют TDD, это то, что они делают. Точно так же обязательное TDD каждому разработчику в команде тоже не в порядке. Точка в том, что мы все «получаем вещи», используя смесь техник и инструментов. TDD является одним из них.
Когда разработчик рассказывает, что бросает тесты, потому что кто-то еще чувствует себя только «особенностью» … Кто бы ни занимал это команду, работает в вакууме и неискивается.
Они не понимают, что для Разработчик практикует TDD Это даже не удаленно в том, чтобы принять участие в тестах. Это не выбор. Это гораздо больше, чем вы найдете ниже для этого разработчика.
Они не понимают TDD теперь Maintream И много разработок, которые сейчас полагаются на него.
Это становится настолько естественным для того, чтобы кодировать этот путь для тестирования, управляемого разрабатывателями, что мысль сказала не писать тесты просто не дживиют. Это не должно быть грубым, или нецированным. Это что для нас это незаменимый инструмент, который мы не готовы отпустить, потому что это принципиально Как Мы кодируем реализацию довольно буквально.
TDD’ERS не думает о тестировании одинаково, и, что более важно, мы не думаем о процессе проектирования кода так же. И Это должно быть хорошо Отказ
Должно быть в порядке, что некоторые разработчики на данной команде TDD и некоторые нет. Это не должно иметь значения. И Мы должны быть в состоянии сделать это без страха возмездия или страх, что мы не двигаемся на свете скорости , потому что разработчик B все есть. Мы двигаемся на приличный Скорость, но мы не разработчики, которые относятся к нашей профессии как чистые числа, выбивая как можно больше из парка, как мы можем в день. Если вы просматриваете эту профессию, основываясь только на скорости на одного разработчика, которые собираются на вас спутать. И вы собираетесь сгореть своих разработчиков.
Разработчики должны быть в состоянии работать на Устойчивый темп Отказ
Это профессия, а не пот магазин
Это не о тестировании, это тестовый дизайн
Это незаменимый Инструмент дизайна Для многих разработчиков. Это образ жизни Отказ Я уверен, что вы слышали это раньше. И вы собираетесь услышать это много раз.
Те, кто практикуют это как дисциплина, чувствуют, что это было бы лучше, если бы оно изначально называлось Тестовый Дизайн который описывает это точно и ясно. Важно для новичков к тому, что этот термин осознает это.
Поймите, что для тех, кто это практикует, что на сегодняшний день, что …| Это ядро того, как мы в ежедневном кондиционируем:
Это Как Мы Запустите код Как мы работаем:
- Мы пишем тесты на реализовать & Запустите код ! Просто как тот. Быстро, легко
- Мы не начинаем с «Хорошо, давайте откроем браузер» каждый время
- Мы не думаем «Эй, давайте немедленно просто добавить Console.log Line в нашем коде, чтобы увидеть, работает ли это» (Угадай, что, что требует времени! Это больно. Мы этого не делаем. Если это работает для вас, делай то, что вы будете уважете, пока вы уважаете, что мы делаем это по-другому)
- вместо этого мы бежим все Наши тесты
- Мы делаем это Каждые несколько минут Это часть нашего потока. Итак, пока вы пишете Console.logs все время, и открываете браузер каждые несколько минут. Мы проводим тесты, постоянно, все время. Написание или запущенные тесты позже не подходит, как мы код
- К опытный TDD’ists, что замедляет нас, не пишет тесты , это существующая грязная кодовая база (кроличьи дырки) или сложный код, который любой разработчик будет замедлен
- давление для доставки нет диктовать, используем ли мы его или нет
- В отличие от теста после, Мы редко отладки ; TDD огромное время застройки времени. Это совершенно другой опыт, который вы не поймете, пока Вы на самом деле делаете это
- Это Как Мы Руководство наше Дизайн Как мы кодируем функцию
- Это Как Мы Определите «Готово» Как мы кодируем функцию
- Это Как Мы Может поворачивать быстро к Новые изменения кода
- Это Как Мы Доказать код «Работы» за требования
- его Очень быстрый цикл и дает нам быстрее, более частая петля обратной связи
- Это Как Мы знать, когда мы что-то сделайте Во время Многие изменения кода мы делаем в течение данного дня
- Это Как мы знаем, когда наше Код это быть слишком связанным Или что Дизайн воняет Отказ Мы нашли это немного, Как Мы кодируем быстрые циклы (не позже)
Это силы нам до Держитесь худыми Как мы идем Потому что мы только записываем достаточно кода, чтобы пройти тесты/закончить функцию
- Это Ягни все время
- Мы не прекращаем идеальный код, это не цель Отказ Но И это большое, но: Мы уверены, что получают давление, чтобы сохранить его просто все время, так как мы повторяемся через быстрые циклы TDD. Потому что наши тесты даст нам знать, когда мы не уделяем вещи. Опять же, пока вы не испытали этого, вы не поймете это
Это то, что TDD дает разработчику, который практикует его ежедневно, все время. Отказ Теперь вы знаете, почему мы не просто «бросаем».
Побочные эффекты:
- Высокое покрытие кода
- Система документов
Синий шаг в цикле TDD => Дизайн Хотя мы делаем какой-то уровень дизайна во всех этапах цикла TDD, синий этап в TDD является наиболее важным. И тем, кто не знает, что TDD вызывает плохой дизайн, пришло время прочитать и попробовать TDD, прежде чем делать такие претензии.
Красный и зеленый в цикле о том, чтобы получить код реализован/работает быстро насколько это возможно. Не идеально”. Это может даже быть ужасно. Мы заботимся о том, чтобы получить что-то работать, которое обеспечивает значение как можно скорее
Это на синем шаге, хотя, что мы действительно начнем использовать наш Бог, учитывающие мозги и годы опыта для разработки и улучшения, применяя следующее:
- СУХОЙ
- Yagni.
- ТВЕРДЫЙ
- Шаблоны
- Чистый код практики (самостоятельно описывающий код над кодом комментариев и т. Д.)
Мы Бесплатно для дизайна, как мы хотим Отказ
TDD
- делает не дизайн для нас
- не вызывает плохой дизайн
Это просто, что TDD будет Расскажите, когда этот дизайн мы ушли с начинающимися сосать Поскольку следующий тест будет сложнее кодировать, если дизайн связан или имеет слишком много зависимостей. Это говорит нам, когда наш код воняет. Мы часто полагаемся на эту обратную связь; Это помогает нам по пути, тонко намекаю на вас, когда ваш код должен быть развязан, как вы идете.
Мы не полагаемся на обещания вернуться, чтобы выполнить большие рефакторинги позже ; Мы видим, что в качестве неудачной стратегии. Когда менеджеры проекта обещают добавить истории, чтобы вернуться позже, нам не имеет смысла делать это, потому что мы делаем это постоянно все время в небольших циклах.
Это не замедляет нас, как только нам комфортно, делая это Отказ
Что замедляет нас, это плохой код , грязные, связанные системы Особенно, особенно когда новый для большой кодовой базы.
Настраивать
Требуется немного времени, чтобы настроить свою инфраструктуру тестирования, если еще не установлена должным образом, и немного времени, чтобы узнать кодовую базу (если не полностью Greenfield) до того, как тонна тестов начнет волшебным образом «появиться» в верхней части кодовой базы еще не покрывается тестами.
Любой может написать тесты , Но писать Хорошо Тесты поставляются с Опыт и критично, чтобы иметь возможность извлечь выгоду из него.
Занимая выходные или несколько дней, чтобы сначала посмотреть на наследие кодовую базу, прежде чем решить, какого рода и где писать первые тесты не должен быть сюрпризом Отказ
Спринт 0 Занимает неделю, чтобы настроить инфраструктуру, не должен быть сюрпризом Отказ Странные вещи случаются во время настройки в зависимости от языка, инструментов и т. Д., Что клиент или команда уже используют. Но..ух это установлено, вещи Будет ли Начните поток. Отказ Это называется Спринт 0 Отказ И Sprint 0 может не просто быть одной недели, это может быть два. Просто попросите команды на Wedotdd.com Если это дело со своими клиентами или их командой. Скорее всего, они будут вам одинаковы.
Они продолжают проповедовать об этом !!
Есть причина, причина, по которой мы думаем, что мы все увлечены.
Мы знаем, мы знаем … мы увлечены этим, потому что Мы полагаемся на это … и Мы не можем изменить этот факт Отказ Это Дисциплина , а Инструмент , а образ жизни Что, как только вы зацепитесь и получаете все это, вы никогда не оглядываетесь назад или не хотите оглянуться назад.
У врачей есть дисциплины, которые они нашли, чтобы работать на себя со временем Отказ Они бросят бы их только из-за давления? Нет. Программное обеспечение не отличается и не должно относиться к каким-либо различным. Есть и будут дисциплинами, мы выбираем индивидуально, чтобы придерживаться или нет (TDD, сухие, ягни, твердые, шаблоны, чистый код, все остальное).
Помните это: Мы не говорим Вы придется применить это , но что Мы Уже делать. И … Эй, кстати, вам может понравиться. Если мы говорим вам Должен (Мандат), Тогда это проблема. Если мы говорим тебе Должен Мы просто хотели поделиться с опытом, который у нас был с ним.
Это не религия, это не культ, это просто программное обеспечение Дисциплина и а Персональный рабочий процесс Отказ
Мы стараемся не говорить об этом слишком много. Иногда нам нужно замолчать об этом. Если вы хотите перестать услышать об этом, просто подтолкните нам немного (но будь хорошим!). И прости нам наши ежедневные грехи. Отказ Никто не пострадал.
Точно так же мы должны быть готовы простить твои грехи для затягивания в вашем священном Debug Goiced Development Отказ
Для этой монеты есть две стороны. Мы не переворачиваем монету и говорю, что иногда х разработчика разрешено TDD или нет; Нам разрешено выбирать любую сторону этой монеты, которую мы предпочитаем, а потом пойти дерьмо сделать.
Это личный выбор, следует ли использовать технику. Мы не и не будем задавать разрешение на практику
Мы не ожидали прекратить использовать его через мандат. Мы понимаем, что другие в команде могут не быть готовы писать тесты и не могут писать тесты или даже хотите использовать эту технику Отказ И Мы в порядке с этим Отказ Все в другом месте Отказ На оборотной стороне, это то, как мы код; Будь хорошо с этим тоже.
В конце концов его Инструмент для разработчика , со вторичными побочными эффектами, которые естественным образом приносят пользу команды и бизнесу в результате.
Когда мы говорим вам, что мы пишем тесты все время, понять, кто вы нанимаете, и понимаете, что это дисциплина, которую мы не будем в списке.
Это все еще о команде, о всех в команде
Я знаю, я сказал Мы много здесь. Но мы все знаем, что все разработчики в конечном итоге команда Отказ Мы один Отказ Мы можем использовать различные методы, чтобы добраться туда индивидуально Но что мы выровнены с той же целью: Для доставки рабочего программного обеспечения.
Мы все о ремесленнике программного обеспечения … вместе
Мы здесь, чтобы помочь друг другу, и понимать различия в эмбриотере, предпочтении, толерантности, быть включено и разрешить автономию среди команды, но это Индивидуальные инструменты/практики Чтобы добраться туда, может отличаться Отказ