cucumber on kazan.rb

Post on 29-Jun-2015

1.077 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

(CHAOS Report)

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

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

1973 г.

1980 г.

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

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

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

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

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

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

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

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

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

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

заказчика

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

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

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

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

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

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

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

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

Формат

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

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

"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

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

Gherkin

Стиль

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

Стиль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."

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

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

Заказчик

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

Менеджер

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

Разработчик

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

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

PickleCapybaraWebmockVCRSporkParallelTestjour….

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

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

top related