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

Презентация:



Advertisements
Похожие презентации
Indirect Questions How do you make indirect questions? When do you use this grammar?
Advertisements

What starts with T, ends with T and is full of T? A teapot.
Mind the clock. And keep the rule: Try to come In time at school.
Taking out Money from a Cash Machine Authors: Aleksey Ermolaev, Daria Zaitseva, Maria Leontyeva, Anatoly Leshchev, Form 10 pupils Teacher: V. V. Sergoushina,
Презентация к уроку по английскому языку по теме: Modal verbs
GRAMMAR AUCTION REPORTED SPEECH. These sentences are for sale. Some of them are correct, but some contain mistakes. You should buy as many correct sentences.
CAN, COULD, BE ABLE TO MODAL VERBS: CAN, COULD, BE ABLE TO present: * We can see the lake from our bedroom window. * Can I borrow your laptop? * Could.
What to expect? How to prepare? What to do? How to win and find a good job? BUSINESS ENGLISH COURSE NOVA KAKHOVKA GUMNASUIM 2012.
Service «Integrum Companies» step by step
Early to bed, early to rise Makes a man healthy, wealthy and wise.
Тестирование программного обеспечения 2009, v.2.8 Тест-дизайн.
I think friendship is important part of our life. To my mind friendship can be compared to a tree. Its seed should find good soil and under good conditions.
Ruby On Rails: Web- разработка по-другому! Несколько простых причин перейти на Ruby (and) Rails. Проблематика web-разработки. Разработка web-проектов всех.
Test Driven Development или как не выстрелить себе в ногу Дмитрий Хрюкин Fuse 8 Online Вторая конференция.NET разработчиков.
Unit Анке́та You will be given an identity with personal information about yourself, as well as a survey form you can use to collect personal.
Guess the Rings Phrasal verbs Fill in the gaps with prepositions: at, of, with, to, about, by, for, in, through, up, on, off, out, like.
Some- -body Any- - thing No- -where Every- Part 2.
When you send your CV to apply for a position, you should also include a short letter. This letter is called A covering letter sent with a CV/resume is.
Do you like getting up early in the morning ? Who wakes you up? (Mum, an alarm-clock…) What about morning exercises? Do.
been book a an the this that my your his her a an the this that my your his her want going to have has am are is am are is will did can NOT ? ? I we you.
Транксрипт:

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

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

1973 г.

1980 г.

Наше время

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

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

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

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

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

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

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

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

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

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

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

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

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

"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

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

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

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 " " with 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

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

Feature: Crop avatar Background: Given a user "u1" exists with username: "John Doe", password: "secret", password_confirmation: "secret", And user with username: "John Doe" has an avatar: "spec/fixtures/files/avatar.png" And I am signed in as a user using 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"

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

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

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

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

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

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

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