SlideShare a Scribd company logo
Автоматизируем тестирование UI с
Ruby, Cucumber и Selenium.
Семерханов Илья, T-Systems CIS
Кто я?
Семерханов Илья
Test engineer
Configuration manager
Team lead
Опыт автоматизации больше 3х лет
О чем я расскажу?
Зачем автоматизируют?
• Повышает качество
• Ускоряет тестирование
• Уменьшает количество однотипной работы
• Экономит бюджет и ресурсы
Основные проблемы
• Сложно, Дорого и Долго
• Нужен человек который будет автоматизировать
• Нужен человек который будет это поддерживать
Стоит ли оно того?
Путь #1. Record&Play!
Путь #2. Code It!
Путь #2. Code It!
Плюсы:
• Фреймворк под конкретный проект
• Гибкость
• Удобно поддерживать
• Надежно
Путь #2. Code It
Минусы:
• Нужен специалист, который сможет реализовать
фреймворк.

• Специалист так же нужен и для поддержки этих
тестов
• Требуется время для создания фреймворка и новых
тестов
Путь #3
1. Написать фреймворк при помощи автоматизатора
или программиста.
2. Поддерживать тесты силами существующей команды
тестировщиков, без технического специалиста.
Фреймворк должен позволять эффективно писать
тесты, а не кодировать их!
А Ruby тут причем?
Что такое Ruby?
Ruby это:
• современный
• мощный
• объектно-ориентированный
язык программирования с низким порогом вхождения.
Преимущества
Лаконичный код без синтаксических излишков
Java:
class SQADays{
private String presentationName;
private String authorName;
public void setPresenationName(String name){
this.presentationName = name;
}
public String getPresenationName(){
return presentationName;
}
public void setAuthorName(String name){
this.authorName = name;
}
public String getAuthorName(){
return authorName;
}
}

Ruby:
class sqadays
attr_accessor :presentation_name, :author_name
end
Преимущества
Легко читается
Java:

Ruby:

for(int i = 1; i<100; i++){
System.out.println(i);
}

for number in 1..100
puts number
end
Преимущества
Быстро изучается

• TryRuby.org - ruby за 15 минут.
• Книга Learn to Program ~ 10 часов.
Преимущества
Интерактивная оболочка IRB
Ruby + другие языки
Ruby можно использовать не вместо, а вместе с
другими языками, например с Java или С#.
JRuby – Java реализация Ruby. Работают все
библиотеки, может запускаться из Java кода.

IronRuby – .NET реализация Ruby.
Ruby + Selenium 2.0
Полностью поддерживает Selenium 2.0 Webdriver.
Все что нужно сделать:
>> gem install selenium-webdriver

И можно работать.
Ruby + Selenium 2.0
Пример на Ruby:
require 'rubygems'
require 'selenium-webdriver‘
driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"
element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit
puts "Page title is #{driver.title}"
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }
puts "Page title is #{driver.title}"
driver.quit
Ruby + Selenium 2.0
Тот же пример на Java:
package org.openqa.selenium.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Selenium2Example {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
В чем выгода?
• Фреймворк реализуется быстрее
• Меньше кода
• Ничего лишнего
• Можно научить не программиста азам за короткий
срок
Cucumber
Избавимся от кодирования на этапе написания тестов,
используем подход из BDD.

http://cukes.info/
Cucumber
Выполняет текстовые функциональные описания, как
автоматические тесты
Использует синтаксис Gherkin, позволяющий описать
поведение приложения
Cucumber
Тест состоит из:
• Feature
• Scenario
• Feature steps

Каждый Feature step описывается в Ruby коде.
Cucumber
Пример feature:
Feature: Home page is working
Scenario: The application has a home page
Given web application is started on <http://localhost:8080/portal>
When I visit the home page
Then I should see the home page

Пример описания шага на Ruby:
Given /^web application is started on (.*)/do |host|
#Some ruby + selenium code here
end
Метрики Cucumber
Метрики Cucumber
В итоге
• Ruby отличный выбор чтобы быстро начать писать полноценный
фреймворк для тестирования
• Ruby может быть использован вместе с другими языками, как
Java или C#

• При помощи Cucumber можно добиться написания автотестов
без кодирования, на естественном языке
• Поддерживать такие тесты проще
Ссылки
Ruby:
http://www.ruby-lang.org/en/
http://tryruby.org
Ruby in 15 minutes
http://rubymonk.com/
Learn Ruby
Cucumber:
http://cukes.info/
https://github.com/cucumber/cucumber/wiki/Cucumber-Backgrounder
Selenium + Ruby:
http://selenium2.ru/docs/appendix/client-ruby.html
Спасибо!
Контакты

Семерханов Илья
T-Systems CIS, Санкт-Петербург
Email: ilya.semerhanov@t-systems.com
Skype: i.semerhanov
Ad

Recommended

CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
CodeFest
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
lshevtsov
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Andrey Rebrov
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
Fwdays
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Fwdays
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
Anton Vidishchev
 
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Oksana Avchinnikova
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
Paul Stashevsky
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'а
Oksana Avchinnikova
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
DevDay
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
JSib
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
SQALab
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
COMAQA.BY
 
Maven как средство сборки проекта
Maven как средство сборки проекта
Yova Stoika
 
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Yandex
 
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Yandex
 
Codeception Introduction
Codeception Introduction
automated-testing.info
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
CodeFest
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
Maven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
Roman Kalita
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Protrarctor and Angular
Protrarctor and Angular
SQALab
 
The Dangers of Cucumber
The Dangers of Cucumber
Þorgeir Ingvarsson
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
matroskin1980
 

More Related Content

What's hot (20)

(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
Paul Stashevsky
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'а
Oksana Avchinnikova
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
DevDay
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
JSib
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
SQALab
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
COMAQA.BY
 
Maven как средство сборки проекта
Maven как средство сборки проекта
Yova Stoika
 
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Yandex
 
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Yandex
 
Codeception Introduction
Codeception Introduction
automated-testing.info
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
CodeFest
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
Maven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
Roman Kalita
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Protrarctor and Angular
Protrarctor and Angular
SQALab
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
Paul Stashevsky
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'а
Oksana Avchinnikova
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
DevDay
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
JSib
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
SQALab
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
COMAQA.BY
 
Maven как средство сборки проекта
Maven как средство сборки проекта
Yova Stoika
 
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Тестирование CSS-регрессий с Gemini — Сергей Татаринцев
Yandex
 
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Сергей Татаринцев — Тестирование CSS-регрессий с Gemini
Yandex
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
CodeFest
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
Maven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
Roman Kalita
 
Protrarctor and Angular
Protrarctor and Angular
SQALab
 

Viewers also liked (15)

The Dangers of Cucumber
The Dangers of Cucumber
Þorgeir Ingvarsson
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
matroskin1980
 
Автотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и Rspec
SQALab
 
Тестирование производительности клиентсайда: приквел
Тестирование производительности клиентсайда: приквел
SQALab
 
Ruby on Rails testing with Rspec
Ruby on Rails testing with Rspec
Bunlong Van
 
How to write good autotests
How to write good autotests
Þorgeir Ingvarsson
 
Selenium, а давай подождем?
Selenium, а давай подождем?
SQALab
 
Checklist How to Install Firefox GeckoDriver and Chromedriver on Windows and ...
Checklist How to Install Firefox GeckoDriver and Chromedriver on Windows and ...
Alan Richardson
 
Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцах
SQALab
 
Тестирование производительности клиентсайда
Тестирование производительности клиентсайда
SQALab
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
Igor Khrol
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектов
SQALab
 
Webium: Page Objects in Python
Webium: Page Objects in Python
Igor Khrol
 
Сложности и практики тестирования производительности
Сложности и практики тестирования производительности
SQALab
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
matroskin1980
 
Автотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и Rspec
SQALab
 
Тестирование производительности клиентсайда: приквел
Тестирование производительности клиентсайда: приквел
SQALab
 
Ruby on Rails testing with Rspec
Ruby on Rails testing with Rspec
Bunlong Van
 
Selenium, а давай подождем?
Selenium, а давай подождем?
SQALab
 
Checklist How to Install Firefox GeckoDriver and Chromedriver on Windows and ...
Checklist How to Install Firefox GeckoDriver and Chromedriver on Windows and ...
Alan Richardson
 
Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцах
SQALab
 
Тестирование производительности клиентсайда
Тестирование производительности клиентсайда
SQALab
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
Igor Khrol
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектов
SQALab
 
Webium: Page Objects in Python
Webium: Page Objects in Python
Igor Khrol
 
Сложности и практики тестирования производительности
Сложности и практики тестирования производительности
SQALab
 
Ad

Similar to Автоматизируем тестирование UI с Ruby, Cucumber и Selenium (20)

Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
SQALab
 
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
CodeFest
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UI
Vyacheslav Lyalkin
 
Каким будет Selenium 3.0 и Selenium 4.0
Каким будет Selenium 3.0 и Selenium 4.0
SQALab
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
DataArt
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Dakiry
 
Selenium Begins
Selenium Begins
Alexander Smelov
 
selenium stack in python
selenium stack in python
COMAQA.BY
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
Alina Dolgikh
 
Testing with Selenium
Testing with Selenium
OSLL
 
Автоматизация тестирования
Автоматизация тестирования
Колёса Крыша Маркет
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Dev2Dev
 
Web driver история одной миграции
Web driver история одной миграции
Igor Khrol
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QAFest
 
Client Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
Dev & test на windows azure
Dev & test на windows azure
Microsoft
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
Andrey Rebrov
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest
 
Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
SQALab
 
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
CodeFest
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UI
Vyacheslav Lyalkin
 
Каким будет Selenium 3.0 и Selenium 4.0
Каким будет Selenium 3.0 и Selenium 4.0
SQALab
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
DataArt
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Dakiry
 
selenium stack in python
selenium stack in python
COMAQA.BY
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
Alina Dolgikh
 
Testing with Selenium
Testing with Selenium
OSLL
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Dev2Dev
 
Web driver история одной миграции
Web driver история одной миграции
Igor Khrol
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QAFest
 
Client Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
Dev & test на windows azure
Dev & test на windows azure
Microsoft
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
Andrey Rebrov
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest
 
Ad

More from SQALab (20)

Готовим стажировку
Готовим стажировку
SQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
Continuous performance testing
Continuous performance testing
SQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
SQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
SQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
SQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
SQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Стили лидерства и тестирование
Стили лидерства и тестирование
SQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество"
SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
SQALab
 
Тестирование геолокационных систем
Тестирование геолокационных систем
SQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
SQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 
Готовим стажировку
Готовим стажировку
SQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
Continuous performance testing
Continuous performance testing
SQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
SQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
SQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
SQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
SQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Стили лидерства и тестирование
Стили лидерства и тестирование
SQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество"
SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
SQALab
 
Тестирование геолокационных систем
Тестирование геолокационных систем
SQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
SQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 

Автоматизируем тестирование UI с Ruby, Cucumber и Selenium

  • 1. Автоматизируем тестирование UI с Ruby, Cucumber и Selenium. Семерханов Илья, T-Systems CIS
  • 2. Кто я? Семерханов Илья Test engineer Configuration manager Team lead Опыт автоматизации больше 3х лет
  • 3. О чем я расскажу?
  • 4. Зачем автоматизируют? • Повышает качество • Ускоряет тестирование • Уменьшает количество однотипной работы • Экономит бюджет и ресурсы
  • 5. Основные проблемы • Сложно, Дорого и Долго • Нужен человек который будет автоматизировать • Нужен человек который будет это поддерживать
  • 9. Путь #2. Code It! Плюсы: • Фреймворк под конкретный проект • Гибкость • Удобно поддерживать • Надежно
  • 10. Путь #2. Code It Минусы: • Нужен специалист, который сможет реализовать фреймворк. • Специалист так же нужен и для поддержки этих тестов • Требуется время для создания фреймворка и новых тестов
  • 11. Путь #3 1. Написать фреймворк при помощи автоматизатора или программиста. 2. Поддерживать тесты силами существующей команды тестировщиков, без технического специалиста. Фреймворк должен позволять эффективно писать тесты, а не кодировать их!
  • 12. А Ruby тут причем?
  • 13. Что такое Ruby? Ruby это: • современный • мощный • объектно-ориентированный язык программирования с низким порогом вхождения.
  • 14. Преимущества Лаконичный код без синтаксических излишков Java: class SQADays{ private String presentationName; private String authorName; public void setPresenationName(String name){ this.presentationName = name; } public String getPresenationName(){ return presentationName; } public void setAuthorName(String name){ this.authorName = name; } public String getAuthorName(){ return authorName; } } Ruby: class sqadays attr_accessor :presentation_name, :author_name end
  • 15. Преимущества Легко читается Java: Ruby: for(int i = 1; i<100; i++){ System.out.println(i); } for number in 1..100 puts number end
  • 16. Преимущества Быстро изучается • TryRuby.org - ruby за 15 минут. • Книга Learn to Program ~ 10 часов.
  • 18. Ruby + другие языки Ruby можно использовать не вместо, а вместе с другими языками, например с Java или С#. JRuby – Java реализация Ruby. Работают все библиотеки, может запускаться из Java кода. IronRuby – .NET реализация Ruby.
  • 19. Ruby + Selenium 2.0 Полностью поддерживает Selenium 2.0 Webdriver. Все что нужно сделать: >> gem install selenium-webdriver И можно работать.
  • 20. Ruby + Selenium 2.0 Пример на Ruby: require 'rubygems' require 'selenium-webdriver‘ driver = Selenium::WebDriver.for :firefox driver.get "http://google.com" element = driver.find_element :name => "q" element.send_keys "Cheese!" element.submit puts "Page title is #{driver.title}" wait = Selenium::WebDriver::Wait.new(:timeout => 10) wait.until { driver.title.downcase.start_with? "cheese!" } puts "Page title is #{driver.title}" driver.quit
  • 21. Ruby + Selenium 2.0 Тот же пример на Java: package org.openqa.selenium.example; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class Selenium2Example { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.com"); WebElement element = driver.findElement(By.name("q")); element.sendKeys("Cheese!"); element.submit(); System.out.println("Page title is: " + driver.getTitle()); (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("cheese!"); } }); System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } }
  • 22. В чем выгода? • Фреймворк реализуется быстрее • Меньше кода • Ничего лишнего • Можно научить не программиста азам за короткий срок
  • 23. Cucumber Избавимся от кодирования на этапе написания тестов, используем подход из BDD. http://cukes.info/
  • 24. Cucumber Выполняет текстовые функциональные описания, как автоматические тесты Использует синтаксис Gherkin, позволяющий описать поведение приложения
  • 25. Cucumber Тест состоит из: • Feature • Scenario • Feature steps Каждый Feature step описывается в Ruby коде.
  • 26. Cucumber Пример feature: Feature: Home page is working Scenario: The application has a home page Given web application is started on <http://localhost:8080/portal> When I visit the home page Then I should see the home page Пример описания шага на Ruby: Given /^web application is started on (.*)/do |host| #Some ruby + selenium code here end
  • 29. В итоге • Ruby отличный выбор чтобы быстро начать писать полноценный фреймворк для тестирования • Ruby может быть использован вместе с другими языками, как Java или C# • При помощи Cucumber можно добиться написания автотестов без кодирования, на естественном языке • Поддерживать такие тесты проще
  • 30. Ссылки Ruby: http://www.ruby-lang.org/en/ http://tryruby.org Ruby in 15 minutes http://rubymonk.com/ Learn Ruby Cucumber: http://cukes.info/ https://github.com/cucumber/cucumber/wiki/Cucumber-Backgrounder Selenium + Ruby: http://selenium2.ru/docs/appendix/client-ruby.html
  • 32. Контакты Семерханов Илья T-Systems CIS, Санкт-Петербург Email: [email protected] Skype: i.semerhanov