CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, практики, шаблоны
1. Full-stacked Ruby (on Rails) testing
ТЕСТИРОВАНИЕ RUBY (ON RAILS) ПРИЛОЖЕНИЙ:
СТЕК, ПРАКТИКИ, ШАБЛОНЫ
2. О себе
Алексей Родионов
Freelance
www.TopTal.com
Watir-WebDriver, Page-Object, Ruby On
Rails, NativeDriver
Mozilla WebQA
@p0deje
https://github.com/p0deje
p0deje@gmail.com
10. 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
11. 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.” |
12. Front-end фреймворк
+ DRY
+ Живая документация
+ Сначала фича, потом разработка (недо-ATDD
+ Тесты от клиента?
13. 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"
14. 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"
15.
16. 1. В началe
2. Front-end фреймворк
3. Back-end фреймворк
4. page-object
5. DRY
6. CI и CD с помощью Jenkins
7. Параллельные тесты
8. Дополнения
18. Back-end фреймворк
Capybara
+ Легка в использовании (i.e. разработчики пишут тес
+ Интеграция с Rails
- Красивое, но не объектное API
Watir-WebDriver
+ Мощное DOM-like API
+ Никаких XPath, CSS
19. 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') end
end # HomePage
20. 1. В началe
2. Front-end фреймворк
3. Back-end фреймворк
4. page-object
5. DRY
6. CI и CD с помощью Jenkins
7. Параллельные тесты
8. Дополнения
21. page-object
class 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.click
https://github.com/cheezy/page-object
22. 1. В началe
2. Front-end фреймворк
3. Back-end фреймворк
4. page-object
5. DRY
6. CI и CD с помощью Jenkins
7. Параллельные тесты
8. Дополнения