O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

1.419 visualizações

Publicada em

Доклад на конференции 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

Publicada em: Tecnologia
  • Seja o primeiro a comentar

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

  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 (не стесняйтесь!)

×