Behavior Driven Development, Ruby Style
-
Upload
bozhidar-batsov -
Category
Technology
-
view
848 -
download
2
Transcript of Behavior Driven Development, Ruby Style
![Page 1: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/1.jpg)
![Page 2: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/2.jpg)
Behaviour-Driven Development
ft. Ruby, Cucumber & RSpec
![Page 3: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/3.jpg)
Видове тестване
Области за проверка Начини за проверка
Process Doc Reviews
Functional Manual
Security Automated
Performance Sampling
Stress/Load Test Driven
Usability Behavior Driven
Glob/Loc
![Page 4: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/4.jpg)
Tестове
Ръчни Автоматизирани
Квалификация Средна Висока
Удоволствие
Мащаб 0 ∞
Цена $$$$$ $$$
![Page 5: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/5.jpg)
Цена на дефектите
![Page 6: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/6.jpg)
Agile и автоматизацията
Add test
Watch Test Fail
Write Code
Run Tests
Refactor
![Page 7: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/7.jpg)
![Page 8: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/8.jpg)
I love the term diversity.
Di-ver-si-ty.
Doesn’t that sound great?
![Page 9: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/9.jpg)
CucumberRSpec
Test::Minitest Shoulda
Test::UnitSteak
Testing Frameworks за Ruby
![Page 10: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/10.jpg)
CucumberRSpec
![Page 11: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/11.jpg)
![Page 12: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/12.jpg)
Първи идват feature тестовете
![Page 13: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/13.jpg)
features
online_shopping.feature
![Page 14: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/14.jpg)
$ rake cucumber
Feature: Online shopping
In order to use the full capabilities
of our online shop
A user
Should be able to make an order
Scenario: Buying a beer # features/online_shopping.feature:6
Given that there are 5 beers on stock
When Vasko buys 2 beers
Then there should be 3 beers left
1 scenario (1 undefined)
3 steps (3 undefined)
0m0.003s
![Page 15: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/15.jpg)
features
step_definitions
shopping_steps.rb
![Page 16: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/16.jpg)
Feature: Online shopping
In order to use the full capabilities
of our online shop
A user
Should be able to make an order
Scenario: Buying a beer # features/online_shopping.feature:6
Given that there are 5 beers on stock
uninitialized constant Beer (NameError)
./features/step_definitions/online_shopping_steps.rb:5:
in `/^that there are (\d+) beers on stock$/‘
When Vasko buys 2 beers
Then there should be 3 beers left
Failing Scenarios:
cucumber features/online_shopping.feature:6 # Scenario: Buying a beer
1 scenario (1 failed)
3 steps (1 failed, 2 skipped)
0m0.469s
![Page 17: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/17.jpg)
$ rake cucumber
Feature: Online shopping
In order to use the full capabilities
of our online shop
A user
Should be able to make an order
Scenario: Buying a beer # features/online_shopping.feature:6
Given that there are 5 beers on stock
When Vasko buys 2 beers
Then there should be 3 beers left
1 scenario (1 passed)
3 steps (3 passed)
0m0.003s
![Page 18: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/18.jpg)
Gherkin
$ cucumber --i18n help
Над 40 езика
| ar
| bg
| ca
| cs
| cy-GB
| da
| de
| en
| en-Scouse
| en-au
…
| Arabic
Bulgarian
| Catalan
| Czech
| Welsh
| Danish
| German
| English
| Scouse
| Australian
…
|العربية |
| български |
| català |
| Česky |
| Cymraeg |
| dansk |
| Deutsch |
| English |
| Scouse |
| Australian |…
![Page 19: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/19.jpg)
![Page 20: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/20.jpg)
![Page 21: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/21.jpg)
$ rake cucumber
# language: bg
Функционалност: Пазаруване онлайн
За да използват пълните възможности
на нашия онлайн магазин
Потребителите
Трябва да могат да правят поръчки
Сценарий: Купуване на бира # features/online_shopping.feature:10
Дадено е, че има налични 5 бири
Когато Васко купи 2 бири
То трябва да останат 3 бири
1 scenario (1 passed)
3 steps (3 passed)
0m0.003s
![Page 22: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/22.jpg)
Къде са
unit tests?
спецификации
![Page 23: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/23.jpg)
Test
![Page 24: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/24.jpg)
Spec
![Page 25: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/25.jpg)
Test vs. Spec
![Page 26: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/26.jpg)
Test vs. Spec
![Page 27: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/27.jpg)
Test vs. Spec
![Page 28: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/28.jpg)
Test vs. Spec
![Page 29: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/29.jpg)
Feature
Spec
Code
Refactor
Cucumber + RSpec – задвижване на реализацията отвън - навътре
![Page 30: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/30.jpg)
WHO BROKE THE BUILD?
![Page 31: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/31.jpg)
Guard
Bundle updateBundle already up-to-date
Cucumber Results13 passed steps
RSpec results197 examples, 0 failures (15 pending)
in 12.274 seconds
![Page 32: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/32.jpg)
Spork
SporkRspec & Cucumber successfully started
![Page 33: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/33.jpg)
Jenkins
![Page 34: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/34.jpg)
![Page 35: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/35.jpg)
ВЪПРОСИ?
![Page 36: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/36.jpg)
Ресурси
• Десетте най-големи софтуерни грешки: http://themanojblog.blogspot.com/2009/05/blog-wars-episode-v-historys-top-ten.html
• Тестване на софтуер: http://en.wikipedia.org/wiki/Software_testing
• Допълнитени ресурси: http://www.softwaretestinghelp.com
![Page 37: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/37.jpg)
Ресурси
• Cucumber: http://cukes.info
• RSpec: http://rspec.info
• Guard: https://github.com/guard/guard
• Spork: https://github.com/sporkrb/spork
• Jenkins: http://jenkins-ci.org/
![Page 38: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/38.jpg)
Контакти
• Георги Кременлиев:
– @gssgek
• Цветомила Михайлова:
– @tsvetomila
![Page 39: Behavior Driven Development, Ruby Style](https://reader034.fdocuments.us/reader034/viewer/2022042714/5553ac3fb4c905d4448b48bb/html5/thumbnails/39.jpg)
БЛАГОДАРИМ ВИ!