Exactpro MeetUp is taking place on April 20 at Exactpro's office in Kostroma.
Iosif Itkin, Anton Sitnikov
Event theme: Behavior-Driven Development
Date: 20 April 2017
Event Start: 18:30
Duration: 2 hrs
Event Address: 20 Lenina Street, 5th floor (Exactpro office)
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.
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.
22. Спецификация на примерах: Завязывание галстука
1.Накиньте на себя галстук внешней стороной, так, чтобы были видны швы.
Широкий конец находится справа, а узкий конец находится слева. Кончик
маленького конце следует вытянуть на уровень, чуть выше вашего пупка (эта
величина может изменяться в зависимости от вашего роста, длины и толщины
галстука). Работать будем с широким концом галстука.
2.Разместите широкий конец под узким концом, формируя перекрестие.
3.Оберните узкую сторону широким концом галстука слева на право.
4.Потяните широкий конец к шее и проденьте под образовавшимся воротником
(галстука).
5.Проденьте через петлю на лицевой стороне узла, который только что
образовался.
6.Потяните широкий конец вниз, слегка затягивая. Поправьте получившийся
простой узел (узел «Кент») так, чтобы он ровно разместился в вашем воротнике.
http://bowandtie.ru/kak-zavyazat-galstuk-prostoy-uzel-ili-kent/
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. ничего кроме книг бесплатно
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
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Спецификация с нескольким условиями