Некоторые советы поприготовлениюСергей Корсаков,ООО Тамтэк
Проект         Core          Other Services
Задача                          Test Framework                              CoreТребование:Минимум знаний опрограммировани...
Что такое Cucumber?Cucumber (Wikipedia) - приложение для запускаавтоматических приемочных тестов, написанных встиле BDD.На...
Пример FeatureFeature:  In order to check a calculator  As a regular user  I want ...Scenario: Checking that calc works fi...
Пример СценарияScenario: Checking that calc works fineGiven I have a calculatorWhen   I press 5And    I press +And    I pr...
Как работает CucumberСценарии                                              Step Definitions                      1        ...
Кто Что ПишетPr.Ow.   Manager   Dev   QA         FeaturePr.Ow.   Manager   Dev   QA        ScenarioPr.Ow.   Manager   Dev ...
Кто Что ПишетPr.Ow.   Manager                         FeaturePr.Ow.   Manager   Dev (?)   QA   Scenario – Общий Язык      ...
Синтаксис - GherkinКлючевые слова. И все они равны.And   I have a calculatorBut   I press 5+5=When I should see 10
Синтаксис - GherkinТаблицы.Given I have a calculatorWhen   I press following buttons:           | 5 | + |           | 5 | ...
Синтаксис - GherkinШаблоны сценариев.Scenario Outline: testing different calculatorsGiven I have a calculator "<calculator...
Синтаксис - GherkinТеги.@electronicsFeature:@calculatorScenario: Testing my new calculator.....@pc @desktopScenario: Testi...
Синтаксис - RubyХуки.Before do  @calculator = Calculator.newendAfter do |scenario|  @calculator.destroy if scenario.failed...
Синтаксис - RubyПреобразования.// From String to NumberTransform /^(d)+$/ do |number|  number.to_iend// From "04/11/86" To...
Синтаксис - RubyВложенные шаги.When /^I do 1 and 2$/  step "I do 1"  step "I do 2"end
Как готовить CucumberШаг 1. Пишем сценарий.Scenario: Check the calc button "5"  Given I have a calculator  When   I press ...
Как готовить CucumberШаг 2. Запускаем Cucumber1 scenario (1 undefined)3 steps (3 undefined)0m0.035sYou can implement step ...
Как готовить CucumberШаг 3. Реализовываем step definitionsGiven /^I have a calculator$/ do  @calc = Calculator.newendWhen ...
Как готовить CucumberШаг 4. Запускаем еще раз Scenario: Check the calc button "5"   Given I have a calculator     uninitia...
Как готовить CucumberШаг 5. Пишем код.class Calculator  def initialize    @screen = ""  end  def pressed digit    @screen ...
Как готовить CucumberШаг 6. Запускаем еще раз и радуемся.  Scenario: Check the calc button "5"    Given I have a calculato...
Сахар1. Ruby, Java (JVM-based: Scala, Groovy, ...), C#,Python, Erlang, ...2. Frameworks: RoR, Merb, Sinatra3. Java: Ant, M...
Проблемы1. Один контекст для всех step definitionsов2. Человеческий язык   - Трудности перевода   - Ошибки3. Слишком больш...
Вложенные сценарии                Допустим есть Я                Когда я сделаю дело 1                И я сделаю дело 2   ...
Немного Цифр479 scenarios (19 failed, 3 pending, 457passed)4220 steps (19 failed, 93 skipped, 3pending, 4105 passed)222m44...
СсылкиСайт проекта:cukes.infoWiki проекта:github.com/cucumber/cucumber/wikiОгурец для ниндзя (Рекомендовано!):cuke4ninja.com
cukes.infogithub.com/cucumber/cucumber/wikicuke4ninja.comВопросы?             Scenario: Check that CodeFest is cool.      ...
Upcoming SlideShare
Loading in …5
×

CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению

1,341 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,341
On SlideShare
0
From Embeds
0
Number of Embeds
347
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CodeFest 2012. Корсаков С. — Cucumber. Некоторые советы по приготовлению

  1. 1. Некоторые советы поприготовлениюСергей Корсаков,ООО Тамтэк
  2. 2. Проект Core Other Services
  3. 3. Задача Test Framework CoreТребование:Минимум знаний опрограммировании, чтобыуметь писать тесты Other Services Emulators
  4. 4. Что такое Cucumber?Cucumber (Wikipedia) - приложение для запускаавтоматических приемочных тестов, написанных встиле BDD.Начало:- GitHub - 6 апреля 2008- Whois http://cukes.info/ - 18 декабря 2008
  5. 5. Пример FeatureFeature: In order to check a calculator As a regular user I want ...Scenario: Checking that calc works fine// StepsScenario: Checking something else// Steps
  6. 6. Пример СценарияScenario: Checking that calc works fineGiven I have a calculatorWhen I press 5And I press +And I press 6And I press =Then I should see 11
  7. 7. Как работает CucumberСценарии Step Definitions 1 2 When /^I press (d+)$/ do |digit| When I press 5 Cucumber @calculator.pressed digit end 3 @calculator.pressed digit @calculator.value.should == expected_value
  8. 8. Кто Что ПишетPr.Ow. Manager Dev QA FeaturePr.Ow. Manager Dev QA ScenarioPr.Ow. Manager Dev QA Step DefinitionsPr.Ow. Manager Dev QA Тестируемый Объект
  9. 9. Кто Что ПишетPr.Ow. Manager FeaturePr.Ow. Manager Dev (?) QA Scenario – Общий Язык Dev QA Step Definitions Dev Тестируемый Объект
  10. 10. Синтаксис - GherkinКлючевые слова. И все они равны.And I have a calculatorBut I press 5+5=When I should see 10
  11. 11. Синтаксис - GherkinТаблицы.Given I have a calculatorWhen I press following buttons: | 5 | + | | 5 | = |Then I should see 10
  12. 12. Синтаксис - GherkinШаблоны сценариев.Scenario Outline: testing different calculatorsGiven I have a calculator "<calculator brand>"When I press 5+5=Then I should see <result>Examples:|calculator brand|result||Casio |10 ||Sony |10 |
  13. 13. Синтаксис - GherkinТеги.@electronicsFeature:@calculatorScenario: Testing my new calculator.....@pc @desktopScenario: Testing my new PC
  14. 14. Синтаксис - RubyХуки.Before do @calculator = Calculator.newendAfter do |scenario| @calculator.destroy if scenario.failed?endAround(@fast) do |scenario, block|
  15. 15. Синтаксис - RubyПреобразования.// From String to NumberTransform /^(d)+$/ do |number| number.to_iend// From "04/11/86" To "11-04-86"Transform $DATE_US do |date| to_iso(date)end
  16. 16. Синтаксис - RubyВложенные шаги.When /^I do 1 and 2$/ step "I do 1" step "I do 2"end
  17. 17. Как готовить CucumberШаг 1. Пишем сценарий.Scenario: Check the calc button "5" Given I have a calculator When I press 5 Then I should see 5
  18. 18. Как готовить CucumberШаг 2. Запускаем Cucumber1 scenario (1 undefined)3 steps (3 undefined)0m0.035sYou can implement step definitions forundefined steps with these snippets:Given /^I have a calculator$/ do pending
  19. 19. Как готовить CucumberШаг 3. Реализовываем step definitionsGiven /^I have a calculator$/ do @calc = Calculator.newendWhen /^I press (d+)$/ do |digit| @calc.pressed digitendThen /^I should see (d+)$/ do |value|
  20. 20. Как готовить CucumberШаг 4. Запускаем еще раз Scenario: Check the calc button "5" Given I have a calculator uninitialized constant Calculator <... Stack Trace ...> features/test.feature:4:in `Given I have acalculator When I press 5 Then I should see 5Failing Scenarios:cucumber features/test.feature:3 # Scenario: Checkthe calc button "5"
  21. 21. Как готовить CucumberШаг 5. Пишем код.class Calculator def initialize @screen = "" end def pressed digit @screen += digit end
  22. 22. Как готовить CucumberШаг 6. Запускаем еще раз и радуемся. Scenario: Check the calc button "5" Given I have a calculator When I press 5 Then I should see 51 scenario (1 passed)3 steps (3 passed)0m0.033s
  23. 23. Сахар1. Ruby, Java (JVM-based: Scala, Groovy, ...), C#,Python, Erlang, ...2. Frameworks: RoR, Merb, Sinatra3. Java: Ant, Maven4. Интеграция с Selenium / Watir - за счет руби5. Интеграция с IDE (RubyMine лучше всех)6. Интеграция с CI-системами7. Репликация - testjour project (Ooops)8. Различные форматы отчетов (HTML, JUnit, PDF,Console, свой формат)
  24. 24. Проблемы1. Один контекст для всех step definitionsов2. Человеческий язык - Трудности перевода - Ошибки3. Слишком большие регулярные выражения4. Черный ящик с шагами5. Вложенные сценарии
  25. 25. Вложенные сценарии Допустим есть Я Когда я сделаю дело 1 И я сделаю дело 2 И я сделаю дело 3 … И я сделаю дело 50 Тогда я молодецКогда я сделаю дело 51 Когда я сделаю дело 52Тогда я все еще молодец Тогда я уже не молодец
  26. 26. Немного Цифр479 scenarios (19 failed, 3 pending, 457passed)4220 steps (19 failed, 93 skipped, 3pending, 4105 passed)222m44.200s
  27. 27. СсылкиСайт проекта:cukes.infoWiki проекта:github.com/cucumber/cucumber/wikiОгурец для ниндзя (Рекомендовано!):cuke4ninja.com
  28. 28. cukes.infogithub.com/cucumber/cucumber/wikicuke4ninja.comВопросы? Scenario: Check that CodeFest is cool. Given I gone to the CodeFest When I am drinking free whiskey And Listening smart guys Then I should be happy 1 scenario (1 passed)Сергей Корсаков, 4 steps (4 passed)ООО Тамтэк 960m0sskorsakov@thumbtack.net

×