Upload
vyacheslav-lyalkin
View
1.455
Download
1
Embed Size (px)
DESCRIPTION
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение. Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
Citation preview
через тестирование
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!