Подходы к написанию автоматизированных тестов 

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

Однако у нас есть другой подход, когда мы пишем тесты до того, как напишем код. Это известно как разработка через тестирование (TDD) . Это означает, что разработка приложения определяется тестами, которые мы пишем. Поэтому мы не можем добавить функциональность или возможности без предварительного написания теста.

Основной посыл TDD (Test-Driven Development — разработка через тестирование) в терминах “красной”, “синей” (в некоторых источниках используется термин “зелёная”) и “зелёной” зон описывает итеративный цикл разработки:

  • Красная зона (Red): На этом этапе вы пишете тест, который должен упасть (fail). Это тест на функциональность, которую вы еще не реализовали. Важно, что тест должен быть максимально конкретным и проверять один конкретный аспект функциональности. Красная зона сигнализирует о том, что вы начинаете с чёткого определения того, что нужно сделать.

  • Синяя/Зеленая зона (Blue/Green): Здесь вы пишете минимально необходимый код для того, чтобы пройти написанный тест. Важно писать только тот код, который требуется для прохождения теста, избегая преждевременной оптимизации или добавления лишнего функционала. Цель — сделать тест “зеленым” (пройденным). Некоторые методологии TDD разделяют этот шаг на два: “Blue” - планирование и “Green” - написание кода, минимально необходимого для прохождения теста.

  • Зеленая зона (Green): Тест проходит! Это означает, что вы успешно реализовали необходимую функциональность. Теперь можно перейти к рефакторингу.

  • Рефакторинг: После того, как тест пройден, вы можете улучшить код, не меняя его функциональность. Это может включать в себя улучшение читаемости, уменьшение дублирования кода и повышение эффективности. Важно, что после рефакторинга тест должен продолжать проходить.

Цикл повторяется: После рефакторинга вы переходите обратно к красной зоне, пишите новый тест для следующей части функциональности, и цикл повторяется.

В итоге, основной посыл: TDD — это не просто написание тестов после написания кода. Это итеративный процесс, где тесты пишутся перед кодом, заставляя разработчика чётко определить требования к функциональности и писать чистый, хорошо протестированный код. “Красная”, “синяя/зелёная” и “зелёная” зоны — это просто удобная метафора, описывающая этот итеративный цикл.

Появление разработки через тестирование 

Термин «разработка через тестирование» был введен Кентом Беком в 2002 году в его книге «Разработка через тестирование на примере». С тех пор этот термин приобрел популярность в сфере веб-разработки. Несколько крупных корпораций используют эту технику из-за ее многочисленных преимуществ.

Однако внедрение TDD не происходит само собой. Разработчик должен приложить сознательные усилия. Это связано с тем, что большинство разработчиков предпочитают сначала кодировать функциональность приложения, прежде чем тестировать его. Таким образом, мы можем сказать, что TDD похожа на дисциплину, которую нужно культивировать.

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰