SlideShare a Scribd company logo
1 of 46
Download to read offline
Selenium Camp 2012


Человекопонятные
     отчёты


     Deep Shift
             Labs

       25 февраля, 2012
         Киев, Украина
Дмитрий Якубовский



      Deep Shift
          Labs
 Java, PHP + тестировщик

  bear@deepshiftlabs.com
       @deep_bear
Удобные отчёты




           http://www.flickr.com/photos/telemax/3210586934/
Для кого отчёты?




разработчик                  тестировщик




                               клиент


          менеджер
1   Отчёты для разных людей




              http://www.flickr.com/photos/franco_coluzzi/4106012682
Действия
--открыть страницу
driver.open(MY_URL);

--заполнить поля
driver.type(LOGIN_LOCATOR, LOGIN);
driver.type(PASSW_LOCATOR, PASSW);

--нажать кнопку
driver.click(SUBMIT_LOCATOR);

--есть ‘logout’?
assert(driver.isElementPresent(LOUT_LOCATOR);
Повторение ошибки

        =

повторение действий
Объединение действий
driver.open(MY_URL);



driver.type(LOGIN_LOCATOR, ‘admin’);
                                          login()

driver.type(PASSW_LOCATOR, PASSW);
driver.click(SUBMIT_LOCATOR);
assert(driver.isElementPresent(LOUT_LOCATOR);
 ---- выполнение теста
driver.click(LOGOUT_LOCATOR);
Дробление действий



              driver.isElementPresent()
our.click()
              driver.click()
2   Иерархия действий




             http://www.flickr.com/photos/baggis/3576064503
3   Скриншоты до и после ошибки




                  /http://www.flickr.com/photos/28481088@N00/1032365178
assert() vs log()
   assert()                       log()
 TestNG                        log4j



                     TRACE                DEBUG
FATAL    OK
                                   INFO
                       FATAL
                                          WARN

                             ERROR
Форма логина



User name:


Password:          *******


             Remember me

                         Submit
Уровни ошибок



no label: WARN
no checkbox: ERROR
not logged in: FATAL
Беспокоить только по FATAL




             http://www.flickr.com/photos/edwin11/500787776
4   Различать уровни ошибок




                 http://www.flickr.com/photos/go_greener_oz/3046225225
log4j, FATAL


fatal:90 - FATAL Comparing position of
[2A0733] with position of [2A0733]

fatal:90 - FATAL
clearQuestionList.getQuestionDatabaseId
ByTitle normal end 5-4
log4j, TRACE
fatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle start 5-3
debug:94 - DEBUG EVENT (STARTED): Delete question [button ID=del_quest_3890], target: Filter-Sort-Form
debug:94 - DEBUG EVENT (STARTED): clickWithConfirmation, target: del_quest_3890
debug:94 - DEBUG EVENT (STARTED): isElementPresent, target: del_quest_3890
info:78 - INFO (ID = 580) EVENT (OK): isElementPresent, target: del_quest_3890 Values: Actual: true;
Screenshots: screen_170446632_010212.png (before) screen_170446632_010212.png (after)
debug:94 - DEBUG EVENT (STARTED): getScreenshot, target: screen_170448116_010212.png
info:78 - INFO (ID = 581) EVENT (OK): getScreenshot, target: screen_170448116_010212.png Screenshots:
screen_170448116_010212.png (after)
info:78 - INFO (ID = 579) EVENT (OK): clickWithConfirmation, target: del_quest_3890Screenshots:
screen_170446632_010212.png (before) screen_170448116_010212.png (after)
debug:94 - DEBUG EVENT (STARTED): waitForCondition, target:
(typeof(selenium.browserbot.getCurrentWindow().jQuery) != 'undefined' &&
selenium.browserbot.getCurrentWindow().jQuery.active == 0)
debug:94 - DEBUG EVENT (STARTED): getScreenshot, target: screen_170448536_010212.png
info:78 - INFO (ID = 583) EVENT (OK): getScreenshot, target: screen_170448536_010212.png Screenshots:
screen_170448536_010212.png (after)
info:78 - INFO (ID = 582) EVENT (OK): waitForCondition, target:
(typeof(selenium.browserbot.getCurrentWindow().jQuery) != 'undefined' &&
selenium.browserbot.getCurrentWindow().jQuery.active == 0)Screenshots: screen_170448116_010212.png (before)
screen_170448536_010212.png (after)
debug:94 - DEBUG EVENT (STARTED): isAlertPresent, target: alert
info:78 - INFO (ID = 584) EVENT (OK): isAlertPresent, target: alertValues: Actual: false; Screenshots:
screen_170448536_010212.png (before) screen_170448536_010212.png (after)
info:78 - INFO (ID = 578) EVENT (OK): Delete question [button ID=del_quest_3890], target: Filter-Sort-
FormScreenshots: screen_170446632_010212.png (before) screen_170448536_010212.png (after)
fatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle normal end 5-4
debug:94 - DEBUG EVENT (STARTED): getAttribute, target: //*/a[contains(text(),'[[T]]2A0733-')]@href
info:78 - INFO (ID = 585) EVENT (OK): getAttribute, target: //*/a[contains(text(),'[[T]]2A0733-')]@hrefValues:
Actual: question.php?q_id=3892;
5 Подробный, но легкочитаемый




                  http://www.flickr.com/photos/matins/3169353956/
1   Разные виды отчётов


2 Иерархия действий

3 Скриншоты до и после ошибки

4   Уровни ошибок


5   Подробный, но легкочитаемый
Решение проблем




           http://www.flickr.com/photos/rwangsa/452128709/
Наш отчёт
Наш отчёт
         Фильтр уровней, иерархии




Список    Собственно события
тестов         (со всеми
         деталями и иерархией)
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
1      Разные виды отчётов
             Собранные данные



встроенный генератор      промежуточный формат
                               (xml, csv, DB)

                       внешний генератор

                                           просмотрщик
                отчёт
Класс Event


    Имя         Локатор
                           Скриншот
                     ID
     Статус
                           Время

Исключение          Результат
Использование событий


{
    event1 = new Event(“Login”) ;

     -----   тест логина -----

    event1.closeOK();
}
2   Группировка действий

    {
        event1 = new Event(“Login”) ;
                            event(“open”);
                            event(“type”);
    ----- тест логина       event(“type”);
                            event(“click”);
                            event(“check Link”);

        event1.closeOK();
    }
3   Максимально подробный отчёт


    Каждое действие Selenium = Event




Обёртка для каждого метода драйвера
Обёртка

event = new Event (“isTextPresent”, text);
If (driver. isTextPresent(text)) {         try
    event.closeOK(“true”);
   return true;
}
event.closeOk(“false”);
return false;
4      Скриншоты до и после

            Страницу изменяют:

waitForPageToLoad()      select()
waitForFrameToLoad()     selectWindow()
typeText()               waitForCondition()
focus()                  open()
click()                  click()
doubleClick()
Действие click()

                       new Event(“click”);

                       isElementPresent();

lastScrFilename        click();


                       getScreenshot();

                       event.close();
5     Разные виды отчётов

    HTML   +   CSS   + Javascript !




                       http://www.flickr.com/photos/tambako/5690573629
Недостатки

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

• Дополнительный код

• Избыточные скриншоты

• Сложность внедрения
Преимущества


• Удобен для всех

• Иерархия

• Скриншоты до и после

• Фильтрация по уровням

• Подробности/в общем
Планы

• Скриншоты

• Подсветка

• Перемотка

• Агрегация
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Nerrvana
                    a(){}           Selenium RC

                          b(){}
           Selenium Hub              Selenium RC
a(){}         …                       …
b(){}
                      a(){}
                                    Selenium RC
                            b(){}
             Selenium Hub
                                     Selenium RC
Агрегация отчётов

Тесты на нескольких браузерах параллельно

Отчёты:

- Кроссбраузерность ошибки

- Скриншоты side-by-side

- Timings side-by-side
Вопросы
http://deepshiftlabs.com/reports
         (пример отчётов online)

                 bear@deepshiftlabs.com
                          (не стесняйтесь!)

More Related Content

What's hot

Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниz-tech
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Noveo
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Noveo
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
Оценка качества автотестов
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестовSQALab
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumvyacheslavmaslov
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Yandex
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0matroskin1980
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDEISsoft
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый стартAntonio
 
Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency InjectionPlatonov Sergey
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"SQALab
 
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QAFest
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияbearoff
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 

What's hot (20)

Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Оценка качества автотестов
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестов
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Selenium
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDE
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
 
Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency Injection
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
 
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 

Viewers also liked

Путеводитель в мире Selenium
Путеводитель в мире SeleniumПутеводитель в мире Selenium
Путеводитель в мире SeleniumKirill Klimov
 
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...dchernilevskiy
 
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014Yandex experience-in-screenshot-based-testing-seleniumcamp-2014
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014leonsabr
 
TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!Mikalai Alimenkou
 
How QA engineers could affect quality?
How QA engineers could affect quality?How QA engineers could affect quality?
How QA engineers could affect quality?Mikalai Alimenkou
 

Viewers also liked (7)

Путеводитель в мире Selenium
Путеводитель в мире SeleniumПутеводитель в мире Selenium
Путеводитель в мире Selenium
 
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
 
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014Yandex experience-in-screenshot-based-testing-seleniumcamp-2014
Yandex experience-in-screenshot-based-testing-seleniumcamp-2014
 
Allure Framework
Allure FrameworkAllure Framework
Allure Framework
 
TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!
 
Why testing take so long
Why testing take so longWhy testing take so long
Why testing take so long
 
How QA engineers could affect quality?
How QA engineers could affect quality?How QA engineers could affect quality?
How QA engineers could affect quality?
 

Similar to Человекопонятные отчёты

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?phpdevby
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumUladzimir Kryvenka
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)Anatoly Yumashev
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Oleksii Okhrymenko
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"QA Dnepropetrovsk Community (Ukraine)
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурцеAlexander Byndyu
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовPyNSK
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 

Similar to Человекопонятные отчёты (20)

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из Selenium
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурце
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 

Человекопонятные отчёты

  • 1. Selenium Camp 2012 Человекопонятные отчёты Deep Shift Labs 25 февраля, 2012 Киев, Украина
  • 2. Дмитрий Якубовский Deep Shift Labs Java, PHP + тестировщик bear@deepshiftlabs.com @deep_bear
  • 3. Удобные отчёты http://www.flickr.com/photos/telemax/3210586934/
  • 4. Для кого отчёты? разработчик тестировщик клиент менеджер
  • 5. 1 Отчёты для разных людей http://www.flickr.com/photos/franco_coluzzi/4106012682
  • 6. Действия --открыть страницу driver.open(MY_URL); --заполнить поля driver.type(LOGIN_LOCATOR, LOGIN); driver.type(PASSW_LOCATOR, PASSW); --нажать кнопку driver.click(SUBMIT_LOCATOR); --есть ‘logout’? assert(driver.isElementPresent(LOUT_LOCATOR);
  • 7. Повторение ошибки = повторение действий
  • 8. Объединение действий driver.open(MY_URL); driver.type(LOGIN_LOCATOR, ‘admin’); login() driver.type(PASSW_LOCATOR, PASSW); driver.click(SUBMIT_LOCATOR); assert(driver.isElementPresent(LOUT_LOCATOR); ---- выполнение теста driver.click(LOGOUT_LOCATOR);
  • 9. Дробление действий driver.isElementPresent() our.click() driver.click()
  • 10. 2 Иерархия действий http://www.flickr.com/photos/baggis/3576064503
  • 11. 3 Скриншоты до и после ошибки /http://www.flickr.com/photos/28481088@N00/1032365178
  • 12. assert() vs log() assert() log() TestNG log4j TRACE DEBUG FATAL OK INFO FATAL WARN ERROR
  • 13. Форма логина User name: Password: ******* Remember me Submit
  • 14. Уровни ошибок no label: WARN no checkbox: ERROR not logged in: FATAL
  • 15. Беспокоить только по FATAL http://www.flickr.com/photos/edwin11/500787776
  • 16. 4 Различать уровни ошибок http://www.flickr.com/photos/go_greener_oz/3046225225
  • 17. log4j, FATAL fatal:90 - FATAL Comparing position of [2A0733] with position of [2A0733] fatal:90 - FATAL clearQuestionList.getQuestionDatabaseId ByTitle normal end 5-4
  • 18. log4j, TRACE fatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle start 5-3 debug:94 - DEBUG EVENT (STARTED): Delete question [button ID=del_quest_3890], target: Filter-Sort-Form debug:94 - DEBUG EVENT (STARTED): clickWithConfirmation, target: del_quest_3890 debug:94 - DEBUG EVENT (STARTED): isElementPresent, target: del_quest_3890 info:78 - INFO (ID = 580) EVENT (OK): isElementPresent, target: del_quest_3890 Values: Actual: true; Screenshots: screen_170446632_010212.png (before) screen_170446632_010212.png (after) debug:94 - DEBUG EVENT (STARTED): getScreenshot, target: screen_170448116_010212.png info:78 - INFO (ID = 581) EVENT (OK): getScreenshot, target: screen_170448116_010212.png Screenshots: screen_170448116_010212.png (after) info:78 - INFO (ID = 579) EVENT (OK): clickWithConfirmation, target: del_quest_3890Screenshots: screen_170446632_010212.png (before) screen_170448116_010212.png (after) debug:94 - DEBUG EVENT (STARTED): waitForCondition, target: (typeof(selenium.browserbot.getCurrentWindow().jQuery) != 'undefined' && selenium.browserbot.getCurrentWindow().jQuery.active == 0) debug:94 - DEBUG EVENT (STARTED): getScreenshot, target: screen_170448536_010212.png info:78 - INFO (ID = 583) EVENT (OK): getScreenshot, target: screen_170448536_010212.png Screenshots: screen_170448536_010212.png (after) info:78 - INFO (ID = 582) EVENT (OK): waitForCondition, target: (typeof(selenium.browserbot.getCurrentWindow().jQuery) != 'undefined' && selenium.browserbot.getCurrentWindow().jQuery.active == 0)Screenshots: screen_170448116_010212.png (before) screen_170448536_010212.png (after) debug:94 - DEBUG EVENT (STARTED): isAlertPresent, target: alert info:78 - INFO (ID = 584) EVENT (OK): isAlertPresent, target: alertValues: Actual: false; Screenshots: screen_170448536_010212.png (before) screen_170448536_010212.png (after) info:78 - INFO (ID = 578) EVENT (OK): Delete question [button ID=del_quest_3890], target: Filter-Sort- FormScreenshots: screen_170446632_010212.png (before) screen_170448536_010212.png (after) fatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle normal end 5-4 debug:94 - DEBUG EVENT (STARTED): getAttribute, target: //*/a[contains(text(),'[[T]]2A0733-')]@href info:78 - INFO (ID = 585) EVENT (OK): getAttribute, target: //*/a[contains(text(),'[[T]]2A0733-')]@hrefValues: Actual: question.php?q_id=3892;
  • 19. 5 Подробный, но легкочитаемый http://www.flickr.com/photos/matins/3169353956/
  • 20. 1 Разные виды отчётов 2 Иерархия действий 3 Скриншоты до и после ошибки 4 Уровни ошибок 5 Подробный, но легкочитаемый
  • 21. Решение проблем http://www.flickr.com/photos/rwangsa/452128709/
  • 23. Наш отчёт Фильтр уровней, иерархии Список Собственно события тестов (со всеми деталями и иерархией)
  • 29. 1 Разные виды отчётов Собранные данные встроенный генератор промежуточный формат (xml, csv, DB) внешний генератор просмотрщик отчёт
  • 30. Класс Event Имя Локатор Скриншот ID Статус Время Исключение Результат
  • 31. Использование событий { event1 = new Event(“Login”) ; ----- тест логина ----- event1.closeOK(); }
  • 32. 2 Группировка действий { event1 = new Event(“Login”) ; event(“open”); event(“type”); ----- тест логина event(“type”); event(“click”); event(“check Link”); event1.closeOK(); }
  • 33. 3 Максимально подробный отчёт Каждое действие Selenium = Event Обёртка для каждого метода драйвера
  • 34. Обёртка event = new Event (“isTextPresent”, text); If (driver. isTextPresent(text)) { try event.closeOK(“true”); return true; } event.closeOk(“false”); return false;
  • 35. 4 Скриншоты до и после Страницу изменяют: waitForPageToLoad() select() waitForFrameToLoad() selectWindow() typeText() waitForCondition() focus() open() click() click() doubleClick()
  • 36. Действие click() new Event(“click”); isElementPresent(); lastScrFilename click(); getScreenshot(); event.close();
  • 37. 5 Разные виды отчётов HTML + CSS + Javascript ! http://www.flickr.com/photos/tambako/5690573629
  • 38. Недостатки • Нужно следить за закрытием событий • Дополнительный код • Избыточные скриншоты • Сложность внедрения
  • 39. Преимущества • Удобен для всех • Иерархия • Скриншоты до и после • Фильтрация по уровням • Подробности/в общем
  • 40. Планы • Скриншоты • Подсветка • Перемотка • Агрегация
  • 44. Nerrvana a(){} Selenium RC b(){} Selenium Hub Selenium RC a(){} … … b(){} a(){} Selenium RC b(){} Selenium Hub Selenium RC
  • 45. Агрегация отчётов Тесты на нескольких браузерах параллельно Отчёты: - Кроссбраузерность ошибки - Скриншоты side-by-side - Timings side-by-side
  • 46. Вопросы http://deepshiftlabs.com/reports (пример отчётов online) bear@deepshiftlabs.com (не стесняйтесь!)