Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Full-stacked Ruby (on Rails) testingТЕСТИРОВАНИЕ RUBY (ON RAILS) ПРИЛОЖЕНИЙ:СТЕК, ПРАКТИКИ, ШАБЛОНЫ
О себеАлексей Родионов   Freelance   www.TopTal.com Watir-WebDriver, Page-Object, Ruby OnRails, NativeDriver Mozilla W...
toptal
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
В начале
В началеclass PublicControllerTest < ActionController::TestCase # Replace this with your real tests. test “the truth” do  ...
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
Front-end фреймворкRSpec Юнит-тесты Rack-test Mock-объектыCucumber Функциональные тесты WebDriver “Живые” данные
Front-end фреймворкПростой сценарийScenario: Applying to job Given a new job is approved And I am logged in as developer u...
Front-end фреймворк     Сценарий посложнейScenario Outline: Job termination Given a new job is <job_status> And I am logge...
Front-end фреймворк+ DRY+ Живая документация+ Сначала фича, потом разработка (недо-ATDD+ Тесты от клиента?
Front-end фреймворкScenario: End active job Given a new job is active And I am logged in as company user When I open this ...
Front-end фреймворкScenario: Ended job is active after page refresh Given a new job is active And I am logged in as compan...
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
Back-end фреймворкhttp://watirmelon.com/2011/12/03/a-tale-of-three-ruby-automated-testing-apis-re
Back-end фреймворкCapybara+ Легка в использовании (i.e. разработчики пишут тес+ Интеграция с Rails- Красивое, но не объект...
Back-end фреймворкclass HomePage < Page # # Clicks “Login” link. # @return [LoginPage] # def click_login_link  menu_div.li...
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
page-objectclass HomePage < Page # Elements link :login_link, id: „login_link‟end # HomePage> page = HomePage.new # Click ...
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
DRY1. Дробите страницы на блоки и выносите  их в отдельные модули
DRY2. Класс страницы должен уметь менять  набор своих методов в зависмости от  контекста (polymorphous page objects)
DRY3. Создавайте свои DSL
DRYclass JobListPage < Page def jobs  # ... end def job?(title)  # ... end def job(title)  # ... endend # JobListPage
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
CI и CD      Specs (Юнит-тесты)Features (Функциональные тесты)            Deploy
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
Параллельные тестыSelenium Grid 2Для запуска/управления браузеромparallel_testsДля распределения процессов, фич и БД
Параллельные тестыОколо 700 сценариев1. Одним процессом: 5 часов 10 минут2. Четыре процесса (Core Quad): 1 час 45 минут
1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тест...
Дополнения1. Адекватное тестирование емейлов   https://github.com/p0deje/action_mailer_cache_delive2. Автоматическая валид...
Вопросы?                 @p0dejehttps://github.com/p0deje/CodeFest-2012
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
Upcoming SlideShare
Loading in …5
×

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

1,793 views

Published on

  • Be the first to comment

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

  1. 1. Full-stacked Ruby (on Rails) testingТЕСТИРОВАНИЕ RUBY (ON RAILS) ПРИЛОЖЕНИЙ:СТЕК, ПРАКТИКИ, ШАБЛОНЫ
  2. 2. О себеАлексей Родионов Freelance www.TopTal.com Watir-WebDriver, Page-Object, Ruby OnRails, NativeDriver Mozilla WebQA @p0deje https://github.com/p0deje p0deje@gmail.com
  3. 3. toptal
  4. 4. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  5. 5. В начале
  6. 6. В началеclass PublicControllerTest < ActionController::TestCase # Replace this with your real tests. test “the truth” do assert true endend
  7. 7. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  8. 8. Front-end фреймворкRSpec Юнит-тесты Rack-test Mock-объектыCucumber Функциональные тесты WebDriver “Живые” данные
  9. 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. 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. 11. Front-end фреймворк+ DRY+ Живая документация+ Сначала фича, потом разработка (недо-ATDD+ Тесты от клиента?
  12. 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. 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. 14. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  15. 15. Back-end фреймворкhttp://watirmelon.com/2011/12/03/a-tale-of-three-ruby-automated-testing-apis-re
  16. 16. Back-end фреймворкCapybara+ Легка в использовании (i.e. разработчики пишут тес+ Интеграция с Rails- Красивое, но не объектное APIWatir-WebDriver+ Мощное DOM-like API+ Никаких XPath, CSS
  17. 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. 18. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  19. 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. 20. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  21. 21. DRY1. Дробите страницы на блоки и выносите их в отдельные модули
  22. 22. DRY2. Класс страницы должен уметь менять набор своих методов в зависмости от контекста (polymorphous page objects)
  23. 23. DRY3. Создавайте свои DSL
  24. 24. DRYclass JobListPage < Page def jobs # ... end def job?(title) # ... end def job(title) # ... endend # JobListPage
  25. 25. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  26. 26. CI и CD Specs (Юнит-тесты)Features (Функциональные тесты) Deploy
  27. 27. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  28. 28. Параллельные тестыSelenium Grid 2Для запуска/управления браузеромparallel_testsДля распределения процессов, фич и БД
  29. 29. Параллельные тестыОколо 700 сценариев1. Одним процессом: 5 часов 10 минут2. Четыре процесса (Core Quad): 1 час 45 минут
  30. 30. 1. В началe2. Front-end фреймворк3. Back-end фреймворк4. page-object5. DRY6. CI и CD с помощью Jenkins7. Параллельные тесты8. Дополнения
  31. 31. Дополнения1. Адекватное тестирование емейлов https://github.com/p0deje/action_mailer_cache_delive2. Автоматическая валидация страниц на соответстви стандартам W3C3. Хелперы, конфигурации и пр. https://github.com/p0deje/CodeFest-2012
  32. 32. Вопросы? @p0dejehttps://github.com/p0deje/CodeFest-2012

×