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,...
Повторение ошибки        =повторение действий
Объединение действийdriver.open(MY_URL);driver.type(LOGIN_LOCATOR, ‘admin’);                                          logi...
Дробление действий              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    ...
Форма логинаUser name:Password:          *******             Remember me                         Submit
Уровни ошибокno label: WARNno checkbox: ERRORnot logged in: FATAL
Беспокоить только по FATAL             http://www.flickr.com/photos/edwin11/500787776
4   Различать уровни ошибок                 http://www.flickr.com/photos/go_greener_oz/3046225225
log4j, FATALfatal:90 - FATAL Comparing position of[2A0733] with position of [2A0733]fatal:90 - FATALclearQuestionList.getQ...
log4j, TRACEfatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle start 5-3debug:94 - DEBUG EVENT (STARTED): Del...
5 Подробный, но легкочитаемый                  http://www.flickr.com/photos/matins/3169353956/
1   Разные виды отчётов2 Иерархия действий3 Скриншоты до и после ошибки4   Уровни ошибок5   Подробный, но легкочитаемый
Решение проблем           http://www.flickr.com/photos/rwangsa/452128709/
Наш отчёт
Наш отчёт         Фильтр уровней, иерархииСписок    Собственно событиятестов         (со всеми         деталями и иерархией)
1      Разные виды отчётов             Собранные данныевстроенный генератор      промежуточный формат                     ...
Класс Event    Имя         Локатор                           Скриншот                     ID     Статус                   ...
Использование событий{    event1 = new Event(“Login”) ;     -----   тест логина -----    event1.closeOK();}
2   Группировка действий    {        event1 = new Event(“Login”) ;                            event(“open”);              ...
3   Максимально подробный отчёт    Каждое действие Selenium = EventОбёртка для каждого метода драйвера
Обёрткаevent = new Event (“isTextPresent”, text);If (driver. isTextPresent(text)) {         try    event.closeOK(“true”); ...
4      Скриншоты до и после            Страницу изменяют:waitForPageToLoad()      select()waitForFrameToLoad()     selectW...
Действие click()                       new Event(“click”);                       isElementPresent();lastScrFilename       ...
5     Разные виды отчётов    HTML   +   CSS   + Javascript !                       http://www.flickr.com/photos/tambako/56...
Недостатки• Нужно следить за закрытием событий• Дополнительный код• Избыточные скриншоты• Сложность внедрения
Преимущества• Удобен для всех• Иерархия• Скриншоты до и после• Фильтрация по уровням• Подробности/в общем
Планы• Скриншоты• Подсветка• Перемотка• Агрегация
Nerrvana                    a(){}           Selenium RC                          b(){}           Selenium Hub             ...
Агрегация отчётовТесты на нескольких браузерах параллельноОтчёты:- Кроссбраузерность ошибки- Скриншоты side-by-side- Timin...
Вопросыhttp://deepshiftlabs.com/reports         (пример отчётов online)                 bear@deepshiftlabs.com            ...
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Человекопонятные отчёты
Upcoming SlideShare
Loading in...5
×

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

1,199
-1

Published on

Доклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#quick-reliable-tests
Видео: http://video.yandex.ru/users/xpinjection/view/119/#hq
Текст: http://www.deepshiftlabs.com/sel_blog/?p=1930&lang=ru

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,199
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Selenium Camp 2012Человекопонятные отчёты Deep Shift Labs 25 февраля, 2012 Киев, Украина
  2. 2. Дмитрий Якубовский Deep Shift Labs Java, PHP + тестировщик bear@deepshiftlabs.com @deep_bear
  3. 3. Удобные отчёты http://www.flickr.com/photos/telemax/3210586934/
  4. 4. Для кого отчёты?разработчик тестировщик клиент менеджер
  5. 5. 1 Отчёты для разных людей http://www.flickr.com/photos/franco_coluzzi/4106012682
  6. 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. 7. Повторение ошибки =повторение действий
  8. 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. 9. Дробление действий driver.isElementPresent()our.click() driver.click()
  10. 10. 2 Иерархия действий http://www.flickr.com/photos/baggis/3576064503
  11. 11. 3 Скриншоты до и после ошибки /http://www.flickr.com/photos/28481088@N00/1032365178
  12. 12. assert() vs log() assert() log() TestNG log4j TRACE DEBUGFATAL OK INFO FATAL WARN ERROR
  13. 13. Форма логинаUser name:Password: ******* Remember me Submit
  14. 14. Уровни ошибокno label: WARNno checkbox: ERRORnot logged in: FATAL
  15. 15. Беспокоить только по FATAL http://www.flickr.com/photos/edwin11/500787776
  16. 16. 4 Различать уровни ошибок http://www.flickr.com/photos/go_greener_oz/3046225225
  17. 17. log4j, FATALfatal:90 - FATAL Comparing position of[2A0733] with position of [2A0733]fatal:90 - FATALclearQuestionList.getQuestionDatabaseIdByTitle normal end 5-4
  18. 18. log4j, TRACEfatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle start 5-3debug:94 - DEBUG EVENT (STARTED): Delete question [button ID=del_quest_3890], target: Filter-Sort-Formdebug:94 - DEBUG EVENT (STARTED): clickWithConfirmation, target: del_quest_3890debug:94 - DEBUG EVENT (STARTED): isElementPresent, target: del_quest_3890info: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.pnginfo: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.pnginfo: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: alertinfo: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-4debug:94 - DEBUG EVENT (STARTED): getAttribute, target: //*/a[contains(text(),[[T]]2A0733-)]@hrefinfo:78 - INFO (ID = 585) EVENT (OK): getAttribute, target: //*/a[contains(text(),[[T]]2A0733-)]@hrefValues:Actual: question.php?q_id=3892;
  19. 19. 5 Подробный, но легкочитаемый http://www.flickr.com/photos/matins/3169353956/
  20. 20. 1 Разные виды отчётов2 Иерархия действий3 Скриншоты до и после ошибки4 Уровни ошибок5 Подробный, но легкочитаемый
  21. 21. Решение проблем http://www.flickr.com/photos/rwangsa/452128709/
  22. 22. Наш отчёт
  23. 23. Наш отчёт Фильтр уровней, иерархииСписок Собственно событиятестов (со всеми деталями и иерархией)
  24. 24. 1 Разные виды отчётов Собранные данныевстроенный генератор промежуточный формат (xml, csv, DB) внешний генератор просмотрщик отчёт
  25. 25. Класс Event Имя Локатор Скриншот ID Статус ВремяИсключение Результат
  26. 26. Использование событий{ event1 = new Event(“Login”) ; ----- тест логина ----- event1.closeOK();}
  27. 27. 2 Группировка действий { event1 = new Event(“Login”) ; event(“open”); event(“type”); ----- тест логина event(“type”); event(“click”); event(“check Link”); event1.closeOK(); }
  28. 28. 3 Максимально подробный отчёт Каждое действие Selenium = EventОбёртка для каждого метода драйвера
  29. 29. Обёрткаevent = new Event (“isTextPresent”, text);If (driver. isTextPresent(text)) { try event.closeOK(“true”); return true;}event.closeOk(“false”);return false;
  30. 30. 4 Скриншоты до и после Страницу изменяют:waitForPageToLoad() select()waitForFrameToLoad() selectWindow()typeText() waitForCondition()focus() open()click() click()doubleClick()
  31. 31. Действие click() new Event(“click”); isElementPresent();lastScrFilename click(); getScreenshot(); event.close();
  32. 32. 5 Разные виды отчётов HTML + CSS + Javascript ! http://www.flickr.com/photos/tambako/5690573629
  33. 33. Недостатки• Нужно следить за закрытием событий• Дополнительный код• Избыточные скриншоты• Сложность внедрения
  34. 34. Преимущества• Удобен для всех• Иерархия• Скриншоты до и после• Фильтрация по уровням• Подробности/в общем
  35. 35. Планы• Скриншоты• Подсветка• Перемотка• Агрегация
  36. 36. Nerrvana a(){} Selenium RC b(){} Selenium Hub Selenium RCa(){} … …b(){} a(){} Selenium RC b(){} Selenium Hub Selenium RC
  37. 37. Агрегация отчётовТесты на нескольких браузерах параллельноОтчёты:- Кроссбраузерность ошибки- Скриншоты side-by-side- Timings side-by-side
  38. 38. Вопросыhttp://deepshiftlabs.com/reports (пример отчётов online) bear@deepshiftlabs.com (не стесняйтесь!)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×