Your SlideShare is downloading. ×
0
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны

1,157

Published on

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

No Downloads
Views
Total Views
1,157
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Full-stacked Ruby (on Rails) testingТЕСТИРОВАНИЕ RUBY (ON RAILS) ПРИЛОЖЕНИЙ:СТЕК, ПРАКТИКИ, ШАБЛОНЫ
  • 2. О себеАлексей Родионов Freelance www.TopTal.com Watir-WebDriver, Page-Object, Ruby OnRails, NativeDriver Mozilla WebQA @p0deje https://github.com/p0deje p0deje@gmail.com
  • 3. toptal
  • 4. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 5. В начале
  • 6. В началеclass PublicControllerTest < ActionController::TestCase # Replace this with your real tests. test “the truth” do assert true endend
  • 7. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 8. Front-end фреймворкRSpec Юнит-тесты Rack-test Mock-объектыCucumber Функциональные тесты WebDriver “Живые” данные
  • 9. Front-end фреймворкПростой сценарийScenario: Applying to job Given a new job is approved And I am logged in as developer user When I click “Jobs” link And I open this job And I apply to job Then I should see successfully apply to job message
  • 10. Front-end фреймворк Сценарий посложнейScenario Outline: Job termination Given a new job is <job_status> And I am logged in as <role> user When I open “<tab>” tab And I open this job And I <action> job Then I should see <message> Examples: | role | tab | job_status | action | message | | company | Jobs | created | remove | successful job deletion message | | company | Jobs | approved | cancel | successful job deletion message | | company | Jobs | active | end | notice message “The job was updated successfully.” | | admin | All Jobs | created | remove | successful job deletion message | | admin | All Jobs | approved | cancel | successful job deletion message | | admin | All Jobs | active | end | notice message “The job was updated successfully.” |
  • 11. Front-end фреймворк+ DRY+ Живая документация+ Сначала фича, потом разработка (недо-ATDD+ Тесты от клиента?
  • 12. Front-end фреймворкScenario: End active job Given a new job is active And I am logged in as company user When I open this job And I end job Then job status should be "On Notice"
  • 13. Front-end фреймворкScenario: Ended job is active after page refresh Given a new job is active And I am logged in as company user When I open this job And I end job And I refresh page Then job status should be "On Notice"
  • 14. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 15. Back-end фреймворкhttp://watirmelon.com/2011/12/03/a-tale-of-three-ruby-automated-testing-apis-re
  • 16. Back-end фреймворкCapybara+ Легка в использовании (i.e. разработчики пишут тес+ Интеграция с Rails- Красивое, но не объектное APIWatir-WebDriver+ Мощное DOM-like API+ Никаких XPath, CSS
  • 17. Back-end фреймворкclass HomePage < Page # # Clicks “Login” link. # @return [LoginPage] # def click_login_link menu_div.link(text: Login).click LoginPage.new end private def menu_div; browser.div(id: menu) endend # HomePage
  • 18. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 19. page-objectclass HomePage < Page # Elements link :login_link, id: „login_link‟end # HomePage> page = HomePage.new # Click link> page.login_link # Is link present on page?> page.login_link? # Wait until link is shown, then click> page.login_link_element.when_present.clickhttps://github.com/cheezy/page-object
  • 20. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 21. DRY1. Дробите страницы на блоки и выносите их в отдельные модули
  • 22. DRY2. Класс страницы должен уметь менять набор своих методов в зависмости от контекста (polymorphous page objects)
  • 23. DRY3. Создавайте свои DSL
  • 24. DRYclass JobListPage < Page def jobs # ... end def job?(title) # ... end def job(title) # ... endend # JobListPage
  • 25. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 26. CI и CD Specs (Юнит-тесты)Features (Функциональные тесты) Deploy
  • 27. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 28. Параллельные тестыSelenium Grid 2Для запуска/управления браузеромparallel_testsДля распределения процессов, фич и БД
  • 29. Параллельные тестыОколо 700 сценариев1. Одним процессом: 5 часов 10 минут2. Четыре процесса (Core Quad): 1 час 45 минут
  • 30. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  • 31. Дополнения1. Адекватное тестирование емейлов https://github.com/p0deje/action_mailer_cache_delive2. Автоматическая валидация страниц на соответстви стандартам W3C3. Хелперы, конфигурации и пр. https://github.com/p0deje/CodeFest-2012
  • 32. Вопросы? @p0dejehttps://github.com/p0deje/CodeFest-2012

×