Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,048 views

Published on

Доклад Александра Шиповалова на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. www.luxoft-training.com Performance testing with Selenium SQA Days 19
  2. 2. www.luxoft-training.com Обо мне  Александр Шиповалов  Automation Engineer  QA Expert in Luxoft Training @shipovaloff alshipovalov ashipovalov@gmail.com
  3. 3. www.luxoft-training.com Тестируем производительность с помощью Selenium
  4. 4. www.luxoft-training.com Предисловие  Или гоните в шею этого “шарлатана”
  5. 5. www.luxoft-training.com Предисловие  “Один за всех и все на одного!”
  6. 6. www.luxoft-training.com Где еще…  Тестирование внешнего вида;  Тестирование защищенности;  Тестирование desktop приложений;  Тестирование мобильных приложений;  Мало?
  7. 7. www.luxoft-training.com Зачем все это надо  Есть же: Jmeter, Tsung, Locustio, Siege, YandexТанк….  Но хитрые требования: - Время отклика экранной формы  Наличие автоматизированных функциональных тестов;  Большое количество “guides, manuals, tutirials”…  Обширное сообщество.
  8. 8. www.luxoft-training.com Зачем все это надо  Соблазн велик;  Особенно при небольшой нагрузке.  Менеджмент напирает?
  9. 9. www.luxoft-training.com “Автостопом по галактике” “Я трачу на тебя время только по одной причине – мне его девать некуда”
  10. 10. www.luxoft-training.com Давайте разделять  Клиентская производительность;  Серверная производительность;
  11. 11. www.luxoft-training.com Клиентская производительность
  12. 12. www.luxoft-training.com В лоб  Logs;  Отчеты;  e. g. Allure  …
  13. 13. www.luxoft-training.com Logs and reports  Всегда доступно;  Просто;  Сложно агрегировать;  Сложно трактовать результаты;  Анти-паттерн.
  14. 14. www.luxoft-training.com По хитрее  Browser mob proxy
  15. 15. www.luxoft-training.com Browser mob proxy  Проблема с версиями;  Что будет с Selenium 3;  Совместимость?
  16. 16. www.luxoft-training.com По хитрее и не бесплатно  HttpWatch
  17. 17. www.luxoft-training.com HttpWatch  C#  Ruby  Javascript  Internet Explorer and Mozilla Firefox  HttpWatch Studio   HAR
  18. 18. www.luxoft-training.com По хитрее и не бесплатно  DynaTrace
  19. 19. www.luxoft-training.com DynaTrace  dynaTrace AJAX Edition;  Internet Explorer and Mozilla Firefox;
  20. 20. www.luxoft-training.com Вкратце  Больше деталей – меньше надежность;  Сложность с CI и отчетами;  Совместимость?  Безопасность?
  21. 21. www.luxoft-training.com True way  Navigation timing API;  https://www.w3.org/TR/navigation-timing/  IE, Firefox, Google Chrome, web-kit браузеры
  22. 22. www.luxoft-training.com Navigation timing API
  23. 23. 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.");
  24. 24. www.luxoft-training.com Navigation timing API  В формате UTC;  Совесть? Стандарт?
  25. 25. www.luxoft-training.com Предварительные выводы  C клиентской производительностью все хорошо;  По крайней мере неплохо;  Есть из чего выбирать;  Это неудивительно;  Но будьте осторожны…
  26. 26. www.luxoft-training.com Серверная производительность
  27. 27. www.luxoft-training.com “Автостопом по галактике” “Логика – замечательная вещь, но, как показал процесс эволюции, и у нее есть свои слабые места”
  28. 28. www.luxoft-training.com Очевидно  Selenium Grid;  Многопоточность;
  29. 29. www.luxoft-training.com Selenium Grid  Hub не балансировщик;  Многопоточность в тестах?  Отчётность?
  30. 30. www.luxoft-training.com Хитро  Jmeter plugins  Есть нюансы: - httpclient-4.2.6.jar - httpcore-4.2.5.jar - httpmime-4.2.6.jar
  31. 31. www.luxoft-training.com “Автостопом по галактике” “Он привык не замечать, что происходит вокруг, так ему было даже уютнее”
  32. 32. www.luxoft-training.com Еще хитрее  Можно так же замерять время загрузки;  Groovy, JavaScript, Bean Shell…  Все смешалось в доме Облонских…
  33. 33. www.luxoft-training.com Дорого  BlazeMeter;  JavaScript или .jmx;  Альтернативный рекордер для Jmeter;  Настоящий браузер;  Наглядно и быстро;  Настоящие браузеры.
  34. 34. 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();
  35. 35. www.luxoft-training.com Blazemeter  Blazemeter  Loadosophia;  Облачные сервисы….  Мульти-тесты;  Географические генераторы.
  36. 36. www.luxoft-training.com True way  Blazemeter Taurus  Только GET запросы   В сценарном режиме  Но зато никто не придерется 
  37. 37. 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
  38. 38. www.luxoft-training.com Blazemeter Taurus  Python and Java;  Nose and Junit;  Только итерациями;  Настоящая консоль.
  39. 39. www.luxoft-training.com Еще выводы  С серверной производительностью все похуже  Можно, но тяжело и дорого
  40. 40. www.luxoft-training.com “Автостопом по галактике” “Можешь не волноваться. Все выходит из - под контроля самым лучшим образом”
  41. 41. www.luxoft-training.com Заключение
  42. 42. www.luxoft-training.com Давайте жить дружно  Пусть каждый инструмент делает то, что умеет;  А мы будем комбинировать;  Не поддавайтесь соблазну.
  43. 43. www.luxoft-training.com “Автостопом по галактике” “Я предпочитаю быть счастливым, чем делать все как надо”
  44. 44. www.luxoft-training.com Thank you
  45. 45. www.luxoft-training.com Questions?

×