пятница, 13 ноября 2015 г.

Открыл для себя связку Apache JMeter и Webdriver

По долгу службы в мои обязанности входит генерация технических статей для нашего корпоративного блога. В преддверии выхода Magento 2 мы решили протестировать ее производительность в сравнении с Magento 1. В Magento 2 встроен Full Page Cache, который очень интенсивно использует AJAX запросы для загрузки динамических блоков, которые впоследствии вклеиваются в страницу. Я уже использовал JMeter для тестирования сайтов, где не используется AJAX, но для Magento 2 этот подход не годится.

При установке Apache JMeter 2.13 и плагина Webdriver 1.3.1 столкнулся с особенностью установки. Дело в том, что плагин содержит в себе более свежие версии httpmime, httpclient и httpcore.

% tar -tf ~/downloads/apache-jmeter-2.13.tgz | grep lib/http 
apache-jmeter-2.13/lib/httpclient-4.2.6.jar
apache-jmeter-2.13/lib/httpcore-4.2.5.jar
apache-jmeter-2.13/lib/httpmime-4.2.6.jar

% unzip -l ~/downloads/JMeterPlugins-WebDriver-1.3.1.zip | grep lib/http
    40692  2015-10-12 10:08   lib/httpmime-4.5.jar
   727567  2015-10-12 10:08   lib/httpclient-4.5.jar
   322234  2015-10-12 10:08   lib/httpcore-4.4.1.jar

Из-за этого тест не работал без видимых причин, пока я не обратил внимание на счетчик ошибок JMeter. Достаточно удалить соответствующие файлы из дистрибутива JMeter и тест запустился без проблем.

К сожалению подобная связка не подходит для нагрузочного тестирования - уже запуск 5 потоков теста ощутимо нагружает мой ноутбук с core i5, на котором запускается тест. Есть еще Selenium Grid, который вроде как решает эту проблему, но без webdriver мне удавалось создавать параллельную нагрузку на сервер в 40-50 одновременных пользователей.

2 комментария:

  1. Ответы
    1. У вас есть положительный опыт использования Magento Performance Toolkit или просто почитали брошюрку? Не далее чем вчера возился с Magento Testing Framework для Magento2 - значительная часть тестов просто отвалилась.

      Пока не стабилизируют (если вообще стабилизируют) - эта просто прикольная игрушка.

      Удалить