Що таке TDD - все про test driven development
Розробка сучасного програмного забезпечення, що задовольняє всім вимогам до функціональності та повноти програмного коду, є складним і нетривіальним завданням. Для її вирішення використовується безліч підходів до написання та налагодження програм, одним із яких є метод TDD. Розглянемо особливості даної технології та покажемо переваги та недоліки її використання перед традиційними методами розробки програм.
Розробка програм за допомогою TDD підходу
З'ясуємо, що таке TDD. Test driven development - це один із сучасних методів створення програм, при якому процес розробки складається з ряду циклів, що повторюються, при виконанні яких відбувається поступове налагодження і поліпшення програмного коду окремого блоку або модуля. Відмінною особливістю цього підходу від традиційних методів програмування є попередня розробка тестів до створення програмного коду програми.
На зображенні знизу представлений процес розробки програм методом TDD як блок-схеми.
Розглянемо призначення кожного із блоків схеми.
Написання тестів
Тести є програмними одиницями, що реалізують перевірку відповідності коду програми вимогам до функціональності, сформульованим у технічному завданні (ТЗ). Тести доцільно створювати на основі ТЗ, створеного замовником проекту. В такому разі їх перевірка на здійсненність може здійснюватися за замовника. Для створення, а також автоматизації запуску, як правило, використовуються ті ж Фреймворки, що і для створення програм. Тести пишуться для невеликих, найбільш критичних ділянок програми, схильних до частих змін. Метод TDD спочатку розглядався, як найбільш підходящий для таких ділянок, і тому отримав назву «екстремальне програмування».
Перевірка виконання тесту
Коли тест готовий, одразу ж виконується його перевірка на здійсненність. Очевидно, що без готового блоку програми тест ніяк не зможе пройти перевірку. Це означає, що тест попередньо написаний правильно. Якщо ж тест перевірку все-таки проходить, це може означати таке: або він невірний, або дана функціональність вже реалізована в програмі, і тоді він не має сенсу. У такому разі тест відправляється на доопрацювання, тобто цикл замикається.
Написання коду програми
Код, зазвичай, пишеться для реалізації лише однієї функціональності програми за допомогою одного з відомих Фреймворків, який має свої бібліотеки. По суті, метою створення коду є у разі задоволення вимог, встановлених у тесті. Таким чином, мінімізується його розмір та виключається непотрібна надмірність.
Комплексна перевірка
Комплексна перевірка готового коду на відповідність до вимог тестів. На цьому етапі здійснюється запуск тестів для готової ділянки коду програми та виявлення «нестиковки» при їх виконанні. Якщо тести успішно виконуються, код передається на наступний етап обробки – рефакторинг. Якщо ні, код повертається на доопрацювання.
Оптимізація коду програми
Ціль цього етапу – оптимізувати код зсередини, залишивши його «зовнішню» функціональність. Сюди відноситься, зокрема, зменшення надмірності коду до допустимого рівня та інші операції, пов'язані з його оптимізацією. Цей процес прийнято називати рефакторинг коду програми, без якого програма не буде оптимальною. Після виконання оптимізації, процес повторюється знову, тобто, кількість ітерацій буде такою, щоб, зрештою, забезпечити вихід оптимізованого програмного модуля з потрібною функціональністю.
Переваги використання TDD
Серед переваг використання методу TDD для створення програмного забезпечення можна виділити такі:
- Використання тестів знижує кількість помилок у коді, а, отже, зменшується час його налагодження та, зрештою, час розробки програми.
- Помилки виявляються на ранній стадії розробки, що практично виключає їх появу на завершальній стадії проекту або готовому продукті. Це може суттєво вплинути на вартість розробки програми.
- Тести дозволяють проводити рефакторинг коду, за винятком його пошкодження.
- Застосування методики сприяє покращенню основних характеристик коду – модульності, гнучкості та розширюваності.
- Застосування автоматизованих тестів сприяє покриттю всіх шляхів виконання коду, що забезпечує його повноту та достатність.
- Тести можуть стати гарною альтернативою документації до програмного забезпечення, яка, як відомо, часто застаріває.
Недоліки використання методу TDD
Як і будь-які методи або підходи до програмування, метод, що розглядається, також має недоліки. Виділимо деякі з них:
- Обмеженість застосування. Метод не підходить для використання в деяких областях, наприклад, у системах безпеки даних та для опису процесів. Це пов'язано з присутністю деяких додаткових некерованих факторів, наприклад, людського фактора для систем безпеки.
- Потрібен додатковий час на розробку та підтримку тестів. Тому перед застосуванням методики необхідно обґрунтувати та довести доцільність та ефективність її використання у конкретній ситуації.
- Збільшуються витрати на створення програм.