Как разработка через тестирование помогает программистам писать лучший код
Если вы увлекаетесь программным обеспечением разработки, вы наверняка слышали о подходе к разработке через тестирование (TDD). Чем он отличается от традиционного процесса разработки? Что делает его особенным? И в чем смысл его использования?
Сегодня мы собираемся изучить основы разработки через тестирование — что такое TDD, как он работает и когда он работает лучше всего.
Начнем с основы.
Что такое TDD?
TDD означает разработка через тестирование. Это методология разработки программного обеспечения, которая предлагает подход к программированию “сначала тестирование, потом код”.
В двух словах, TDD означает, что разработчики пишут автоматический тест перед тем, как написать функцию.
Существуют два других метода тестирования, похожих на разработку через тестирование: разработка, управляемая поведением (BDD). и разработка на основе приемочного тестирования (ATDD).
В BDD тестирование основано на поведении системы, а ATDD фокусируется на удовлетворении функционального поведения системы.
Ключевые отличия:
- TDD фокусируется на реализации функции
- BDD фокусируется на поведении системы
- ATDD фокусируется на точном определении требований.
Подробнее о TDD, BDD и ATDD.
Но вернемся к разработке через тестирование.
< br>Вот как работает TDD. В цикле TDD разработчик пишет модульный тест (разбивает приложение на небольшие части — модули, каждый модуль тестируется отдельно), который определяет функцию, а затем пишет код. который проходит этот тест.
Рабочий процесс выглядит следующим образом:
- Разработчик пишет тест.
- Выполняет тест и видит, что он не прошел.< ли>Пишет код.
- Выполняет тесты еще раз.
- Переписывает код.
- Повторяет до тех пор, пока тест не будет успешным.
- Буго!
В идеальном мире в процессе должны быть задействованы два специалиста — два разработчика или разработчик и QA-инженер. Но это не правило: один и тот же разработчик может писать как модульные тесты, так и программный код в технике TDD.
Как работает TDD?
Давайте рассмотрим пример: мы собираемся подсчитать, сколько еды нам нужно приготовить для нашей собаки.
Нам нужно создать простую форму, в которую мы вводим возраст и вес собаки и рассчитываем, сколько еды собака должна съедать в день.
Давайте подойдем к этой задаче с помощью техники TDD:
- Напишите тест, проверяющий, что функция getDogFood() возвращает нужные значения в различных ситуациях.
- Увидите, что тест не прошел.
- Напишите очень простой код функции, чтобы пройти тест.
- Убедитесь, что тест пройден.
- Подумайте о качестве кода, который мы написали. Мы можем реорганизовать или изменить все, что захотим, поскольку у нас есть тесты, которые укажут на проблему (если есть).
- Повторите шаги.
Далее вам нужно описать это, используя специальный синтаксис (зависит от на используемом вами инструменте).
Идея TDD заключается в том, что перед написанием программного кода вы садитесь и заранее все обдумываете. И это здорово, потому что многие разработчики берутся за написание кода, не задумываясь, что именно этот код должен делать.
Зачем мне нужен TDD?
Подход TDD к разработке приносит довольно несколько преимуществ:
- вы продумываете свой код при планировании функции
- вы находите ошибки в коде намного быстрее (и чем быстрее вы находите ошибку, тем дешевле исправить это)
- помогает наладить связь между членами команды — разработчиком, QA, PM и т. д.
- уменьшает передачу задач между разработчиком и QA
- простой рефакторинг и обслуживание кода
- хорошие тесты работают как документация и помогают новым членам команды быстрее адаптироваться
- лучшее покрытие, которое приводит к уменьшению количества ошибок на 40–80%
В долгосрочной перспективе это может даже снизить затраты на разработку программного обеспечения. Да, разработчикам и QA-инженерам нужно время, чтобы написать эти тесты: разработка функции с помощью автоматизированных тестов может стоить на 20–50 % дороже.
Но в долгосрочной перспективе процесс идет гораздо быстрее — тестируется вся функциональность. автоматически после изменения или модификации.
TDD работает лучше, когда речь идет о создании программного обеспечения со сложными алгоритмами, и если это приложение разработано от начала до конца.
Биография автора: Виталий Купренко — технический писатель Cleveroad. Компания по разработке веб и мобильных приложений в Украине. Ему нравится рассказывать о технических инновациях и цифровых способах развития бизнеса.
TAG: qa