Тестируем производительность с помощью selenium

45
www.luxoft-training.com Performance testing with Selenium SQA Days 19

Upload: sqalab

Post on 16-Apr-2017

1.664 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Performance testing with Selenium

SQA Days 19

Page 2: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Обо мне

Александр Шиповалов Automation Engineer QA Expert in Luxoft Training

@[email protected]

Page 3: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Тестируем производительность с

помощью Selenium

Page 4: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Предисловие

Или гоните в шею этого “шарлатана”

Page 5: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Предисловие

“Один за всех и все на одного!”

Page 6: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Где еще…

Тестирование внешнего вида; Тестирование защищенности; Тестирование desktop приложений; Тестирование мобильных приложений; Мало?

Page 7: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Зачем все это надо

Есть же: Jmeter, Tsung, Locustio, Siege, YandexТанк…. Но хитрые требования:­ Время отклика экранной формы

Наличие автоматизированных функциональных тестов; Большое количество “guides, manuals, tutirials”… Обширное сообщество.

Page 8: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Зачем все это надо

Соблазн велик; Особенно при небольшой нагрузке. Менеджмент напирает?

Page 9: Тестируем производительность с помощью Selenium

www.luxoft-training.com

“Автостопом по галактике”

“Я трачу на тебя время только по одной причине – мне его девать некуда”

Page 10: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Давайте разделять

Клиентская производительность; Серверная производительность;

Page 11: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Клиентская производительность

Page 12: Тестируем производительность с помощью Selenium

www.luxoft-training.com

В лоб

Logs; Отчеты; e. g. Allure …

Page 13: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Logs and reports

Всегда доступно; Просто; Сложно агрегировать; Сложно трактовать результаты; Анти-паттерн.

Page 14: Тестируем производительность с помощью Selenium

www.luxoft-training.com

По хитрее

Browser mob proxy

Page 15: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Browser mob proxy

Проблема с версиями; Что будет с Selenium 3; Совместимость?

Page 16: Тестируем производительность с помощью Selenium

www.luxoft-training.com

По хитрее и не бесплатно

HttpWatch

Page 17: Тестируем производительность с помощью Selenium

www.luxoft-training.com

HttpWatch

C# Ruby Javascript Internet Explorer and Mozilla Firefox HttpWatch Studio HAR

Page 18: Тестируем производительность с помощью Selenium

www.luxoft-training.com

По хитрее и не бесплатно

DynaTrace

Page 19: Тестируем производительность с помощью Selenium

www.luxoft-training.com

DynaTrace

dynaTrace AJAX Edition; Internet Explorer and Mozilla Firefox;

Page 20: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Вкратце

Больше деталей – меньше надежность; Сложность с CI и отчетами; Совместимость? Безопасность?

Page 21: Тестируем производительность с помощью Selenium

www.luxoft-training.com

True way

Navigation timing API; https://www.w3.org/TR/navigation-timing/ IE, Firefox, Google Chrome, web-kit браузеры

Page 22: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Navigation timing API

Page 23: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Пример driver.get(SOME_URL);

JavascriptExecutor js = (JavascriptExecutor) driver;

// Получаем время Load Event End (окончание загрузки страницы)

long loadEventEnd = (Long) js.executeScript("return window.performance.timing.loadEventEnd;");

// Получаем Navigation Event Start (начало перехода)

long navigationStart = (Long) js.executeScript("return window.performance.timing.navigationStart;");

// Разница между Load Event End и Navigation Event Start - это время загрузки страницы

System.out.println("Page Load Time is " + (loadEventEnd - navigationStart)/1000 + " seconds.");

Page 24: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Navigation timing API

В формате UTC; Совесть? Стандарт?

Page 25: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Предварительные выводы

C клиентской производительностью все хорошо; По крайней мере неплохо; Есть из чего выбирать; Это неудивительно; Но будьте осторожны…

Page 26: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Серверная производительность

Page 27: Тестируем производительность с помощью Selenium

www.luxoft-training.com

“Автостопом по галактике”

“Логика – замечательная вещь, но, как показал процесс эволюции, и у нее есть свои слабые места”

Page 28: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Очевидно

Selenium Grid; Многопоточность;

Page 29: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Selenium Grid

Hub не балансировщик; Многопоточность в тестах? Отчётность?

Page 30: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Хитро

Jmeter plugins Есть нюансы:­ httpclient-4.2.6.jar­ httpcore-4.2.5.jar­ httpmime-4.2.6.jar

Page 31: Тестируем производительность с помощью Selenium

www.luxoft-training.com

“Автостопом по галактике”

“Он привык не замечать, что происходит вокруг, так ему было даже уютнее”

Page 32: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Еще хитрее

Можно так же замерять время загрузки; Groovy, JavaScript, Bean Shell… Все смешалось в доме Облонских…

Page 33: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Дорого

BlazeMeter; JavaScript или .jmx; Альтернативный рекордер для Jmeter; Настоящий браузер; Наглядно и быстро; Настоящие браузеры.

Page 34: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Пример

var pkg = JavaImporter(org.openqa.selenium);

var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);

var wait = new support_ui.WebDriverWait(WDS.browser, 5000);

WDS.sampleResult.sampleStart();

WDS.browser.manage().window().maximize();

WDS.browser.get("http://localhost");

var searchField = WDS.browser.findElement(pkg.By.id("some_element_id"));

searchField.click();WDS.log.info(WDS.name, "has logged an entry");

WDS.sampleResult.sampleEnd();

Page 35: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Blazemeter

Blazemeter Loadosophia; Облачные сервисы…. Мульти-тесты; Географические генераторы.

Page 36: Тестируем производительность с помощью Selenium

www.luxoft-training.com

True way

Blazemeter Taurus Только GET запросы В сценарном режиме Но зато никто не придерется

Page 37: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Taurus

browser: Firefox # available browsers are: ["Firefox", "Chrome", "Ie", "Opera"]

timeout: 10 # global scenario timeout for connecting, receiving results, 30 seconds by default

think-time: 1s500ms # global scenario delay between each request

requests:

- url: http://demo.blazemeter.com/ # url to open, only get method is supported

assert:

- contains:

- blazemeter # list of search patterns

- Trusted

Page 38: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Blazemeter Taurus

Python and Java; Nose and Junit; Только итерациями; Настоящая консоль.

Page 39: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Еще выводы

С серверной производительностью все похуже Можно, но тяжело и дорого

Page 40: Тестируем производительность с помощью Selenium

www.luxoft-training.com

“Автостопом по галактике”

“Можешь не волноваться. Все выходит из - под контроля самым лучшим образом”

Page 41: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Заключение

Page 42: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Давайте жить дружно

Пусть каждый инструмент делает то, что умеет; А мы будем комбинировать; Не поддавайтесь соблазну.

Page 43: Тестируем производительность с помощью Selenium

www.luxoft-training.com

“Автостопом по галактике”

“Я предпочитаю быть счастливым,чем делать все как надо”

Page 44: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Thank you

Page 45: Тестируем производительность с помощью Selenium

www.luxoft-training.com

Questions?