SlideShare une entreprise Scribd logo
1  sur  32
Разработка ПО через тестирование поведения средствами Cucumber Динерштейн Леонид, Флэтсофт
56% всех ошибок — результат неверного понимания или объяснения требований.  (CHAOS Report)
1973 г.
1980 г.
Наше время
1970 г. — сегодняшний день
 ... который создал новые языки для разных людей, из-за чего они перестали понимать друг друга, не могли продолжать строительство ...
Средство для автоматизированного тестирования Позволяет описывать поведение системы на естественном языке Является основным инструментом в BehaviourDrivenDevelopment (BDD)
Опишите поведение системы на естественном языке(Напишите сценарий поведения)
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить
Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить Повторите 1-6  шаги, пока не закончатся деньги у заказчика
40 естественных языков, включая русский
Функционал Опишите поведение системы на естественном языке # language: ru Функционал: Сложение чисел Чтобы не складывать в уме Все, у кого с этим туго Хотят автоматическое сложение целых чисел   Сценарий: Сложение двух целых чисел    Допустим я ввожу число 50     И затем ввожу число 70     Если я нажимаю "+"     То результатом должно быть число 120
Функционал Опишите шаги сценария на языке программирования Допустим /ввожу число (+)/ do|число|   calc.pushчисло.to_i end Если /нажимаю "(.*)"/ do|операция|   calc.sendоперация End То /результатом должно быть число (+)/ do|результат|   calc.result.should==результат.to_f End
Gherkin "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: "*|Но|А"
Формат 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]
features/user/manage_account/update_account.feature Feature:Updateaccountinformation   Background: GivenI amanauthenticateduser     AndI amontheeditaccountpage   Scenario:Updateuserinformationsuccessfully WhenI fillin"Fullname"with"SuperMan"     Andfillin"Email"with"super@example.com"     Andfillin"Password"with"654321"     Andfillin"Passwordconfirmation"with"654321"     Andfillin"Currentpassword"with"123456"     Andpress"Update"     ThenI shouldsee"Youupdatedyouraccountsuccessfully."     AndI shouldbeonthehomepage
features/step_definitions/authentication_steps.rb «GivenI amanauthenticateduser» Given /^I amanauthenticateduser$/do   Given%Q{aconfirmeduser: "me" existswithid: "1", email: "me@example.com", password: 123456, full_name: "CurrentUser"}   When%Q{I gotothesigninpage}   When%Q{fillin "Email" with "me@example.com"}   When%Q{fillin "Password" with "123456"}   When%Q{press "Signin"} end
Feature:Cropavatar   Background: Givenauser"u1"existswithusername: "JohnDoe", password: "secret", password_confirmation: "secret", email: "user@test.test"     Anduserwithusername: "JohnDoe"hasanavatar: "spec/fixtures/files/avatar.png"     AndI amsignedinasauserusingemail: "user@test.test", password: "secret"   Scenario:Croppinguseravatarvia API WhenI havequeryvaluesstart_x: "0", start_y: "10", end_x: "100", end_y: "60"namespacedwith"coordinates"     AndI send"POST"requestto"/users/u1/crop_avatar.json"     Thenresponseshouldbe"success"     Anduserwithusername: "JohnDoe"shouldhaveavatarwithwidth: "100"andheight: "50"     Andresponseshouldhavemessage: "image.notices.resized"
Зачем нужен заказчику? Зачем нужен менеджеру? Зачем нужен разработчику?
Заказчик Разговор на одном языке Четкие требования Метрика Вовлеченность в работу
Менеджер Разговор на одном языке Уверенность Метрика
Разработчик Разговор на одном языке Четкие требования Уверенный рефакторинг
Ошибки и заблуждения  Хлопотно (я могу тестировать Unit test, Rspec … ) Требования быстро меняются Оформление часто меняется Описывать поведение должен заказчик Cucumber == BDD Вы действительно используете Cucumber.(Chicken test)
Плагины Pickle Capybara Webmock VCR Spork ParallelTestjour ….
Одними из самых неприятных ошибок, являются ошибки неверной реализации требований или даже отсутствие должной функциональности. Сложность этих ошибок заключается в том, что только заказчик может найти их. Разработка программ через тестирование поведения (BDD) является продолжением идеи TDD Главное отличие BDD и TDD заключается в том, что тестируется поведение системы, а не внутренне устройство классов и код. Главной особенностью Cucumber является возможность описания поведения системы на естественном языке.  Вопросы?

Contenu connexe

Tendances

CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUICodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUICodeFest
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeDmytro Mindra
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...lshevtsov
 
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей ВасилийSolit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василийsolit
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
 
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...CodeFest
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'codeIvan Mosiev
 
Intelligent или сделай мне красиво
Intelligent или сделай мне красивоIntelligent или сделай мне красиво
Intelligent или сделай мне красивоArtem Malyshev
 

Tendances (13)

CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUICodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей ВасилийSolit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)
 
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Intelligent или сделай мне красиво
Intelligent или сделай мне красивоIntelligent или сделай мне красиво
Intelligent или сделай мне красиво
 

Similaire à Леонид Динерштейн - Разработка программ через тестирование поведения средствами Cucumber

Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовCodeFest
 
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлениюCodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлениюCodeFest
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. AlgorithmIhor Porotikov
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentAlexey Tigarev
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...Igor Khrol
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Paul Stashevsky
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in russuser0562f1
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++ssuser0562f1
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 

Similaire à Леонид Динерштейн - Разработка программ через тестирование поведения средствами Cucumber (20)

Cucumber on Kazan.rb
Cucumber on Kazan.rbCucumber on Kazan.rb
Cucumber on Kazan.rb
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
 
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлениюCodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению
CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
Генерация программы поведения игрового персонажа по естественно-языковой спец...
Генерация программы поведения игрового персонажа по естественно-языковой спец...Генерация программы поведения игрового персонажа по естественно-языковой спец...
Генерация программы поведения игрового персонажа по естественно-языковой спец...
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. Algorithm
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
Cucumber
CucumberCucumber
Cucumber
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
PowerShell
PowerShellPowerShell
PowerShell
 
BDD in Codeception
BDD in CodeceptionBDD in Codeception
BDD in Codeception
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 

Plus de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

Plus de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Леонид Динерштейн - Разработка программ через тестирование поведения средствами Cucumber

  • 1. Разработка ПО через тестирование поведения средствами Cucumber Динерштейн Леонид, Флэтсофт
  • 2. 56% всех ошибок — результат неверного понимания или объяснения требований. (CHAOS Report)
  • 7.  ... который создал новые языки для разных людей, из-за чего они перестали понимать друг друга, не могли продолжать строительство ...
  • 8. Средство для автоматизированного тестирования Позволяет описывать поведение системы на естественном языке Является основным инструментом в BehaviourDrivenDevelopment (BDD)
  • 9. Опишите поведение системы на естественном языке(Напишите сценарий поведения)
  • 10. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования
  • 11. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит
  • 12. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах
  • 13. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить
  • 14. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить
  • 15. Опишите поведение системы на естественном языке(Напишите сценарий поведения) Опишите шаги сценария на языке программирования Запустите тесты и убедитесь, что они не проходит Напишите код, который реализует поведение, описанное в тестах Запустите тесты снова и убедитесь, что некоторые тесты начали проходить Повторите 2-5 шаги, пока все тесты не начнут проходить Повторите 1-6  шаги, пока не закончатся деньги у заказчика
  • 16. 40 естественных языков, включая русский
  • 17. Функционал Опишите поведение системы на естественном языке # language: ru Функционал: Сложение чисел Чтобы не складывать в уме Все, у кого с этим туго Хотят автоматическое сложение целых чисел   Сценарий: Сложение двух целых чисел Допустим я ввожу число 50     И затем ввожу число 70     Если я нажимаю "+"     То результатом должно быть число 120
  • 18. Функционал Опишите шаги сценария на языке программирования Допустим /ввожу число (+)/ do|число|   calc.pushчисло.to_i end Если /нажимаю "(.*)"/ do|операция|   calc.sendоперация End То /результатом должно быть число (+)/ do|результат|   calc.result.should==результат.to_f End
  • 19. Gherkin "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"
  • 20. Gherkin "ru":   name: Russian   native: русский   feature: Функция|Функционал|Свойство   background: Предыстория|Контекст   scenario: Сценарий   scenario_outline: Структура сценария   examples: Примеры   given: "*|Допустим|Дано|Пусть"   when: "*|Если|Когда"   then: "*|То|Тогда"   and: "*|И|К тому же"   but: "*|Но|А"
  • 21. Формат Feature: Title In order to [Business Value] As a [Role] I want to [Some action] Scenario: Title Given [Context] When [Action] Then [Outcome]
  • 22. Формат Scenario: Title Given[Context] And[Context] When [Action] And [Action] Then[Outcome] But[Outcome]
  • 23. features/user/manage_account/update_account.feature Feature:Updateaccountinformation   Background: GivenI amanauthenticateduser     AndI amontheeditaccountpage   Scenario:Updateuserinformationsuccessfully WhenI fillin"Fullname"with"SuperMan"     Andfillin"Email"with"super@example.com"     Andfillin"Password"with"654321"     Andfillin"Passwordconfirmation"with"654321"     Andfillin"Currentpassword"with"123456"     Andpress"Update"     ThenI shouldsee"Youupdatedyouraccountsuccessfully."     AndI shouldbeonthehomepage
  • 24. features/step_definitions/authentication_steps.rb «GivenI amanauthenticateduser» Given /^I amanauthenticateduser$/do   Given%Q{aconfirmeduser: "me" existswithid: "1", email: "me@example.com", password: 123456, full_name: "CurrentUser"}   When%Q{I gotothesigninpage}   When%Q{fillin "Email" with "me@example.com"}   When%Q{fillin "Password" with "123456"}   When%Q{press "Signin"} end
  • 25. Feature:Cropavatar   Background: Givenauser"u1"existswithusername: "JohnDoe", password: "secret", password_confirmation: "secret", email: "user@test.test"     Anduserwithusername: "JohnDoe"hasanavatar: "spec/fixtures/files/avatar.png"     AndI amsignedinasauserusingemail: "user@test.test", password: "secret"   Scenario:Croppinguseravatarvia API WhenI havequeryvaluesstart_x: "0", start_y: "10", end_x: "100", end_y: "60"namespacedwith"coordinates"     AndI send"POST"requestto"/users/u1/crop_avatar.json"     Thenresponseshouldbe"success"     Anduserwithusername: "JohnDoe"shouldhaveavatarwithwidth: "100"andheight: "50"     Andresponseshouldhavemessage: "image.notices.resized"
  • 26. Зачем нужен заказчику? Зачем нужен менеджеру? Зачем нужен разработчику?
  • 27. Заказчик Разговор на одном языке Четкие требования Метрика Вовлеченность в работу
  • 28. Менеджер Разговор на одном языке Уверенность Метрика
  • 29. Разработчик Разговор на одном языке Четкие требования Уверенный рефакторинг
  • 30. Ошибки и заблуждения Хлопотно (я могу тестировать Unit test, Rspec … ) Требования быстро меняются Оформление часто меняется Описывать поведение должен заказчик Cucumber == BDD Вы действительно используете Cucumber.(Chicken test)
  • 31. Плагины Pickle Capybara Webmock VCR Spork ParallelTestjour ….
  • 32. Одними из самых неприятных ошибок, являются ошибки неверной реализации требований или даже отсутствие должной функциональности. Сложность этих ошибок заключается в том, что только заказчик может найти их. Разработка программ через тестирование поведения (BDD) является продолжением идеи TDD Главное отличие BDD и TDD заключается в том, что тестируется поведение системы, а не внутренне устройство классов и код. Главной особенностью Cucumber является возможность описания поведения системы на естественном языке. Вопросы?