'

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

Понравилась презентация – покажи это...





Слайд 0

Разработка ПО через тестирование поведения средствами Cucumber Динерштейн Леонид, Флэтсофт


Слайд 1

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


Слайд 2

1973 г.


Слайд 3

1980 г.


Слайд 4

Наше время


Слайд 5

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


Слайд 6

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


Слайд 7

Средство для автоматизированного тестирования Позволяет описывать поведение системы на естественном языке Является основным инструментом в Behaviour Driven Development (BDD)


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить


Слайд 14

Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить Повторите 1-6  шаги, пока не закончатся деньги у заказчика


Слайд 15

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


Слайд 16

# language: ru Функционал: Сложение чисел Чтобы не складывать в уме Все, у кого с этим туго Хотят автоматическое сложение целых чисел   Сценарий: Сложение двух целых чисел Допустим я ввожу число 50     И затем ввожу число 70     Если я нажимаю "+"     То результатом должно быть число 120 Функционал Опишите поведение системы на естественном языке


Слайд 17

Допустим /ввожу число (\d+)/ do |число|   calc.push число.to_i end Если /нажимаю "(.*)"/ do |операция|   calc.send операция End То /результатом должно быть число (\d+)/ do |результат|   calc.result.should == результат.to_f End Функционал Опишите шаги сценария на языке программирования


Слайд 18

"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


Слайд 19

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


Слайд 20

Формат Feature: Title In order to [Business Value] As a [Role] I want to [Some action] Scenario: Title Given [Context] When [Action] Then [Outcome]


Слайд 21

Формат Scenario: Title Given [Context] And [Context] When [Action] And [Action] Then [Outcome] But [Outcome]


Слайд 22

Feature: Update account information   Background: Given I am an authenticated user     And I am on the edit account page   Scenario: Update user information successfully When I fill in "Full name" with "Super Man"     And fill in "Email" with "super@example.com"     And fill in "Password" with "654321"     And fill in "Password confirmation" with "654321"     And fill in "Current password" with "123456"     And press "Update"     Then I should see "You updated your account successfully."     And I should be on the home page features/user/manage_account/update_account.feature


Слайд 23

features/step_definitions/authentication_steps.rb Given /^I am an authenticated user$/ do   Given %Q{a confirmed user: "me" exists with id: "1", email: "me@example.com", password: 123456, full_name: "Current User"}   When %Q{I go to the sign in page}   When %Q{fill in "Email" with "me@example.com"}   When %Q{fill in "Password" with "123456"}   When %Q{press "Sign in"} end « Given I am an authenticated user»


Слайд 24

Feature: Crop avatar   Background: Given a user "u1" exists with username: "John Doe", password: "secret", password_confirmation: "secret", email: "user@test.test"     And user with username: "John Doe" has an avatar: "spec/fixtures/files/avatar.png"     And I am signed in as a user using email: "user@test.test", password: "secret"   Scenario: Cropping user avatar via API When I have query values start_x: "0", start_y: "10", end_x: "100", end_y: "60" namespaced with "coordinates"     And I send "POST" request to "/users/u1/crop_avatar.json"     Then response should be "success"     And user with username: "John Doe" should have avatar with width: "100" and height: "50"     And response should have message: "image.notices.resized"


Слайд 25

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


Слайд 26

Заказчик Разговор на одном языке Четкие требования Метрика Вовлеченность в работу


Слайд 27

Менеджер Разговор на одном языке Уверенность Метрика


Слайд 28

Разработчик Разговор на одном языке Четкие требования Уверенный рефакторинг


Слайд 29

Ошибки и заблуждения Хлопотно (я могу тестировать Unit test, Rspec … ) Требования быстро меняются Оформление часто меняется Описывать поведение должен заказчик Cucumber == BDD Вы действительно используете Cucumber. (Chicken test)


Слайд 30

Плагины Pickle Capybara Webmock VCR Spork Parallel Testjour ….


Слайд 31

Вопросы? Одними из самых неприятных ошибок, являются ошибки неверной реализации требований или даже отсутствие должной функциональности. Сложность этих ошибок заключается в том, что только заказчик может найти их. Разработка программ через тестирование поведения (BDD) является продолжением идеи TDD Главное отличие BDD и TDD заключается в том, что тестируется поведение системы, а не внутренне устройство классов и код. Главной особенностью Cucumber является возможность описания поведения системы на естественном языке.


×

HTML:





Ссылка: