SlideShare a Scribd company logo
1 of 20
Эволюция к 
Behavior Driven Development 
на примере популярного фреймворка 
JBehave 
Александр Дергачев 
30 May 2012
Содержание 
• Концепция Behavior Driven Development: 
– Test Driven Development 
– Domain Driven Design 
– User Stories 
• Использование BDD c JBehave: 
– Написание и реализация сценариев на Java 
– Интеграция с Maven и различными IDE 
– Конфигурация Integration тестов 
– Генерация отчетов в HTML 
2 www.ExigenServices.com
Концепция Test Driven Development 
1) Cначала 
пишется тест 
2) Код, чтобы 
прошел тест 
3) Рефакторинг 
3 www.ExigenServices.com
Test Driven Development на практике 
• Средства предварительной отладки и проверки 
функциональности повышают скорость разработки и качество 
кода 
• Некоторые разработчики не могут преодолеть концептуальную 
пропасть, с которой у них ассоциируется слово тестирование 
• Опыт показывает, что невозможно проверить то, что еще не 
существует 
4 www.ExigenServices.com
Функциональность первична 
Простой пример: 
• Что такое online P2P перевод денег? 
• Клиент должен иметь возможность перевести указанную сумму 
со своего счета на другой. 
Возможный сценарий: 
• Что если у клиента не достаточно средств? 
• Система должна выдать сообщение об ошибки «…» и баланс не 
должен измениться. 
5 www.ExigenServices.com
Знакомство с Behavior Driven Development 
«BDD может легко и эффективно превратить требования в 
написанный, протестированный, готовый к релизу код, в то время 
как требования достаточно четкие, чтобы каждый понимал что 
происходит.» 
Метод разработки основанный на User Stories, Test Driven 
Development, Domain Driven Design и Continuous Integration. 
6 www.ExigenServices.com
Процесс Behavior Driven Development 
7 www.ExigenServices.com
Концепция Behavior Driven Development 
1) Рассматриваем 
один сценарии 
2) Описываем 
8 www.ExigenServices.com 
6) Переходим 
к след. шагу 
7) Рефакторинг 
5) 
Рефакторинг 
4) Код шага 
успешен 
N-ый шаг 
3) Код шага 
не успешен 
jbehave, 
easyb 
Given user has an 
available balance of $10 
user. 
setBalance(value);
Использование BDD c 
• JBehave – это популярный Behavior Driven Development 
фреймворк для платформы Java, основанная на принципах xUnit 
• Автоматизирует тестирование User Stories: 
– Пошаговый разбор сценариев в разных форматах 
– Синхронное и асинхронное выполнение сценариев 
• Расширяет Continuous Integration 
• Предоставляет подробные отчеты в HTML 
9 www.ExigenServices.com
Написание сценариев для 
Scenario: Payer doesn't have enough funds 
Given Alex is logged into account page 
And has an available balance of $90 
When 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 form 
Then Alex should see error message «…» 
And available balance remains unchanged 
10 www.ExigenServices.com
Реализация сценариев с 
@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
Конфигурация 
public class P2PSendMoney extends JUnitStory { 
@Given("...") { ... } 
@Override 
public Configuration configuration() { 
return new MostUsefulConfiguration() 
.useStoryReporterBuilder( 
new StoryReporterBuilder() 
.withFormats(CONSOLE, HTML, XML)); 
} 
} 
} 
12 www.ExigenServices.com
Инструментальное окружение 
Шаги Сценарии 
(Given, When…) 
Test Runner 
jUnit / Spring / TestNG 
Конфигурация 
(User Stories) 
Selenium Application 
Интеграция 
13 www.ExigenServices.com 
code 
(Embedder) (Maven, Ant) 
(Web testing)
Интеграция 
14 www.ExigenServices.com
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
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
Генерация отчетов в 
Stories Scenarios Steps … Duration View 
Name Total Successful Failed Total … (hh:mm:ss.SSS) 
… 6 2 4 25 (00:00:05.132) 
17 www.ExigenServices.com 
stats 
html 
xml 
P2P 
Send 
Money 
5 5 0 35 (00:00:15.262) 
stats 
html 
xml 
Total 11 7 4 60 (00:00:20.394) 
stats 
html 
xml
Генерация отчетов в 
P2P Send Money 
com/forceassociates/onpay_webtester/stories/P2PSendMoney.story.txt 
Scenario: Person registers for OnPay Examples 
<…> 
Scenario: Payer doesn’t have enough funds Examples 
Given <name> is logged into account page 
And has an available balance of <balance> 
When he enters in the amount field <amount> 
<…> 
name balance amount mail 
Alex $90 $90.01 ad@... 
Bob $0 $10 hp@... 
Jack $0.01 $0.02 go@... 
18 www.ExigenServices.com
Ресурсы 
• В поисках качества кода: Знакомство с 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.org 
19 www.ExigenServices.com
Спасибо за внимание! 
Given that you have heard the presentation 
And discovered that BDD is really fun 
When you are thinking about testing strategies 
Then you should give BDD a chance! 
Questions? 
mailto: Aleksander.Dergachev@exigenservices.com 
20 www.ExigenServices.com

More Related Content

What's hot

Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...COMAQA.BY
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисовSQALab
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIautomated-testing.info
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестированияIT61
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NETGoSharp
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooSQALab
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?CEE-SEC(R)
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliverySQALab
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA EngineerYan Alexeenko
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UIVyacheslav Lyalkin
 
Scrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиScrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиIT61
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияSQALab
 

What's hot (20)

Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UI
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UI
 
Scrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиScrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачи
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 

Similar to Behavior Driven Development

Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveReturn on Intelligence
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
Appium для народа
Appium для народаAppium для народа
Appium для народаSQALab
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applicationsscassau
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALab
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советыSQALab
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...MoscowJS
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Yandex
 
Сквозное обеспечение качества и расширяемость платформы TFS
Сквозное обеспечение качества и расширяемость платформы TFSСквозное обеспечение качества и расширяемость платформы TFS
Сквозное обеспечение качества и расширяемость платформы TFSАлександр Шамрай
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesMikalai Alimenkou
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Эволюция экосистем тестирования
Эволюция экосистем тестированияЭволюция экосистем тестирования
Эволюция экосистем тестированияGleb Rybalko
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funAlexandr Khotemskoy
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
 

Similar to Behavior Driven Development (20)

Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applications
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
 
Сквозное обеспечение качества и расширяемость платформы TFS
Сквозное обеспечение качества и расширяемость платформы TFSСквозное обеспечение качества и расширяемость платформы TFS
Сквозное обеспечение качества и расширяемость платформы TFS
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and Thucydides
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Эволюция экосистем тестирования
Эволюция экосистем тестированияЭволюция экосистем тестирования
Эволюция экосистем тестирования
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 

More from Return on Intelligence

Unit Tests? It is Very Simple and Easy!
Unit Tests? It is Very Simple and Easy!Unit Tests? It is Very Simple and Easy!
Unit Tests? It is Very Simple and Easy!Return on Intelligence
 
Introduction to Backbone.js & Marionette.js
Introduction to Backbone.js & Marionette.jsIntroduction to Backbone.js & Marionette.js
Introduction to Backbone.js & Marionette.jsReturn on Intelligence
 
Types of testing and their classification
Types of testing and their classificationTypes of testing and their classification
Types of testing and their classificationReturn on Intelligence
 
Apache cassandra - future without boundaries (part3)
Apache cassandra - future without boundaries (part3)Apache cassandra - future without boundaries (part3)
Apache cassandra - future without boundaries (part3)Return on Intelligence
 
Apache cassandra - future without boundaries (part2)
Apache cassandra - future without boundaries (part2)Apache cassandra - future without boundaries (part2)
Apache cassandra - future without boundaries (part2)Return on Intelligence
 
Apache cassandra - future without boundaries (part1)
Apache cassandra - future without boundaries (part1)Apache cassandra - future without boundaries (part1)
Apache cassandra - future without boundaries (part1)Return on Intelligence
 

More from Return on Intelligence (20)

Clean Code Approach
Clean Code ApproachClean Code Approach
Clean Code Approach
 
Code Coverage
Code CoverageCode Coverage
Code Coverage
 
Effective Communication in english
Effective Communication in englishEffective Communication in english
Effective Communication in english
 
Anti-patterns
Anti-patternsAnti-patterns
Anti-patterns
 
Conflicts Resolving
Conflicts ResolvingConflicts Resolving
Conflicts Resolving
 
Database versioning with liquibase
Database versioning with liquibaseDatabase versioning with liquibase
Database versioning with liquibase
 
Effective Feedback
Effective FeedbackEffective Feedback
Effective Feedback
 
English for Negotiations 2016
English for Negotiations 2016English for Negotiations 2016
English for Negotiations 2016
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Unit Tests? It is Very Simple and Easy!
Unit Tests? It is Very Simple and Easy!Unit Tests? It is Very Simple and Easy!
Unit Tests? It is Very Simple and Easy!
 
Quick Start to AngularJS
Quick Start to AngularJSQuick Start to AngularJS
Quick Start to AngularJS
 
Introduction to Backbone.js & Marionette.js
Introduction to Backbone.js & Marionette.jsIntroduction to Backbone.js & Marionette.js
Introduction to Backbone.js & Marionette.js
 
Types of testing and their classification
Types of testing and their classificationTypes of testing and their classification
Types of testing and their classification
 
Introduction to EJB
Introduction to EJBIntroduction to EJB
Introduction to EJB
 
Enterprise Service Bus
Enterprise Service BusEnterprise Service Bus
Enterprise Service Bus
 
Apache cassandra - future without boundaries (part3)
Apache cassandra - future without boundaries (part3)Apache cassandra - future without boundaries (part3)
Apache cassandra - future without boundaries (part3)
 
Apache cassandra - future without boundaries (part2)
Apache cassandra - future without boundaries (part2)Apache cassandra - future without boundaries (part2)
Apache cassandra - future without boundaries (part2)
 
Apache cassandra - future without boundaries (part1)
Apache cassandra - future without boundaries (part1)Apache cassandra - future without boundaries (part1)
Apache cassandra - future without boundaries (part1)
 
Career development in exigen services
Career development in exigen servicesCareer development in exigen services
Career development in exigen services
 
Introduction to selenium web driver
Introduction to selenium web driverIntroduction to selenium web driver
Introduction to selenium web driver
 

Behavior Driven Development

  • 1. Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave Александр Дергачев 30 May 2012
  • 2. Содержание • Концепция Behavior Driven Development: – Test Driven Development – Domain Driven Design – User Stories • Использование BDD c JBehave: – Написание и реализация сценариев на Java – Интеграция с Maven и различными IDE – Конфигурация Integration тестов – Генерация отчетов в HTML 2 www.ExigenServices.com
  • 3. Концепция Test Driven Development 1) Cначала пишется тест 2) Код, чтобы прошел тест 3) Рефакторинг 3 www.ExigenServices.com
  • 4. Test Driven Development на практике • Средства предварительной отладки и проверки функциональности повышают скорость разработки и качество кода • Некоторые разработчики не могут преодолеть концептуальную пропасть, с которой у них ассоциируется слово тестирование • Опыт показывает, что невозможно проверить то, что еще не существует 4 www.ExigenServices.com
  • 5. Функциональность первична Простой пример: • Что такое online P2P перевод денег? • Клиент должен иметь возможность перевести указанную сумму со своего счета на другой. Возможный сценарий: • Что если у клиента не достаточно средств? • Система должна выдать сообщение об ошибки «…» и баланс не должен измениться. 5 www.ExigenServices.com
  • 6. Знакомство с Behavior Driven Development «BDD может легко и эффективно превратить требования в написанный, протестированный, готовый к релизу код, в то время как требования достаточно четкие, чтобы каждый понимал что происходит.» Метод разработки основанный на User Stories, Test Driven Development, Domain Driven Design и Continuous Integration. 6 www.ExigenServices.com
  • 7. Процесс Behavior Driven Development 7 www.ExigenServices.com
  • 8. Концепция Behavior Driven Development 1) Рассматриваем один сценарии 2) Описываем 8 www.ExigenServices.com 6) Переходим к след. шагу 7) Рефакторинг 5) Рефакторинг 4) Код шага успешен N-ый шаг 3) Код шага не успешен jbehave, easyb Given user has an available balance of $10 user. setBalance(value);
  • 9. Использование BDD c • JBehave – это популярный Behavior Driven Development фреймворк для платформы Java, основанная на принципах xUnit • Автоматизирует тестирование User Stories: – Пошаговый разбор сценариев в разных форматах – Синхронное и асинхронное выполнение сценариев • Расширяет Continuous Integration • Предоставляет подробные отчеты в HTML 9 www.ExigenServices.com
  • 10. Написание сценариев для Scenario: Payer doesn't have enough funds Given Alex is logged into account page And has an available balance of $90 When 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 form Then Alex should see error message «…» And available balance remains unchanged 10 www.ExigenServices.com
  • 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. Конфигурация 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. Инструментальное окружение Шаги Сценарии (Given, When…) Test Runner jUnit / Spring / TestNG Конфигурация (User Stories) Selenium Application Интеграция 13 www.ExigenServices.com code (Embedder) (Maven, Ant) (Web testing)
  • 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. 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. Генерация отчетов в Stories Scenarios Steps … Duration View Name Total Successful Failed Total … (hh:mm:ss.SSS) … 6 2 4 25 (00:00:05.132) 17 www.ExigenServices.com stats html xml P2P Send Money 5 5 0 35 (00:00:15.262) stats html xml Total 11 7 4 60 (00:00:20.394) stats html xml
  • 18. Генерация отчетов в P2P Send Money com/forceassociates/onpay_webtester/stories/P2PSendMoney.story.txt Scenario: Person registers for OnPay Examples <…> Scenario: Payer doesn’t have enough funds Examples Given <name> is logged into account page And has an available balance of <balance> When he enters in the amount field <amount> <…> name balance amount mail Alex $90 $90.01 ad@... Bob $0 $10 hp@... Jack $0.01 $0.02 go@... 18 www.ExigenServices.com
  • 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.org 19 www.ExigenServices.com
  • 20. Спасибо за внимание! Given that you have heard the presentation And discovered that BDD is really fun When you are thinking about testing strategies Then you should give BDD a chance! Questions? mailto: Aleksander.Dergachev@exigenservices.com 20 www.ExigenServices.com

Editor's Notes

  1. Behavior Driven Development (BDD) - эволюционный метод разработки, основанный на Test Driven Development и Domain Driven Design. Что если вместо того, чтобы думать в терминах написания тестов и тестирования компонентов, начать думать о функциональности? Говоря про функциональность, я имею в виду как приложение должно вести себя, фактически его спецификацию. Познакомьтесь с BDD с помощью нового и популярного фреймворка JBehave и узнайте, что произойдет, если фокусироваться на том, как программа работает, а не на том, что она производит в конечном итоге. Получите опыт использования JBehave для написания сценариев и их реализации на Java, интеграции с Maven и различными IDE, внедрение в автоматический процесс сборки для Integration тестов Web сервисов, генерации подробных отчетов в HTML и других возможностей Вебинар будет полезен всем, кто работает над созданием корпоративных систем на Java: архитекторам и менеджерам, которые выбирают метод разработки приложения или планирует найти лучшую замену уже используемому; разработчикам и специалистам по тестированию, которые хотят использовать четкие, структурированные описания функциональности системы и легко трансформировать их в каркас для тестирования за минимальное время с помощью современных фреймворков; заказчикам и аналитикам, которые ищут простой и эффективный способ описания требований и хотят отслеживать создание функциональности системы в реальном времени.