SlideShare a Scribd company logo
1 of 11
Как и зачем делать свой framework
                        Как это делает Артем Розуменко

Dnepr mini conference                           10/29/2011   1
Начало...




            ...тваю ж ... и че мне с этим делать?

Dnepr mini conference                               2
Попытка не пытка ... шаг 1

JUnit + Selenium
package com.example.tests;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class NewTest extends SeleneseTestCase
{
             public void setUp() throws Exception {                                      Локаторы   в коде
                          setUp("http://www.google.com/", "*firefox");
             }
             public void testNew() throws Exception {
                          selenium.open("/");
                          selenium.type("q", "selenium rc");
                          selenium.click("btnG");
                          selenium.waitForPageToLoad("30000");
                          assertTrue(selenium.isTextPresent("Results * for selenium rc"));
             }
}                                                                              Пользовательские
                                                                              настройки и данные
                                                                                    зашиты

    Dnepr mini conference                                                                                    3
Отделить мух от котлет
Locators.properties

URL = http://www.google.com
input_fld = q
Srch_btn = BtnG


                                                                                      User.properties

                                                                          Browser = *firefox
                                                                          Text_4_srch = selenium rc
                                                                          Pageload = 30000
                                                                          Result_txt = Results * for selenium rc


      public void setUp() throws Exception {
                   setUp(getProperty(“URL”), getData(“Browser”));
      }
      public void testNew() throws Exception {
                   selenium.open("/");
                   selenium.type(getProperty(“input_fld”), getData(“Text_4_srch”));
                   selenium.click(getProperty(“Srch_btn”));
                   selenium.waitForPageToLoad(getData(“Pageload”));
                   assertTrue(selenium.isTextPresent(getData(“Result_txt”));
      }


     Dnepr mini conference                                                                                   4
Попытка не пытка ... шаг 2
Registration.java    Send mail. java    Receive mail. java




@before class
public void setUp() throws Exception {
…}
@test
public void openGoogle() throws Exception {
…}
@test
public void search4RC() throws Exception {
…}
@test
public void openGmail() throws Exception(){
…}
@test
public void createAcc() throws Exception(){
…}
@test
public void doCreated() throws Exception(){
…}
@test……
@test
public void deleteAcc() throws Exception(){
…}




          Как-то много повторений одних и тех же действий ... хмм
      Dnepr mini conference                                         5
Убрать повторения



@test
public void openGmail() throws Exception(){
…}
@test
public void createAcc() throws Exception(){
…}
@test
public void doCreated() throws Exception(){
…}
@test
public void deleteAcc() throws Exception(){
…}
@test
public void doDeleted() throws Exception(){
…}



                                          Helper.RegisterNewUser(String userName, String pwd)
                                          Helper.DeleteUser(String userName, String pwd)

    Dnepr mini conference                                                               6
И что же получается?
                         Програмный код
              Тест 1               Це                 Helper 1
                             дальссе, насяльн
              Тест 2                                  Helper 2
                                  ика?
              Тест 3                                  Helper 3
              Тест 4                                  Helper 4
              Тест 5                                  Helper 5
              Тест 6                                  Helper 6
              Тест 7                                  Helper 7




        Locator.properties                      User.properties



Footer Text                                                       7
Опять мухи и котлеты
        Тесты                    Програмный код

          Тест 1                Helper 1   Helper 4

          Тест 2                Helper 2   Helper 5

          Тест 3                Helper 3   Helper 6

          Тест 4
                        GMail
          Тест 5
          Тест 6
          Тест 7


  Locator.properties


    User.properties

Dnepr mini conference                                 8
И как это выглядит?

    Test.xls       Locator.prop    User.prop
                                                  Code.jar




  CMD
    C:/>java –jar code.jar




                                                Report in
      Detailed         Full size                mail with
     Report.html     screenshots                  small
                                               screenshots



Footer Text                                              10/31/2011   9
Зачем это все делать?
Цели которые стоит преследовать при создании:
1. Цена внесения изменений.
    1.1. Если надо добавить тесты, это делается без
    вмешательства в код
    1.2. Если надо изменить код, то при этом не затрагиваются
    тесты
2. Способность интеграции в continues integration model.

3. Развертывание окружения для проведения автоматизированного
тестирования должно занимать минимум времени и требовать
минимум вспомагательного ПО.

4. Репортинг должен быть полным, понятным и таким, который
можно показать не только команде, но и заказчику.




 Dnepr mini conference                                          10
Всем спасибо, вопросы в
        студию.

                                            С вами был
                                Артем Розуменко
                        Email: artyom.rozumenko@gmail.com
                          Web: http://qastories.blogspot.com
Dnepr mini conference                              10/31/2011   11

More Related Content

What's hot

Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Anton Moiseenko
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикIT61
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Elias Fofanov
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...sqadays8
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiMichael Chernobrov
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияSQALab
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Anton Moiseenko
 
тесты с фикстурами
тесты с фикстурамитесты с фикстурами
тесты с фикстурамиIvan Grishaev
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеElias Fofanov
 

What's hot (20)

Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
 
бегун
бегунбегун
бегун
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчик
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Bytecode
BytecodeBytecode
Bytecode
 
JRebel
JRebelJRebel
JRebel
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестирования
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
 
тесты с фикстурами
тесты с фикстурамитесты с фикстурами
тесты с фикстурами
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзе
 

Similar to Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?phpdevby
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5Technopark
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Увеличиваем мощь фреймворка Kdt & code`s generator
Увеличиваем мощь фреймворка   Kdt & code`s generatorУвеличиваем мощь фреймворка   Kdt & code`s generator
Увеличиваем мощь фреймворка Kdt & code`s generatorSQALab
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderSQALab
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 

Similar to Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?" (20)

Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Seamy side of autotests
Seamy side of autotestsSeamy side of autotests
Seamy side of autotests
 
Tdd php
Tdd phpTdd php
Tdd php
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Увеличиваем мощь фреймворка Kdt & code`s generator
Увеличиваем мощь фреймворка   Kdt & code`s generatorУвеличиваем мощь фреймворка   Kdt & code`s generator
Увеличиваем мощь фреймворка Kdt & code`s generator
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 

More from QA Dnepropetrovsk Community (Ukraine)

Работа тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйРабота тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйQA Dnepropetrovsk Community (Ukraine)
 
тестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровьятестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровьяQA Dnepropetrovsk Community (Ukraine)
 
Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов QA Dnepropetrovsk Community (Ukraine)
 
Профессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях ДнепропетровскаПрофессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях ДнепропетровскаQA Dnepropetrovsk Community (Ukraine)
 
TPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взросломуTPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взросломуQA Dnepropetrovsk Community (Ukraine)
 
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...QA Dnepropetrovsk Community (Ukraine)
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"QA Dnepropetrovsk Community (Ukraine)
 
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"QA Dnepropetrovsk Community (Ukraine)
 
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteАвтоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteQA Dnepropetrovsk Community (Ukraine)
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”QA Dnepropetrovsk Community (Ukraine)
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от MicrosoftQA Dnepropetrovsk Community (Ukraine)
 
Тест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTestТест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTestQA Dnepropetrovsk Community (Ukraine)
 

More from QA Dnepropetrovsk Community (Ukraine) (20)

Работа тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйРабота тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор Малый
 
тестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровьятестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровья
 
When qa sucks
When qa sucksWhen qa sucks
When qa sucks
 
Most typical mistakes of Russians in English
Most typical mistakes of Russians in EnglishMost typical mistakes of Russians in English
Most typical mistakes of Russians in English
 
Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов
 
Профессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях ДнепропетровскаПрофессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях Днепропетровска
 
Ретроспектива в тестировании
Ретроспектива в тестированииРетроспектива в тестировании
Ретроспектива в тестировании
 
Impact Analysis в тестировании
Impact Analysis в тестированииImpact Analysis в тестировании
Impact Analysis в тестировании
 
TPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взросломуTPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взрослому
 
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
 
Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"
 
Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
 
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"
Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"
 
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteАвтоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от Microsoft
 
Project Management Systems
Project Management SystemsProject Management Systems
Project Management Systems
 
Тест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTestТест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTest
 
Автопарк требований
Автопарк требованийАвтопарк требований
Автопарк требований
 

Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

  • 1. Как и зачем делать свой framework Как это делает Артем Розуменко Dnepr mini conference 10/29/2011 1
  • 2. Начало... ...тваю ж ... и че мне с этим делать? Dnepr mini conference 2
  • 3. Попытка не пытка ... шаг 1 JUnit + Selenium package com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern; public class NewTest extends SeleneseTestCase { public void setUp() throws Exception { Локаторы в коде setUp("http://www.google.com/", "*firefox"); } public void testNew() throws Exception { selenium.open("/"); selenium.type("q", "selenium rc"); selenium.click("btnG"); selenium.waitForPageToLoad("30000"); assertTrue(selenium.isTextPresent("Results * for selenium rc")); } } Пользовательские настройки и данные зашиты Dnepr mini conference 3
  • 4. Отделить мух от котлет Locators.properties URL = http://www.google.com input_fld = q Srch_btn = BtnG User.properties Browser = *firefox Text_4_srch = selenium rc Pageload = 30000 Result_txt = Results * for selenium rc public void setUp() throws Exception { setUp(getProperty(“URL”), getData(“Browser”)); } public void testNew() throws Exception { selenium.open("/"); selenium.type(getProperty(“input_fld”), getData(“Text_4_srch”)); selenium.click(getProperty(“Srch_btn”)); selenium.waitForPageToLoad(getData(“Pageload”)); assertTrue(selenium.isTextPresent(getData(“Result_txt”)); } Dnepr mini conference 4
  • 5. Попытка не пытка ... шаг 2 Registration.java Send mail. java Receive mail. java @before class public void setUp() throws Exception { …} @test public void openGoogle() throws Exception { …} @test public void search4RC() throws Exception { …} @test public void openGmail() throws Exception(){ …} @test public void createAcc() throws Exception(){ …} @test public void doCreated() throws Exception(){ …} @test…… @test public void deleteAcc() throws Exception(){ …} Как-то много повторений одних и тех же действий ... хмм Dnepr mini conference 5
  • 6. Убрать повторения @test public void openGmail() throws Exception(){ …} @test public void createAcc() throws Exception(){ …} @test public void doCreated() throws Exception(){ …} @test public void deleteAcc() throws Exception(){ …} @test public void doDeleted() throws Exception(){ …} Helper.RegisterNewUser(String userName, String pwd) Helper.DeleteUser(String userName, String pwd) Dnepr mini conference 6
  • 7. И что же получается? Програмный код Тест 1 Це Helper 1 дальссе, насяльн Тест 2 Helper 2 ика? Тест 3 Helper 3 Тест 4 Helper 4 Тест 5 Helper 5 Тест 6 Helper 6 Тест 7 Helper 7 Locator.properties User.properties Footer Text 7
  • 8. Опять мухи и котлеты Тесты Програмный код Тест 1 Helper 1 Helper 4 Тест 2 Helper 2 Helper 5 Тест 3 Helper 3 Helper 6 Тест 4 GMail Тест 5 Тест 6 Тест 7 Locator.properties User.properties Dnepr mini conference 8
  • 9. И как это выглядит? Test.xls Locator.prop User.prop Code.jar CMD C:/>java –jar code.jar Report in Detailed Full size mail with Report.html screenshots small screenshots Footer Text 10/31/2011 9
  • 10. Зачем это все делать? Цели которые стоит преследовать при создании: 1. Цена внесения изменений. 1.1. Если надо добавить тесты, это делается без вмешательства в код 1.2. Если надо изменить код, то при этом не затрагиваются тесты 2. Способность интеграции в continues integration model. 3. Развертывание окружения для проведения автоматизированного тестирования должно занимать минимум времени и требовать минимум вспомагательного ПО. 4. Репортинг должен быть полным, понятным и таким, который можно показать не только команде, но и заказчику. Dnepr mini conference 10
  • 11. Всем спасибо, вопросы в студию. С вами был Артем Розуменко Email: artyom.rozumenko@gmail.com Web: http://qastories.blogspot.com Dnepr mini conference 10/31/2011 11