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

46
Selenium Camp 2012 Deep Shift Labs 25 февраля, 2012 Киев, Украина Человекопонятные отчёты

description

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

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

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

Selenium Camp 2012

Deep Shift

Labs25 февраля, 2012

Киев, Украина

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

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

Дмитрий Якубовский

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

[email protected]@deep_bear

Deep ShiftLabs

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

http://www.flickr.com/photos/telemax/3210586934/

Удобные отчёты

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

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

менеджер

клиент

Для кого отчёты?

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

1

http://www.flickr.com/photos/franco_coluzzi/4106012682

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

Page 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);

Действия

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

Повторение ошибки

повторение действий

=

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

driver.open(MY_URL);

driver.type(LOGIN_LOCATOR, ‘admin’);

driver.type(PASSW_LOCATOR, PASSW);

driver.click(SUBMIT_LOCATOR);

assert(driver.isElementPresent(LOUT_LOCATOR);

---- выполнение теста

driver.click(LOGOUT_LOCATOR);

‘user’

);

‘moderator’);

login()

Объединение действий

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

our.click()

driver.isElementPresent()

driver.click()

Дробление действий

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

http://www.flickr.com/photos/baggis/3576064503

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

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

3

/http://www.flickr.com/photos/28481088@N00/1032365178

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

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

assert()

TestNG log4j

FATAL OK TRACE DEBUG

FATAL

INFO

WARN

ERROR

log()

assert() vs log()

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

*******

User name:

Password:

Remember me

Submit

Форма логина

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

no label: WARN

no checkbox: ERROR

not logged in: FATAL

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

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

http://www.flickr.com/photos/edwin11/500787776

Беспокоить только по FATAL

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

4

http://www.flickr.com/photos/go_greener_oz/3046225225

Различать уровни ошибок

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

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

fatal:90 - FATAL clearQuestionList.getQuestionDatabaseIdByTitle normal end 5-4

log4j, FATAL

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

fatal: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;

log4j, TRACE

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

5

http://www.flickr.com/photos/matins/3169353956/

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

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

5

4

3

2

Разные виды отчётов1

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

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

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

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

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

Решение проблем

http://www.flickr.com/photos/rwangsa/452128709/

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

Наш отчёт

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

Наш отчёт

Списоктестов

Фильтр уровней, иерархии

Собственно события (со всеми

деталями и иерархией)

Page 24: Человекопонятные отчёты
Page 25: Человекопонятные отчёты
Page 26: Человекопонятные отчёты
Page 27: Человекопонятные отчёты
Page 28: Человекопонятные отчёты
Page 29: Человекопонятные отчёты

Разные виды отчётов

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

1

встроенный генератор

Собранные данные

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

отчётпросмотрщик

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

Класс Event

Имя

Статус

Исключение

СкриншотЛокатор

Результат

ВремяID

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

Использование событий

{ event1 = new Event(“Login”) ;

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

event1.closeOK(); }

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

Группировка действий

{ event1 = new Event(“Login”) ;

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

event1.closeOK(); }

event(“open”);

event(“type”);

event(“type”);

event(“click”);

event(“check Link”);

2

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

Максимально подробный отчёт

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

3

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

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

Обёртка

event = new Event (“isTextPresent”, text);If (driver. isTextPresent(text)) {

event.closeOK(“true”); return true;}event.closeOk(“false”);return false;

try

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

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

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

4

select()selectWindow()waitForCondition()open()click()

waitForPageToLoad()waitForFrameToLoad()typeText()focus()click()doubleClick()

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

Действие click()

lastScrFilename

new Event(“click”);

event.close();

getScreenshot();

isElementPresent();

click();

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

Разные виды отчётов

HTML + CSS + Javascript !

5

http://www.flickr.com/photos/tambako/5690573629

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

Недостатки

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

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

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

• Сложность внедрения

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

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

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

• Иерархия

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

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

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

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

Планы

• Скриншоты

• Подсветка

• Перемотка

• Агрегация

Page 41: Человекопонятные отчёты
Page 42: Человекопонятные отчёты
Page 43: Человекопонятные отчёты
Page 44: Человекопонятные отчёты

a(){}

b(){}

Selenium Hub

Selenium RC

Selenium RC

Selenium RC

Selenium RC

a(){}

a(){}

b(){}

b(){}Selenium Hub

Nerrvana

… …

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

Агрегация отчётов

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

Отчёты:

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

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

- Timings side-by-side

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

Вопросы

[email protected] (не стесняйтесь!)

http://deepshiftlabs.com/reports(пример отчётов online)