Разработка через тестирование (tdd и bdd)
DESCRIPTION
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение. Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".TRANSCRIPT
через тестирование
Presented by Вячеслав Лялькин
Excellence in Software Engineering
Уровни тестирования
Unit Tests
Integration Tests
Acceptance Tests
GUI Tests
Manual Tests
Test-driven development
* Test-Driven Development
* Test first
Red-Green-Refactor
RED
GREENREFACTOR
RED
RED
GREENREFACTOR
GREEN
RED
GREENREFACTOR
REFACTOR
КАЧЕСТВО ТЕСТОВ:
(1) 100% покрытие тестами;
(2) модульные тесты;
(3) изменения без страха.
КАЧЕСТВО КОДА:(1) модульный, гибкий и расширяемый код;
(2) всегда работающий код;
(3) меньшее время отладки;
(4) поощряет рефакторинг.
*
KEEP CALM,THINKAND
BE CAREFUL!
(1) высокий порог вхождения;
(2) время при integration-тестировании;
(3) ошибочный тест = ошибочный код;
(4) поддержка большого количества тестов.
НЕДОСТАТКИ TDD:
When TDD «smells»
Пропускается стадия неработающего теста;
Меряется «покрытие кода»;
Отсутствие «зеленого» теста последние 10 минут;
Много времени тратится на рефакторинг;
Игнорируются слишком простые/сложные сценарии.
FAILS
Behavior-drivendevelopment
BDD
• Behavior-Driven Development;
• ответвление TDD
• связь кода с требованиями;
• фокус не на тестах, а на поведении;
• запись требований с помощью обычных фраз.
Concordion
Инструменты BDD
BDD – как это работает
1 Описание поведения заказчиком;
Исходное состояние
Событие
Проверка реакции
Реализация функционала;2
1 Описание поведения заказчиком;
BDD – как это работает
Реализация функционала;2
1 Описание поведения заказчиком;
Проверка соответствия требованиям
(тест прошел/не прошел).3
BDD – как это работает
ПРИМЕР
add_product.feature:
AddProductStepdefs.java:
• Web-application
• Continuous Integration
• Acceptance-tests
• TestNG
• Cucumber
• Selenium
• Smoke/full-tests
ПРИМЕР ИНФРАСТРУКТУРЫ
THANKS!