воскресенье, 22 июня 2014 г.

Тестирование ADF приложений. Часть 3(Тестирование нагрузки приложения при помощи JMeter)

После того, как  мы успешно завершили тестирование пользовательского интерфейса ,мы удостоверились   что приложение работает для одного  пользователя. Теперь мы должны доказать, что приложение выдержит  нагрузку в  реальной жизни . Чтобы сделать это, мы будем использовать открытый инструмент : JMeter.
JMeter является инструментом для нагрузочного тестирования веб-приложений. Как и Selenium, он записывает сеанс пользователя и воспроизводит его, но он не  запускает сеанс пользователя в браузере,а  просто отсылает запросы на сервер приложений.

После пройденными нами двух этапов тестирования, нам остается:
  • Проверить, что приложение работает с несколькими одновременно работающими пользователями 
  • Проверить, сколько пользователей система может обрабатывать 
Приступим


Для начала скачаем  JMeter( http://jmeter.apache.org/download_jmeter.cgi). Скачав и распаковав архив запустите jmeter.bat.



Тестирование в  JMeter начинается с Thread Group, в которой определяется количество одновременных процессов запускаемых от вашего приложения. Чтобы добавить thread group, щелкните правой кнопкой мыши Test Plan узел и выберите Add— > Threads (Users) — >Thread Group:





Здесь вы можете определить количество пользователей, сколько раз тест нужно повторить, и т.д.Как только вы определили thread group (группа потоков), вы можете начать добавлять тестовые элементы вручную, щелкнув правой кнопкой на вашей группе потоков и выбрать Add. Но,есть более простой способ  записи теста, для этого в JMeter нужно создать  прокси сервер.

Чтобы настроить JMeter в качестве прокси, щелкните правой кнопкой мыши по  Workbench и выберите Add — > Non-Test Elements — > HTTP(S) Test Script Recorder(в старых версиях он называется HTTP Proxy Server) Введите порт, который уже не используется (например, 8585) и выберите в  пункте Target Controller ваш thread group


Теперь нужно настроить прокси сервер в браузере в  котором вы проводите тестирование 

Chrome:


Firefox :  (Меню-Настройки-Дополнительно-Сеть-Настроить)


Теперь можно приступить для записи сессии. Для этого в  JMeter в HTTP(S) Test Script Recorder нужно нажать Start и в браузере где настроен прокси запустить ваше приложение и начать тестировать приложение. Как вы это сделаете, вернитесь в JMetere и нажмите Stop. В  вашем  thread group сформируются  запросы :



Эти запросы показывают как браузер взаимодействует с сервером приложений. В принципе можно приступать  к тестированию (  для этого нужно нажать на Start в thread group). Но результатом будет   лишь текст вида :

2014/06/22 15:09:11 INFO  - jmeter.engine.StandardJMeterEngine: All thread groups have been started 

2014/06/22 15:09:11 INFO  - jmeter.threads.JMeterThread: Thread started: Thread Group 1-1 
2014/06/22 15:09:12 INFO  - jmeter.threads.JMeterThread: Thread finished: Thread Group 1-1 
2014/06/22 15:09:12 INFO  - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test 
2014/06/22 15:09:12 INFO  - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*) 

Что бы увидеть результаты тестирования, нужно добавить элементы просмотра :Нажимаем правой клавишей на Thread Group — >Add — >Listener — > Aggregate Report, View Result in Table и View Result Tree.



View Result in Table  ( в таблице показывает запрос с временем отклика и статусом)


View Result Tree ( показывает подробные ответы от веб-сервера -если запрос выполнен успешно, то должно быть написано HTTP/1.1 200 OK)





Aggregate Report  (отображает статистику по каждому индивидуальному url отдельно)





Измеряемые показатели при помощи JMeter:



  • Среднее время прохождения набора тестов – время, в течение которого проходили отобранные тесты.
  • Число операций – количество операций выполненных сервером, фактически это количество принятых от JMeter и обработанных пакетов данных.
  • Число потоков – число открытых JMeter потоков при подключении к серверу, фактически это количество подключившихся пользователей.
  • Среднее время доступа к данным – время, в течение которого JMeter получает отклик от сервера web-приложения на отправленный запрос и начинает принимать ответные данные. Фактически это время ожидания пользователем ответных результатов от web-приложения на свои запросы.
  • 90-й процентиль времени доступа к данным – это такое значение времени доступа в мс., что при распределении времени доступа по возрастанию для всех принятых данных, 90% времени доступа попадает ниже этого значения. Таким образом, время доступа к «большинству» загружаемых при проведении тестов данных находится ниже 90-го процентиля.
  • Максимальная общая загрузка процессоров – максимальная общая загруженность процессоров сервера во время выполнения группы тестов, %.
  • Максимальная общая загрузка памяти – максимальная общая загруженность памяти сервера во время выполнения группы тестов, Мб.
  • Ошибки подключения (отказы) – отношение числа успешных, выполненных запросов, к числу отказов в обработке запросов, %.

.