32
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium. Семерханов Илья, T-Systems CIS

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

  • Upload
    sqalab

  • View
    2.878

  • Download
    23

Embed Size (px)

DESCRIPTION

Презентация доклада Ильи Семерханова на конференции SQADays-14, Львов 8-9 ноября 2013

Citation preview

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

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

Семерханов Илья, T-Systems CIS

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

Кто я?

Семерханов Илья

Test engineer

Configuration manager

Team lead

Опыт автоматизации больше 3х лет

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

О чем я расскажу?

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

Зачем автоматизируют?

• Повышает качество

• Ускоряет тестирование

• Уменьшает количество однотипной работы

• Экономит бюджет и ресурсы

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

Основные проблемы

• Сложно, Дорого и Долго

• Нужен человек который будет автоматизировать

• Нужен человек который будет это поддерживать

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

Стоит ли оно того?

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

Путь #1. Record&Play!

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

Путь #2. Code It!

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

Путь #2. Code It!

Плюсы:

• Фреймворк под конкретный проект

• Гибкость

• Удобно поддерживать

• Надежно

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

Путь #2. Code It

Минусы:

• Нужен специалист, который сможет реализовать фреймворк.

• Специалист так же нужен и для поддержки этих тестов

• Требуется время для создания фреймворка и новых тестов

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

Путь #3

1. Написать фреймворк при помощи автоматизатора или программиста.

2. Поддерживать тесты силами существующей команды тестировщиков, без технического специалиста.

Фреймворк должен позволять эффективно писать тесты, а не кодировать их!

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

А Ruby тут причем?

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

Что такое Ruby?

Ruby это:• современный• мощный• объектно-ориентированный

язык программирования с низким порогом вхождения.

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

Преимущества

Лаконичный код без синтаксических излишков

Java: Ruby:

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; }}

class sqadays attr_accessor :presentation_name, :author_nameend

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

Преимущества

Легко читается

Java: Ruby:

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

}

for number in 1..100puts number

end

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

Преимущества

• TryRuby.org - ruby за 15 минут.

• Книга Learn to Program ~ 10 часов.

Быстро изучается

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

Преимущества

Интерактивная оболочка IRB

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

Ruby + другие языки

Ruby можно использовать не вместо, а вместе с другими языками, например с Java или С#.

JRuby – Java реализация Ruby. Работают все библиотеки, может запускаться из Java кода.

IronRuby – .NET реализация Ruby.

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

Ruby + Selenium 2.0

Полностью поддерживает Selenium 2.0 Webdriver.

Все что нужно сделать:

>> gem install selenium-webdriver

И можно работать.

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

Пример на Ruby:

require 'rubygems'require 'selenium-webdriver‘

driver = Selenium::WebDriver.for :firefoxdriver.get "http://google.com"element = driver.find_element :name => "q"element.send_keys "Cheese!"element.submitputs "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

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

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(); }}

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

В чем выгода?

• Фреймворк реализуется быстрее

• Меньше кода

• Ничего лишнего

• Можно научить не программиста азам за короткий срок

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

Cucumber

Избавимся от кодирования на этапе написания тестов, используем подход из BDD.

http://cukes.info/

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

Cucumber

Выполняет текстовые функциональные описания, как автоматические тесты

Использует синтаксис Gherkin, позволяющий описать поведение приложения

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

Cucumber

Тест состоит из:• Feature• Scenario• Feature steps

Каждый Feature step описывается в Ruby коде.

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

Cucumber

Пример feature:

Пример описания шага на Ruby:

Given /^web application is started on (.*)/do |host|

#Some ruby + selenium code here

end

Feature: Home page is workingScenario: The application has a home page

Given web application is started on <http://localhost:8080/portal>When I visit the home pageThen I should see the home page

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

Метрики Cucumber

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

Метрики Cucumber

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

В итоге

• Ruby отличный выбор чтобы быстро начать писать полноценный фреймворк для тестирования

• Ruby может быть использован вместе с другими языками, как Java или C#

• При помощи Cucumber можно добиться написания автотестов без кодирования, на естественном языке

• Поддерживать такие тесты проще

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

Ссылки

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

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

Спасибо!

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

Контакты

Семерханов Илья

T-Systems CIS, Санкт-Петербург

Email: [email protected]

Skype: i.semerhanov