SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Iosif Itkin, CEO & Co-Founder
Anton Sitnikov, Chief Architect
Спецификация на примере (SBE)
Gherkin: обзор
Тестирование Java и JavaScript с Gherkin
Слово противникам BDD (Behavior-Driven Development)
ContentsПлан мероприятия
Specification by Example (SBE)
Совместный подход к определению требований
и бизнес-ориентированных функциональных
тестов для программных продуктов на основе
сбора и иллюстрирования требований с
использованием реалистичных примеров
вместо абстрактных утверждений.
Спецификация на примере (SBE)
https://martinfowler.com
/bliki/SpecificationByEx
ample.html
Martin Fowler
Martin Fowler – рекомендуемый автор
Gojko Adzic – рекомендуемые книги
Gojko Adzic is a strategic software
delivery consultant who works with
ambitious teams to align software delivery
with business goals, and improve the
quality of their software products and
processes. Gojko specialises in are agile
and lean quality improvement, in particular
impact mapping, agile testing,
specification by example and behaviour
driven development.
Gojko’s book Specification by Example
won the Jolt Award for the best book of
2012. Gojko won the 2016 European
Software Testing Outstanding
Achievement Award. In 2011, he was
voted by peers as the most influential
agile testing professional, and his blog
won the UK Agile Award for the best
online publication in 2010.
Требования к программному обеспечению
Требования к программному обеспечению
Требования к программному обеспечению
Требования к программному обеспечению
Требования к программному обеспечению
Проблемы с требованиями
Проблемы с требованиями
При конвертации валют округлять до двух знаков
Проблемы с требованиями
При конвертации валют округлять до двух знаков
USD = 0.54 GBP – вечный двигатель
Округлять до двух знаков в нижнюю сторону
Пользователи размещают по N постов в день
ContentsПример требований
Пользователи размещают по N постов в день
Пользователи размещают по 5 постов в день
Пользователи размещают по 5,000 постов в день
ContentsПример требований
ContentsWatch the Borders
Джон Э́ дгар Гу́вер (англ. John Edgar
Hoover, 1 января 1895, Вашингтон — 2 мая
1972) —директора Федерального бюро
расследований на протяжении почти
полувека, с 1924 года до своей смерти в
1972 году
ContentsJohn Edgar Hoover
J. Edgar Hoover, former director of the FBI,
had a rule stating that all FBI memoranda
were required to be shorter than two and
one-half typed pages and with wide
margins all around. Hoover himself once
received a memo that violated this
prescribed length and format.
The writer had managed to cram more
words into his memo by reducing the size
of the margins. Hoover responded by
writing on the memo, “Watch the borders!”
When Hoover’s subordinates saw the note,
they assigned hundreds of special agents
to guard our national borders with Mexico
and Canada.
Работа бизнес аналитика
Итеративный процесс уточнения требований
https://en.wikipedia.org/wiki/The_Pentagon_Wars
F16 – пример совместной работы над требованиями
Мост вместо парома
Спецификация на примерах: Завязывание галстука
1.Накиньте на себя галстук внешней стороной, так, чтобы были видны швы.
Широкий конец находится справа, а узкий конец находится слева. Кончик
маленького конце следует вытянуть на уровень, чуть выше вашего пупка (эта
величина может изменяться в зависимости от вашего роста, длины и толщины
галстука). Работать будем с широким концом галстука.
2.Разместите широкий конец под узким концом, формируя перекрестие.
3.Оберните узкую сторону широким концом галстука слева на право.
4.Потяните широкий конец к шее и проденьте под образовавшимся воротником
(галстука).
5.Проденьте через петлю на лицевой стороне узла, который только что
образовался.
6.Потяните широкий конец вниз, слегка затягивая. Поправьте получившийся
простой узел (узел «Кент») так, чтобы он ровно разместился в вашем воротнике.
http://bowandtie.ru/kak-zavyazat-galstuk-prostoy-uzel-ili-kent/
Спецификация на примерах: Завязывание галстука
http://bowandtie.ru/kak-zavyazat-galstuk/
Обсуждение требований
Покупки с книгами по BDD доставляются бесплатно
- Доставка по всему миру?
- А если только одна книга по BDD, а все остальные по Waterfall?
Обсуждение требований
Покупки с книгами по BDD доставляются бесплатно
- Доставка по всему миру?
- Нет только по Костроме
- А если только одна книга по BDD, а все остальные по Waterfall?
- Все равно бесплатно
- А если сто книг по BDD
- Наверно за деньги
- А если покупка содержит компакт-диск?
- Наверно бесплатно
Обсуждение требований
Покупки с книгами по BDD доставляются бесплатно
- Доставка по всему миру?
- Нет только по Костроме
- А если только одна книга по BDD, а все остальные по Waterfall?
- Все равно бесплатно
- А если сто книг по BDD
- Наверно за деньги
- А если покупка содержит компакт-диск?
- Наверно бесплатно
- А если покупка содержит холодильник?
- Нет, пожалуй, бесплатно только книги
https://www.manning.com/
Корзина Доставка
1 книга по BDD Бесплатно
2 книги по BDD и 8 других книг Бесплатно
11 книг по BDD За деньги
10 других книг За деньги
5 холодильников За деньги
1 холодильник и 1 книга по BDD За деньги
Обсуждение требований
Доставляются бесплатно покупки, которые содержат:
1. не более 10 книг
2. хотя бы одну книгу по BDD
3. ничего кроме книг бесплатно
Книга по BDD
Автоматические тесты и живая документация
Gherkin
• Один язык для бизнес-аналитикам и разработчикам
• Интеграция с различными языками программирования
Cucumber
• Интеграция в процесс Continuous integration
• Отчеты о состоянии разработки
ContentsCucumber и Gherkin
ContentsБиржа
ContentsФазы разработки в BDD
Scenario: Exchange accepts order
Given exchange
When new order is received
Then execution report with status New is received
ContentsПервая спецификация на Gherkin
- Given
- When
- Then
ContentsАнатомия спецификации Gherkin
public class Exchange {
@Given("^exchange$")
public void exchange() {
}
@When("^new order is received$")
public void sendOrder() {
}
@Then("^execution report with status (.*) is received$")
public void checkExecutionReport(String expectedStatus) {
ExecutionReport report = // ...
Assert.assertEquals(expectedStatus, report.getStatus());
}
}
ContentsJava
import {defineSupportCode} from “cucumber”
import assert from “assert”
defineSupportCode(({Given, Then, When}) => {
Given(/^exchange$/, function() {
})
When(/^^new order is received$/, function() {
})
Then(/^execution report with status (.*) is received$/,
function(expectedStatus) {
let report = // ...
assert.equal(expectedStatus, report.status)
})
})
ContentsJavaScript
Scenario: Order with negative price is rejected
Given exchange
When new order with price -6 is received
Then execution report with status Rejected is received
ContentsВторая спецификация
@When("^new order with price (d+) is received$")
public void sendOrderWithPrice(double price) {
}
ContentsJava
Scenario outline: Orders with positive price are accepted
Given exchange
When new order with price <Price> is received
Then execution report with status <Status> is received
Examples:
| Price | Status |
| 100 | New |
| 0 | Rejected |
| -10 | Rejected |
ContentsСпецификация с примерами
Scenario outline: Order for unknown instrument is rejected
Given exchange knowns the following instruments:
| MSFT |
| IBM |
When new order for <Instrument> is received
Then execution report with status <Status> is received
Examples:
| Instrument | Status |
| MSFT | New |
| XXX | Rejected |
| IBM | New |
ContentsСпецификация с табличными данными
@Given("^exchange knowns the following instruments$")
public void setupInstruments(DataTable instruments) {
}
@When("^ new order for (.*) is received $")
public void sendOrderForInstrument(String instrument) {
}
ContentsJava
Given(/^exchange knowns the following instruments$/,
function(table) {
let instruments = table.rows();
})
ContentsJavaScript
Scenario: Orders for opposite sides with equal price trade
with each other
Given exchange having order on Sell side with price 5.0
and quantity 10
When new order for Buy side with price 5.0 and quantity 10
is received
Then execution report with status New is received
And execution report with status Filled is received
ContentsСпецификация с нескольким условиями
ContentsТрадиционный процесс разработки
ContentsПроцесс разработки с BDD
ContentsФазы разработки в BDD
ContentsОбсуждение
exactpro_llc
exactpro
#exactpro
exactpro
exactpro
за BDD

Contenu connexe

Plus de Iosif Itkin

ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...Iosif Itkin
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiIosif Itkin
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenIosif Itkin
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...Iosif Itkin
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...Iosif Itkin
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)Iosif Itkin
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop TestingIosif Itkin
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileIosif Itkin
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in ReviewIosif Itkin
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyIosif Itkin
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesIosif Itkin
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)Iosif Itkin
 
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Iosif Itkin
 
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsUsing Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsIosif Itkin
 
EXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsEXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsIosif Itkin
 
EXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileEXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileIosif Itkin
 
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...Iosif Itkin
 
EXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAEXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAIosif Itkin
 
EXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowEXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowIosif Itkin
 
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...Iosif Itkin
 

Plus de Iosif Itkin (20)

ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop Testing
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in Review
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and Strategy
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
 
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
 
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsUsing Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
 
EXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsEXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger Systems
 
EXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileEXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in Agile
 
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
 
EXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAEXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QA
 
EXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowEXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading Workflow
 
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...
EXTENT-2017: Implementation of MiFID II Testing Requirements by Trading Venue...
 

Kostroma MeetUP Behavior Driven Development 20 April 2017

  • 1. Iosif Itkin, CEO & Co-Founder Anton Sitnikov, Chief Architect
  • 2. Спецификация на примере (SBE) Gherkin: обзор Тестирование Java и JavaScript с Gherkin Слово противникам BDD (Behavior-Driven Development) ContentsПлан мероприятия
  • 3. Specification by Example (SBE) Совместный подход к определению требований и бизнес-ориентированных функциональных тестов для программных продуктов на основе сбора и иллюстрирования требований с использованием реалистичных примеров вместо абстрактных утверждений. Спецификация на примере (SBE)
  • 5. Gojko Adzic – рекомендуемые книги Gojko Adzic is a strategic software delivery consultant who works with ambitious teams to align software delivery with business goals, and improve the quality of their software products and processes. Gojko specialises in are agile and lean quality improvement, in particular impact mapping, agile testing, specification by example and behaviour driven development. Gojko’s book Specification by Example won the Jolt Award for the best book of 2012. Gojko won the 2016 European Software Testing Outstanding Achievement Award. In 2011, he was voted by peers as the most influential agile testing professional, and his blog won the UK Agile Award for the best online publication in 2010.
  • 12. Проблемы с требованиями При конвертации валют округлять до двух знаков
  • 13. Проблемы с требованиями При конвертации валют округлять до двух знаков USD = 0.54 GBP – вечный двигатель Округлять до двух знаков в нижнюю сторону
  • 14. Пользователи размещают по N постов в день ContentsПример требований
  • 15. Пользователи размещают по N постов в день Пользователи размещают по 5 постов в день Пользователи размещают по 5,000 постов в день ContentsПример требований
  • 16. ContentsWatch the Borders Джон Э́ дгар Гу́вер (англ. John Edgar Hoover, 1 января 1895, Вашингтон — 2 мая 1972) —директора Федерального бюро расследований на протяжении почти полувека, с 1924 года до своей смерти в 1972 году
  • 17. ContentsJohn Edgar Hoover J. Edgar Hoover, former director of the FBI, had a rule stating that all FBI memoranda were required to be shorter than two and one-half typed pages and with wide margins all around. Hoover himself once received a memo that violated this prescribed length and format. The writer had managed to cram more words into his memo by reducing the size of the margins. Hoover responded by writing on the memo, “Watch the borders!” When Hoover’s subordinates saw the note, they assigned hundreds of special agents to guard our national borders with Mexico and Canada.
  • 19. Итеративный процесс уточнения требований https://en.wikipedia.org/wiki/The_Pentagon_Wars
  • 20. F16 – пример совместной работы над требованиями
  • 22. Спецификация на примерах: Завязывание галстука 1.Накиньте на себя галстук внешней стороной, так, чтобы были видны швы. Широкий конец находится справа, а узкий конец находится слева. Кончик маленького конце следует вытянуть на уровень, чуть выше вашего пупка (эта величина может изменяться в зависимости от вашего роста, длины и толщины галстука). Работать будем с широким концом галстука. 2.Разместите широкий конец под узким концом, формируя перекрестие. 3.Оберните узкую сторону широким концом галстука слева на право. 4.Потяните широкий конец к шее и проденьте под образовавшимся воротником (галстука). 5.Проденьте через петлю на лицевой стороне узла, который только что образовался. 6.Потяните широкий конец вниз, слегка затягивая. Поправьте получившийся простой узел (узел «Кент») так, чтобы он ровно разместился в вашем воротнике. http://bowandtie.ru/kak-zavyazat-galstuk-prostoy-uzel-ili-kent/
  • 23. Спецификация на примерах: Завязывание галстука http://bowandtie.ru/kak-zavyazat-galstuk/
  • 24. Обсуждение требований Покупки с книгами по BDD доставляются бесплатно - Доставка по всему миру? - А если только одна книга по BDD, а все остальные по Waterfall?
  • 25. Обсуждение требований Покупки с книгами по BDD доставляются бесплатно - Доставка по всему миру? - Нет только по Костроме - А если только одна книга по BDD, а все остальные по Waterfall? - Все равно бесплатно - А если сто книг по BDD - Наверно за деньги - А если покупка содержит компакт-диск? - Наверно бесплатно
  • 26. Обсуждение требований Покупки с книгами по BDD доставляются бесплатно - Доставка по всему миру? - Нет только по Костроме - А если только одна книга по BDD, а все остальные по Waterfall? - Все равно бесплатно - А если сто книг по BDD - Наверно за деньги - А если покупка содержит компакт-диск? - Наверно бесплатно - А если покупка содержит холодильник? - Нет, пожалуй, бесплатно только книги
  • 27. https://www.manning.com/ Корзина Доставка 1 книга по BDD Бесплатно 2 книги по BDD и 8 других книг Бесплатно 11 книг по BDD За деньги 10 других книг За деньги 5 холодильников За деньги 1 холодильник и 1 книга по BDD За деньги Обсуждение требований Доставляются бесплатно покупки, которые содержат: 1. не более 10 книг 2. хотя бы одну книгу по BDD 3. ничего кроме книг бесплатно
  • 29. Автоматические тесты и живая документация
  • 30. Gherkin • Один язык для бизнес-аналитикам и разработчикам • Интеграция с различными языками программирования Cucumber • Интеграция в процесс Continuous integration • Отчеты о состоянии разработки ContentsCucumber и Gherkin
  • 33. Scenario: Exchange accepts order Given exchange When new order is received Then execution report with status New is received ContentsПервая спецификация на Gherkin
  • 34. - Given - When - Then ContentsАнатомия спецификации Gherkin
  • 35. public class Exchange { @Given("^exchange$") public void exchange() { } @When("^new order is received$") public void sendOrder() { } @Then("^execution report with status (.*) is received$") public void checkExecutionReport(String expectedStatus) { ExecutionReport report = // ... Assert.assertEquals(expectedStatus, report.getStatus()); } } ContentsJava
  • 36. import {defineSupportCode} from “cucumber” import assert from “assert” defineSupportCode(({Given, Then, When}) => { Given(/^exchange$/, function() { }) When(/^^new order is received$/, function() { }) Then(/^execution report with status (.*) is received$/, function(expectedStatus) { let report = // ... assert.equal(expectedStatus, report.status) }) }) ContentsJavaScript
  • 37. Scenario: Order with negative price is rejected Given exchange When new order with price -6 is received Then execution report with status Rejected is received ContentsВторая спецификация
  • 38. @When("^new order with price (d+) is received$") public void sendOrderWithPrice(double price) { } ContentsJava
  • 39. Scenario outline: Orders with positive price are accepted Given exchange When new order with price <Price> is received Then execution report with status <Status> is received Examples: | Price | Status | | 100 | New | | 0 | Rejected | | -10 | Rejected | ContentsСпецификация с примерами
  • 40. Scenario outline: Order for unknown instrument is rejected Given exchange knowns the following instruments: | MSFT | | IBM | When new order for <Instrument> is received Then execution report with status <Status> is received Examples: | Instrument | Status | | MSFT | New | | XXX | Rejected | | IBM | New | ContentsСпецификация с табличными данными
  • 41. @Given("^exchange knowns the following instruments$") public void setupInstruments(DataTable instruments) { } @When("^ new order for (.*) is received $") public void sendOrderForInstrument(String instrument) { } ContentsJava
  • 42. Given(/^exchange knowns the following instruments$/, function(table) { let instruments = table.rows(); }) ContentsJavaScript
  • 43. Scenario: Orders for opposite sides with equal price trade with each other Given exchange having order on Sell side with price 5.0 and quantity 10 When new order for Buy side with price 5.0 and quantity 10 is received Then execution report with status New is received And execution report with status Filled is received ContentsСпецификация с нескольким условиями