Тестируем производительность с помощью selenium
TRANSCRIPT
www.luxoft-training.com
Performance testing with Selenium
SQA Days 19
www.luxoft-training.com
Обо мне
Александр Шиповалов Automation Engineer QA Expert in Luxoft Training
www.luxoft-training.com
Тестируем производительность с
помощью Selenium
www.luxoft-training.com
Предисловие
Или гоните в шею этого “шарлатана”
www.luxoft-training.com
Предисловие
“Один за всех и все на одного!”
www.luxoft-training.com
Где еще…
Тестирование внешнего вида; Тестирование защищенности; Тестирование desktop приложений; Тестирование мобильных приложений; Мало?
www.luxoft-training.com
Зачем все это надо
Есть же: Jmeter, Tsung, Locustio, Siege, YandexТанк…. Но хитрые требования: Время отклика экранной формы
Наличие автоматизированных функциональных тестов; Большое количество “guides, manuals, tutirials”… Обширное сообщество.
www.luxoft-training.com
Зачем все это надо
Соблазн велик; Особенно при небольшой нагрузке. Менеджмент напирает?
www.luxoft-training.com
“Автостопом по галактике”
“Я трачу на тебя время только по одной причине – мне его девать некуда”
www.luxoft-training.com
Давайте разделять
Клиентская производительность; Серверная производительность;
www.luxoft-training.com
Клиентская производительность
www.luxoft-training.com
В лоб
Logs; Отчеты; e. g. Allure …
www.luxoft-training.com
Logs and reports
Всегда доступно; Просто; Сложно агрегировать; Сложно трактовать результаты; Анти-паттерн.
www.luxoft-training.com
По хитрее
Browser mob proxy
www.luxoft-training.com
Browser mob proxy
Проблема с версиями; Что будет с Selenium 3; Совместимость?
www.luxoft-training.com
По хитрее и не бесплатно
HttpWatch
www.luxoft-training.com
HttpWatch
C# Ruby Javascript Internet Explorer and Mozilla Firefox HttpWatch Studio HAR
www.luxoft-training.com
По хитрее и не бесплатно
DynaTrace
www.luxoft-training.com
DynaTrace
dynaTrace AJAX Edition; Internet Explorer and Mozilla Firefox;
www.luxoft-training.com
Вкратце
Больше деталей – меньше надежность; Сложность с CI и отчетами; Совместимость? Безопасность?
www.luxoft-training.com
True way
Navigation timing API; https://www.w3.org/TR/navigation-timing/ IE, Firefox, Google Chrome, web-kit браузеры
www.luxoft-training.com
Navigation timing API
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.");
www.luxoft-training.com
Navigation timing API
В формате UTC; Совесть? Стандарт?
www.luxoft-training.com
Предварительные выводы
C клиентской производительностью все хорошо; По крайней мере неплохо; Есть из чего выбирать; Это неудивительно; Но будьте осторожны…
www.luxoft-training.com
Серверная производительность
www.luxoft-training.com
“Автостопом по галактике”
“Логика – замечательная вещь, но, как показал процесс эволюции, и у нее есть свои слабые места”
www.luxoft-training.com
Очевидно
Selenium Grid; Многопоточность;
www.luxoft-training.com
Selenium Grid
Hub не балансировщик; Многопоточность в тестах? Отчётность?
www.luxoft-training.com
Хитро
Jmeter plugins Есть нюансы: httpclient-4.2.6.jar httpcore-4.2.5.jar httpmime-4.2.6.jar
www.luxoft-training.com
“Автостопом по галактике”
“Он привык не замечать, что происходит вокруг, так ему было даже уютнее”
www.luxoft-training.com
Еще хитрее
Можно так же замерять время загрузки; Groovy, JavaScript, Bean Shell… Все смешалось в доме Облонских…
www.luxoft-training.com
Дорого
BlazeMeter; JavaScript или .jmx; Альтернативный рекордер для Jmeter; Настоящий браузер; Наглядно и быстро; Настоящие браузеры.
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();
www.luxoft-training.com
Blazemeter
Blazemeter Loadosophia; Облачные сервисы…. Мульти-тесты; Географические генераторы.
www.luxoft-training.com
True way
Blazemeter Taurus Только GET запросы В сценарном режиме Но зато никто не придерется
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
www.luxoft-training.com
Blazemeter Taurus
Python and Java; Nose and Junit; Только итерациями; Настоящая консоль.
www.luxoft-training.com
Еще выводы
С серверной производительностью все похуже Можно, но тяжело и дорого
www.luxoft-training.com
“Автостопом по галактике”
“Можешь не волноваться. Все выходит из - под контроля самым лучшим образом”
www.luxoft-training.com
Заключение
www.luxoft-training.com
Давайте жить дружно
Пусть каждый инструмент делает то, что умеет; А мы будем комбинировать; Не поддавайтесь соблазну.
www.luxoft-training.com
“Автостопом по галактике”
“Я предпочитаю быть счастливым,чем делать все как надо”
www.luxoft-training.com
Thank you
www.luxoft-training.com
Questions?