Test-Driven Development

 

 tdd-circle-of-life

Что такое Test-Driven Development?

Test-Driven Development — это техника постепенной разработки программного обеспечения, основанная на утверждении, что разработка ПО начинается с написания тестов. TDD практикует выражение желаемого поведения кода через тесты. Автоматизация этого процесса является ключом к TDD. Шаг TDD — это написание теста с последующим написанием кода, удовлетворяющего требованиям теста. Каждое изменение кода приводит к запуску тестов, проверяющих как новый так и старый функционал программного обеспечения.

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

  1. написать провальный тест(состояние кода — красное)
  2. написать код проходящий новый тест и не ломающий старые(другие уже существующие) тесты(состояние кода — зеленое)
  3. отрефакторить код(состояние кода — желтое)
  4. повторить

 

Наличие тестов развязывает разработчику руки, позволяя со спокойной душой заниматься рефакторингом. Разработка через тестирование достаточно успешно применяется во многих областяхязыках программирования, кроме встраиваемого программирования. Тут это техника распространена очень плохо, хотя польза от нее именно в этой области может быть существенна. Понимание этого пришло в процессе разработки и выпуска девайсов, мне как разработчику хотелось бы иметь удобный способ проверки последних изменений, а так же быстрый фидбек о влиянии последних изменений на другие части системы. В данный момент читаю книгу Test Driven Development for Embedded C, надеюсь что скоро ее дочитаю  и сделаю заметку.

dreamway89

dreamway89 wrote 29 posts

Post navigation


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

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>