Разработка через тестирование — это как?
easy

Разработка через тестирование — это как?

Объясняем понятие TDD — Test Driven Development

Сейчас будет статья про взрослые подходы в разработке. Она будет полезна тем, кто хочет работать в крупных компаниях и больших разработческих командах. 

Обычная разработка выглядит так: пишем код → тестируем → смотрим, что не прошло, и исправляем код. И так повторяем до тех пор, пока все тесты не сработают. Разработка через тестирование — это обратный подход. 

Коротко суть TDD (test-driven development)

Разработка через тестирование — это подход, при котором тесты создаются раньше кода. Вот так: 

  1. Перед тем как писать код, программисты задают для себя критерии рабочего кода. Например, какой-то модуль программы при запросе «Прачечная» должен гарантированно отвечать «Министерство культуры».
  2. Программист сразу пишет тест «Запрос такой-то — ожидать ответ такой-то».
  3. Так как требований и кейсов к модулю может быть много, тестов тоже получается целая батарея. 
  4. Дальше пишется код этого модуля.
  5. Как только код готов, включают батарею тестов и смотрят, чтобы они прошли корректно. 
  6. Так повторяется для каждого модуля, каждого маленького закутка, и при каждом обновлении программы прогоняются все тесты. 

Так как тестов много и они пишутся заранее, они сохраняются в проекте по мере разработки. И когда у тебя не один, а 10 модулей, то они тоже все обвешаны тестами. И если ты поменял что-то в 9-м модуле, что сломало 1-й модуль, ты об этом узнаешь благодаря тестам.

Со звёздочкой. Есть ещё разработка через поведение. Там идея такая: мы тестируем не конкретные вводы-выводы данных, а более общие возможности кода — что он должен уметь делать в разных ситуациях. Для этого пользуются специальными скриптовыми языками, которые похожи на обычный язык.

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

Коротко суть TDD (test-driven development)

Плюсы и минусы TDD (Test-driven development)

Плюсы разработки через тестирование:

  • Более высокое качество кода. То, что каждый код проходит через серию тестов — это уже дисциплинирует само по себе.
  • Улучшенная модульность. Каждый компонент тестируется сам по себе, при этом программисты исходят из того, что модули должны уметь работать друг с другом.
  • Быстрое обновление. Код уже оттестирован внутри, поэтому отдельный этап тестирования всего софта целиком занимает меньше времени. Иногда вообще не тестируют, сразу отдают пользователю. 
  • Улучшенное понимание кода. Каждый тест — это одновременно и документация к функциям, а это помогает всем лучше понять, что именно делает программа.

Минусы такого подхода:

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

Разработка через поведение (BDD)

Кроме разработки через тестирование, есть разработка через поведение, или BDD (Behavior-driven development). Здесь мы смотрим не на ввод-вывод данных, а на поведение программы: как с ней взаимодействует пользователь и что она ему выдаёт.

В поведенческом подходе тесты пишут в формате Given-When-Then (Дано — Когда — Тогда), чтобы сразу привязать код к логике работы проекта. Пример теста BDD:

Scenario: Клиент должен быть авторизован, чтобы иметь доступ к личному кабинету

Given пользователь открывает личный кабинет

When пользователь не авторизован

Then отображаем отказ

Что дальше

В следующий раз мы познакомимся с BDD-сценариями поближе: посмотрим на инструменты и попробуем написать сценарий к какому-нибудь нашему проекту.

Корректор:

Ира Михеева

Художник:

Алексей Сухов

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy