cucumber on kazan.rb

25

Upload: leonid-dinershtein

Post on 29-Jun-2015

1.077 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Cucumber on Kazan.rb
Page 2: Cucumber on Kazan.rb

Попробуй ма–ма, Попробуй джага–джага, Попробуй м-м, Мне это надо-надо.

Page 3: Cucumber on Kazan.rb

56% всех ошибок — результат неверного понимания или объяснения требований.

(CHAOS Report)

Page 4: Cucumber on Kazan.rb

Разработка ПО через тестирование поведения

средствами CucumberДинерштейн Леонид, Флэтсофт

Page 5: Cucumber on Kazan.rb

1973 г.

Page 6: Cucumber on Kazan.rb

1980 г.

Page 7: Cucumber on Kazan.rb
Page 8: Cucumber on Kazan.rb

1970 г. — сегодняшний день

Page 9: Cucumber on Kazan.rb

... который создал новые языки для разных людей, из-за чего они перестали понимать друг друга, не могли продолжать строительство ...

Page 10: Cucumber on Kazan.rb

1. Средство для автоматизированного тестирования

2. Позволяет описывать поведение системы на естественном языке

3. Является основным инструментом в Behaviour Driven Development (BDD)

Page 11: Cucumber on Kazan.rb

1. Опишите поведение системы на естественном языке(Напишите сценарий поведения)

2. Опишите шаги сценария на языке программирования3. Запустите тесты и убедитесь, что они не проходит4. Напишите код, который реализует поведение,

описанное в тестах5. Запустите тесты снова и убедитесь, что некоторые

тесты начали проходить6. Повторите 2-5 шаги, пока все тесты не начнут

проходить7. Повторите 1-6 шаги, пока не закончатся деньги у

заказчика

Page 12: Cucumber on Kazan.rb

40 естественных языков, включая русский

Page 13: Cucumber on Kazan.rb

# language: ruФункционал: Сложение чиселЧтобы не складывать в умеВсе, у кого с этим тугоХотят автоматическое сложение целых чисел

Сценарий: Сложение двух целых чисел Допустим я ввожу число 50 И затем ввожу число 70 Если я нажимаю "+" То результатом должно быть число 120

Опишите поведение системы на естественном языке

Page 14: Cucumber on Kazan.rb

Допустим /ввожу число (\d+)/ do |число| calc.push число.to_iend

Если /нажимаю "(.*)"/ do |операция| calc.send операцияEnd

То /результатом должно быть число (\d+)/ do |результат| calc.result.should == результат.to_fEnd

Опишите шаги сценария на языке программирования

Page 15: Cucumber on Kazan.rb

Формат

Feature: Title In order to [Business Value] As a [Role] I want to [Some action]

Scenario: Title Given [Context] When [Action] Then [Outcome]

Page 16: Cucumber on Kazan.rb

"en": name: English native: English feature: Feature background: Background scenario: Scenario scenario_outline: Scenario Outline|Scenario Template examples: Examples|Scenarios given: "*|Given" when: "*|When" then: "*|Then" and: "*|And" but: "*|But"

Gherkin

Page 17: Cucumber on Kazan.rb

"ru": name: Russian native: русский feature: Функция|Функционал|Свойство background: Предыстория|Контекст scenario: Сценарий scenario_outline: Структура сценария examples: Примеры given: "*|Допустим|Дано|Пусть" when: "*|Если|Когда" then: "*|То|Тогда" and: "*|И|К тому же" but: "*|Но|А"

Gherkin

Page 18: Cucumber on Kazan.rb

Стиль

Scenario: Artist creates an art workGiven I am a registered artistAnd I follow the add new artwork link from the dashboardWhen I fill the form with the artwork dataAnd I upload a pictureThen I should see a confirmation message telling me that the artwork was added to my collection

Page 19: Cucumber on Kazan.rb

СтильScenario: Artist creates an art work

Given I am a registered artist And I am on my dashboard And I follow "Add an artwork" within "#dashboard" When I fill in "Title" with "The Arnolfini Portrait" And I fill in "Description" with "A nice portrait." And I select "Painting" from "Category" And I attach "arnolfini.jpg" to "Select picture" And I press "Create" Then I should see "The Arnolfini Portrait was successfully added to your art collection."

Page 20: Cucumber on Kazan.rb

Зачем нужен заказчику?Зачем нужен менеджеру?

Зачем нужен разработчику?

Page 21: Cucumber on Kazan.rb

Заказчик

1. Разговор на одном языке2. Четкие требования3. Уверенность4. Метрика5. Вовлеченность в работу

Page 22: Cucumber on Kazan.rb

Менеджер

1. Разговор на одном языке2. Четкие требования3. Уверенность4. Метрика5. Вовлеченность в работу

Page 23: Cucumber on Kazan.rb

Разработчик

1. Разговор на одном языке2. Четкие требования3. Уверенный рефакторинг4. Живая документация

Page 24: Cucumber on Kazan.rb

Инфраструктура

PickleCapybaraWebmockVCRSporkParallelTestjour….

Page 25: Cucumber on Kazan.rb

Ошибки и заблуждения

1. Хлопотно2. Требования быстро меняются3. Оформление часто меняется4. Описывать поведение должен заказчик5. Cucumber == BDD6. Вы действительно используете Cucumber