ДЕНЬ 3! Я узнал много вещей, которые поначалу казались странными, но ничто не сравнится с разработкой через тестирование (TDD). TDD — это процесс разработки программного обеспечения, основанный на повторении очень короткого цикла разработки: требования превращаются в очень конкретные тестовые примеры, затем программное обеспечение улучшается только для того, чтобы пройти новые тесты. Обычное модульное тестирование в основном означает, что вы пишете некоторый код для тестирования кода приложения, которое вы создаете, но TDD идет еще дальше. TDD имеет те же элементы, но переворачивает процесс. На самом деле вам нужно сначала написать тесты, прежде чем писать код. Это странно, я знаю! Для меня это было похоже на шаг назад.

Идея TDD поначалу многим кажется безумной, в том числе и мне, но если вы успокоитесь, сделаете глубокий вдох, то начнете понимать множество его преимуществ. Итак, как можно протестировать несуществующий код? тест не провалится? Да, это возможно, и да, это не удастся, и это фактически соответствует идее TDD. При первом запуске теста он должен завершиться ошибкой или даже не скомпилироваться в зависимости от используемого языка, и мы хотим, чтобы это произошло. Это основное различие между TDD и обычным модульным тестированием. Итак, снова мы сначала пишем неудачный тест, а затем пишем код, который проходит только тест и больше ничего не делает.

Многие люди могут задаться вопросом, а почему это хорошо? в чем преимущество? Возьмем, к примеру, мы пишем код или разрабатываем приложение, мы тратим так много времени на обдумывание всех возможных «пробелов», которые не удовлетворяет наш код, класс, функция. Возможно, мы никогда не закроем все пробелы в нашем коде. Разработка через тестирование решает эту проблему, поскольку мы удовлетворяем каждое требование, прежде чем переходить к следующему. Тесты стимулируют наше развитие. Многие разработчики программного обеспечения на самом деле не согласны с TDD, они считают, что это добавляет сложности, поскольку некоторые тестовые случаи труднее вычислить. Некоторые разработчики говорят, что некоторые проекты, которые вы хотели бы развивать по ходу работы, вынуждают вас постоянно переделывать тесты. Все это правильные доводы, но я считаю, что преимущества TDD слишком велики, чтобы их игнорировать. Некоторые утверждают, что TDD можно использовать только для небольших проектов, а не для реальных приложений, и это просто неправда. Кент Бек, автор книги под названием 'Разработка через тестирование: на примере', утверждает, что полностью использовал метод тест-драйва в проекте, который занял 4 года и содержал около 250 000 строк функционального кода и 250 000 строк кода. тестовый код.

Теперь, будучи непредубежденным разработчиком программного обеспечения с мышлением роста :), я могу смело сказать, что начал использовать процесс TDD, и это совсем неплохо. Я еще не использовал его для чего-то слишком сложного, но он мне уже нравится. Для меня самым большим преимуществом является количество сэкономленного времени. Как только ваши тесты пройдены, вы двигаетесь дальше, и вам не нужно постоянно размышлять об ошибках, которые могут быть в вашем коде. Конечно, потребовалось некоторое время, чтобы привыкнуть, но я справляюсь. Также полезно знать, что TDD не заменяет традиционное тестирование, вместо этого он определяет проверенный способ обеспечения эффективного модульного тестирования. Я скажу, что каждый разработчик должен изучить TDD, не зацикливайтесь на этом. от него полностью. Будьте открыты для обучения и разучивания.