TDD – Разработка на основе тестирования

Среди подходов к созданию программного обеспечения есть Разработка на основе тестирования. Как уже понятно из названия, главная роль там – за тестированием. Давайте ознакомимся с ним.

Тестировщик » QA-блог » Модели » TDD – Разработка на основе тестирования

Роль тестирования в разработке на основе тестов

Разработка на основе тестирования (англ. Test-driven development, TDD) – это модель создания программного обеспечения, в котором перед кодингом сначала создают тесты для проверки кода. 

Тесты формируют путем преобразования заявленных бизнес-требований к IT-продукту. При TDD программное обеспечение многократно тестируется по мере доработки по модулям.

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

Подход TDD был изложен в книге Кента Бека «Test Driven Development: By Example» (Разработка через тестирование: на примере»). Автор считает, что Разработка на основе тестирования мотивирует разработчиков к простоте дизайна.

В самом начале TDD была тесно связана с подходом Экстремального программирования, но затем оформилась в отдельную методологию (вследствие главенствующей в TDD роли тестирования). 

Модель TDD включает в себя три главных шага:

  1. Разработка тестов для функции (модуля).
  2. Написание кода для функции (модуля), чтобы тест был пройден.
  3. Рефакторинг (улучшение) кода.
на изображение разработка на основе тестирования (TDD)

Третий шаг очень важен – код должен улучшаться, даже если все тесты на данном этапе пройдены успешно. Без рефакторинга тесты с каждым разом будут объемнее и сложнее.

Разработка на основе тестирования – простыми словами

Допустим, нам заказали программу. Одно из ее требований – на запрос «Тук-тук» отвечать: «Кто там?». Начинаем работать по TDD:

  1. Создаем основной тест вида «Запрос А – Ответ Б»;
  2. Дополняем его проверками на ограничения по длине запроса, алфавит и т.п. – получается целый комплект тестов;
  3. Программируем модуль под данное требование (пишем код);
  4. Проверяем модуль разработанными до этого тестами.
  5. Если тест пройден – улучшаем код и снова проверяем.

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

Особенности тестирования в TDD

  • Главенствующую роль играют модульные тесты;
  • Распределение ресурсов по уровням тестирования – обычно соответствует Пирамиде тестирования;
  • Тест-кейсы обязательно включают предусловия и постусловия, в т.ч. интеграционные тесты должны возвращать все модули к первоначальному состоянию, даже если тест не сработал;
  • За счет наследования тестов по модулям – облегчается приемочное тестирование.

Плюсы и минусы

Плюсы
  • Разработчики с помощью тестов лучше представляют, как именно должны трактоваться те или иные бизнес-требования к ПО.
  • Тесты по модулям предвосхищают ошибки разработчиков. Поэтому время, затрачиваемое на отладку, значительно снижается.
  • Данный подход позволяет делать рефакторинг кода без риска его ухудшить. Если тесты пройдены – то значит, уже есть работающая версия кода. В случае неудачного факторинга – можно будет просто откатиться к ней.
  • То, что каждый код будет проверяться батареей тестов – в некоторой степени дисциплинирует разработчиков, повышается качество их кода.
Минусы
  • Требуется большое количество тестов и, соответственно, ресурсов на их написание.
  • Если разработчики плохо умеют писать тесты (а это не редкость), то возникает большой риск, что придется заниматься больше отладкой тестов, чем кода.
  • Не для всех видов ПО можно написать легко автоматизируемые тесты. Например, проверку юзабилити для встроенных графических редакторов изображений.

Резюме

Разработка на основе тестирования – подход в IT-проектах, в котором сначала делают тесты, и только потом – код. Данный подход требует хорошего знания основ QA (Quality Assurance). Основную роль в нем играют модульные тесты.

на изображение автор Михаил Кулешов

Автор Михаил Кулешов

Михаил, профессиональный партнерский маркетолог, является основателем компании South Media OÜ, которая была создана в 2018 году и базируется в Таллинне. С 2016 года Михаил уехал из Финляндии и жил как настоящий «цифровой кочевник» в IT-индустрии, путешествуя по миру только с ноутбуком. Михаил работает и пишет статьи, связанные с IT-индустрией.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *