Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave

2,855 views
2,652 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,855
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave

  1. 1. Эволюция к Behavior Driven Developmentна примере популярного фреймворка JBehave Александр Дергачев 10 February 2012
  2. 2. Содержание• Концепция Behavior Driven Development: – Test Driven Development – Domain Driven Design – User Stories• Использование BDD c JBehave: – Написание и реализация сценариев на Java – Интеграция с Maven и различными IDE – Конфигурация Integration тестов – Генерация отчетов в HTML2 www.ExigenServices.com
  3. 3. Концепция Test Driven Development 1) Cначала пишется тест 3) Рефакторинг 2) Код, чтобы прошел тест3 www.ExigenServices.com
  4. 4. Test Driven Development на практике• Средства предварительной отладки и проверки функциональности повышают скорость разработки и качество кода• Некоторые разработчики не могут преодолеть концептуальную пропасть, с которой у них ассоциируется слово тестирование• Опыт показывает, что невозможно проверить то, что еще не существует4 www.ExigenServices.com
  5. 5. Функциональность первичнаПростой пример:• Что такое online P2P перевод денег?• Клиент должен иметь возможность перевести указанную сумму со своего счета на другой.Возможный сценарий:• Что если у клиента не достаточно средств?• Система должна выдать сообщение об ошибки «…» и баланс не должен измениться.5 www.ExigenServices.com
  6. 6. Знакомство с Behavior Driven Development«BDD может легко и эффективно превратить требования внаписанный, протестированный, готовый к релизу код, в то времякак требования достаточно четкие, чтобы каждый понимал чтопроисходит.»Метод разработки основанный на User Stories, Test DrivenDevelopment, Domain Driven Design и Continuous Integration.6 www.ExigenServices.com
  7. 7. Процесс Behavior Driven Development7 www.ExigenServices.com
  8. 8. Концепция Behavior Driven Development 1) Рассматриваем один сценарии Given user has an 2) Описываем available balance of $10 N-ый шаг 3) Код шага не успешен user. setBalance(value); 5) Рефакторинг 4) Код шага успешен 7) Рефакторинг 6) Переходим jbehave, к след. шагу easyb8 www.ExigenServices.com
  9. 9. Использование BDD c• JBehave – это популярный Behavior Driven Development фреймворк для платформы Java, основанная на принципах xUnit• Автоматизирует тестирование User Stories: – Пошаговый разбор сценариев в разных форматах – Синхронное и асинхронное выполнение сценариев• Расширяет Continuous Integration• Предоставляет подробные отчеты в HTML9 www.ExigenServices.com
  10. 10. Написание сценариев дляScenario: Payer doesnt have enough fundsGiven Alex is logged into account page And has an available balance of $90When he enters in the amount field $90.01 And enters in the recipient field ad@java.com And clicks on the submit button in the formThen Alex should see error message «…» And available balance remains unchanged10 www.ExigenServices.com
  11. 11. Реализация сценариев с@Given("has an available balance of $amount")public void aBalance(String amount) { user.setBalance(amount);}@When("clicks on the $name button in the form")public void clickButton(String name) { selenium.click(name);}@Then("$user should see error message $text")public void errorMsg(String user, String text) { Assert.fail("not implemented");}11 www.ExigenServices.com
  12. 12. Конфигурацияpublic class P2PSendMoney extends JUnitStory { @Given("...") { ... } @Override public Configuration configuration() { return new MostUsefulConfiguration() .useStoryReporterBuilder( new StoryReporterBuilder() .withFormats(CONSOLE, HTML, XML)); } }}12 www.ExigenServices.com
  13. 13. Инструментальное окружение Test Runner Шаги Сценарии jUnit / Spring / TestNG (Given, When…) (User Stories) Конфигурация Интеграция Selenium Application (Embedder) (Maven, Ant) (Web testing) code13 www.ExigenServices.com
  14. 14. Интеграция14 www.ExigenServices.com
  15. 15. Integration тесты c<groupId>org.apache.maven.plugins</groupId><artifactId>maven-failsafe-plugin</artifactId><executions> <execution> <goals> <goal>integration-test</goal> </goals> </execution></executions><configuration> <includes> <include>**/integration/*.java</include> </includes></configuration>15 www.ExigenServices.com
  16. 16. Integration тесты c<groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><configuration> <fork>true</fork></configuration><executions> <execution> <id>start-tomcat</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> </execution></executions>16 www.ExigenServices.com
  17. 17. Генерация отчетов в Stories Scenarios Steps … Duration View Name Total Successful Failed Total … (hh:mm:ss.SSS) stats … 6 2 4 25 (00:00:05.132) html xml P2P stats Send 5 5 0 35 (00:00:15.262) html Money xml stats Total 11 7 4 60 (00:00:20.394) html xml17 www.ExigenServices.com
  18. 18. Генерация отчетов в P2P Send Moneycom/forceassociates/onpay_webtester/stories/P2PSendMoney.story.txtScenario: Person registers for OnPay Examples<…>Scenario: Payer doesn’t have enough funds ExamplesGiven <name> is logged into account page name balance amount mailAnd has an available balance of <balance> Alex $90 $90.01 ad@...When he enters in the amount field <amount> Bob $0 $10 hp@...<…> Jack $0.01 $0.02 go@...18 www.ExigenServices.com
  19. 19. Ресурсы• В поисках качества кода: Знакомство с Behavior Driven Development, Эндрю Гловер, IBM Developer Works• Behavior Driven Development, Gorden Force, The San Francisco Java User Group• JBehave Official Website, http://jbehave.org/index.html• What’s in a Story?, Dan North, http://dannorth.net/whats-in-a-story• Behavior Driven Development Official Website, http://behaviour-driven.org19 www.ExigenServices.com
  20. 20. Спасибо за внимание!Given that you have heard the presentation And discovered that BDD is really funWhen you are thinking about testing strategiesThen you should give BDD a chance! Questions? mailto: Aleksander.Dergachev@exigenservices.com20 www.ExigenServices.com

×