Привет всем! Это мой первый блог так, что прошу не судить строго. Многое из того, что вы увидите плагиат, но я пытался расставлять ссылки на оригиналы. Данный блог не претендует на абсолютную истину. Я надеюсь он просто поможет начинающим в JMeter.
И так..... Записки маленького тестировщика. Часть первая.
JMeter - это проект Apache Jakarta, который может использоваться как инструмент нагрузочного тестирования для анализа и измерения быстродействия разнообразных служб, с акцентом на веб приложениях. JMeter так же может использоваться для регрессионного тестирования и стресс-тесрирования.
Содержание:
1. Скачать, установить, запустить
2. Запись скрипта
2.1. Ручной способ
2.2. "Прокси-сервер" способ
2.3. "Bad Boy" способ
3. Доработка скрипта
3.1. После записи через прокси
3.2. После записи через BadBoy
4. Нагрузка баз данных
5. Нагрузка веб-сервисов
6. JMeter для регрессии и стресс-тестирования
7. Полезные ссылки по литературе
Специальной установки он не требует так, что JMeter готов к работе.
Двойной клик по файлу JMeter.bat в директории jmeter/bin запустит приложение. И вот ОНО работает. :)
Во-первых, составлять вручную из предложенных шаблонов и пользуясь всеми другими возможностями JMeter. Это высший пилотаж, и по этому поводу могу предложить только элементарный пример, расположенный ниже.
Во-вторых, можно использовать возможности для автоматической записи скрипта средствами самого JMeter с помощью прокси-сервера. Есть пример в оригинале и в моем переводе, смотрите ниже.
В-третьих, на некоторых форумах советуют использовать BadBoy для записи скрипта в Test Plan. Очень интересный способ и, думаю, перспективный.
2. Добавляем Thread Group к Test Plan. Клик правой клавишей по Test Plan, выбрать Add -> Thread Group.
4. Добавляем HTTP Requests к Thread Group. Клик правой клавишей по Thread Group, выбрать Add -> Sampler -> HTTP Request. В поле Path вводим (/jmeter/) путь, куда мы собираемся идти в приложении. И меняем имя (Name) на говорящее для нас - JMeter page.
5. Добавляем еще один HTTP Requests к Thread Group для перехода на другую страницу. Клик правой клавишей по Thread Group, выбрать Add -> Sampler -> HTTP Request. В поле Path вводим /jmeter/usermanual/index.html. И меняем имя (Name) на Usermanual page.
6. Добавляем Aggregate Report к Thread Group для получения данных о ходе и результатах теста. Клик правой клавишей по Thread Group, выбрать Add -> Listener -> Aggregate Report.
7. Вот скрипт готов для использования. Осталось только сохранить Test Plan и выбрать Run в меню Run.
8. Результат теста наблюдаем в Aggregate Report элементе
1. В браузере (например IE6) кликаем Сервис -> Свойства обозревателя.
2. В свойствах обозревателя на вкладке Подключения кликаем Настройка LAN.
3. Выбираем использовать прокси-сервер ..., вводим Адрес: localhost и Порт: 808.
4. Запускаем JMeter.
5. Добавляем Thread Group к Test Plan.
6. Добавляем HTTP Request Defaults к Thread Group. Задаем в поле S erver Name or IP URL jakarta.apache.org (обратите внимание на поле Port Number, в данном случае оно не заполняется, но при необходимости заполните его).
7. Добавляем HTTP Proxy Server к WorkBrench. Клик правой клавишей по WorkBrench, выбрать Add -> Non-Test Elements -> HTTP Proxy Server.
8. Меняем порт (Port) в HTTP Proxy Server на 808.
9. В выпадающем меню Target Controller выбираем Test Plan -> Thread Group.
Теперь JMeter готов к записи скрипта.
10. Кликаем кнопку Start.
11. Открываем браузер. В адресную строку вводим http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. Например:
12. Кликаем User Manual ссылку.
13. Кликаем Download Realeses ссылку.
14. Закрываем браузер.
15. Возвращаемся к JMeter.
16. Останавливаем прокси-сервер, кликая кнопку Stop.
17. Проверяем результат записи скрипта. Видим что записаны не только запросы на переходы между страничками, другие "полезные" запросы, но и запросы на загрузку картинок и стилей. Обычно запросы на загрузку картинок, стилей и т.п. излишни и сильно засоряют скрипт.
Шаблоны бывают следующие:
.* - все
.*\.png – png картинки
.*\.gif – gif картинки
.*\.jpg – jpeg картинки
.*\.php
.*\.jsp
.*\.html
.*\.htm
.*\.js
!!!Не забывайте о точке перед звездочкой!!!
Я перечислил не все шаблоны и вообще я думаю, что их можно придумывать самому. Так, например, в следующих шагах я применю .*\.ico шаблон, который успешно отработает.
19. Добавим к URL Patterns to Include шаблон .*.
20. Добавим к URL Patterns to Exclude шаблоны .*\.jpg, .*\.gif, .*\.ico и .*\.css.
21. Кликаем кнопку Start.
22. Открываем браузер. В адресную строку вводим http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. На пример:
23. Кликаем User Manual ссылку.
24. Кликаем Download Realeses сс ылку.
25. Закрываем браузер.
26. Возвращаемся к JMeter.
27. Останавливаем прокси-сервер, кликая кнопку Stop.
28. Проверяем результат записи скрипта. Видим что записаны только "полезные" запросы на сервер.
1. Скачиваем последнюю версию "BadBoy" из интернета (я пользуюсь 2.0.7).
2. Устанавливаем.
3. Запускаем Start >> Programs >> BadBoy.
4. Вводим в адресную строку http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. Например:
5. Кликаем User Manual ссылку.
6. Кликаем Download Realeses ссылку.
7. Нажимаем Record off кнопку и изучаем записанный скрипт.
8. Нажав три раза на Play, видим как проигрывается скипт.
9. Теперь сохраним скипт для использования в JMeter. Кликаем File >> Export to JMeter...
10. Открываем JMeter.
11. В JMeter кликаем File >> Open и открываем сохраненный на 9 шагу скрипт.
12. Badboy Test Plan готов к модификации и использованию. Хочу обратить внимание, что в подавляющем большинстве случаев скрипт требует доработки до полной готовности.
2. Часто для корректной работы записанного скрипта необходимо использовать cookie. Для этого в JMeter предусмотрен HTTP Cookie Manager. Его добавяем после HTTP Request Defaults. Клик правой клавишей по Thread Group, выбрать A
dd -> Config Element -> HTTP Cookie Manager.
3. Так же добавим HTTP Header Manager.
4. Теперь добавим пару Listener. В View Results Tree можно наблюдать какое место скрипта сейчас выполняется, все ли запросы посланы корректно и получены ли корректные ответы. В Aggregate Report можно увидеть много интересного, но об этом позже.
А вот мой вариант по-русски:
1. Добавляем Thread Group в наш Test Plan.
2. Добавляем WebService(SOAP) Request в Thread Group. Правой клавишей по Thread Group , далее Add --> Sampler --> WebService(SOAP) Request
3. Еще добавим парочку листенеров, таких как, например, Summary Report и View Results Tree.
NOTE!!! Заметьте, что JMeter поддерживает только SOAP 1.1, а SOAP 1.2 - нет!
NOTE!!! Для того, что бы заработал WebService(SOAP) Request необходимо скачать две jar-ки activation.jar и mail.jar (к сожалению под рукой ссылки нет) и перезагрузить JMeter.
NOTE!!! Необходимо отослать смс на номер 454526567953 для активации услуги (шутка).
4. Узнайте WSDL URL (вот пример http://ws1.example.com/yyy/LWebService?wsdl) и вставьте ее/его в поле WSDL URL в WebService(SOAP) Request.
5. Нажмите кнопку Load WSDL. --> В поле Web Wethods должны подгрузиться все доступные методы для этого веб-сервиса. Если этого не произошло то, что-то пошло не так.
6. Теперь жмем кнопку Configure --> Автоматически должны заполнится поля Protocol, Server Name or IP, Port Number, Path и SOAPAction.
7. Осталось совсем не много. Теперь необходимо составить сам запрос. Если не разбираетесь в этом, то попросите это сделать того человека кто писал этот веб сервис.
8. Если чекнуть галочку Read SOAP response, то в View Results Tree листенере можно будет увидеть ответы от веб сервисов, что довольно полезно.
9. Получаем примерно следующий sample:
10. Все готово к работе. Теперь можно комбинировать разные запросы на веб сервис и выстраивать логику.
При использовании JMeter для стресс-тестирования, необходимо отключить все опции в используюмых Listener, так как это может повлиять на результат.
2. User's Manual
И так..... Записки маленького тестировщика. Часть первая.
JMeter - это проект Apache Jakarta, который может использоваться как инструмент нагрузочного тестирования для анализа и измерения быстродействия разнообразных служб, с акцентом на веб приложениях. JMeter так же может использоваться для регрессионного тестирования и стресс-тесрирования.
Содержание:
1. Скачать, установить, запустить
2. Запись скрипта
2.1. Ручной способ
2.2. "Прокси-сервер" способ
2.3. "Bad Boy" способ
3. Доработка скрипта
3.1. После записи через прокси
3.2. После записи через BadBoy
4. Нагрузка баз данных
5. Нагрузка веб-сервисов
6. JMeter для регрессии и стресс-тестирования
7. Полезные ссылки по литературе
1. Скачать, установить, запустить
JMeter - это бесплатный продукт. А это значит, что его можно свободно скачать ничего не опасаясь. Качаем 2.3.x.zip и распаковываем.Специальной установки он не требует так, что JMeter готов к работе.
Двойной клик по файлу JMeter.bat в директории jmeter/bin запустит приложение. И вот ОНО работает. :)
2. Запись скрипта
Записывать скрипт можно тремя способами (т.е. я знаю только о трех).Во-первых, составлять вручную из предложенных шаблонов и пользуясь всеми другими возможностями JMeter. Это высший пилотаж, и по этому поводу могу предложить только элементарный пример, расположенный ниже.
Во-вторых, можно использовать возможности для автоматической записи скрипта средствами самого JMeter с помощью прокси-сервера. Есть пример в оригинале и в моем переводе, смотрите ниже.
В-третьих, на некоторых форумах советуют использовать BadBoy для записи скрипта в Test Plan. Очень интересный способ и, думаю, перспективный.
2.1. Ручной способ
1. Запускаем JMeter. Перед собой видим рабочую область:2. Добавляем Thread Group к Test Plan. Клик правой клавишей по Test Plan, выбрать Add -> Thread Group.
3. Добавляем Default HTTP Request к Thread Group. Клик правой клавишей по Thread Group, выбрать Add -> Config Element -> HTTP Request Defaults. Необходимо в поле Server Name or IP ввести URL приложения, которое вы собрались тестировать. Пусть это будет jakarta.apache.org. В поле Port введем 80 (отмечу, что Port специфичен для каждого приложения и зачастую указывать его просто не нужно).
4. Добавляем HTTP Requests к Thread Group. Клик правой клавишей по Thread Group, выбрать Add -> Sampler -> HTTP Request. В поле Path вводим (/jmeter/) путь, куда мы собираемся идти в приложении. И меняем имя (Name) на говорящее для нас - JMeter page.
5. Добавляем еще один HTTP Requests к Thread Group для перехода на другую страницу. Клик правой клавишей по Thread Group, выбрать Add -> Sampler -> HTTP Request. В поле Path вводим /jmeter/usermanual/index.html. И меняем имя (Name) на Usermanual page.
6. Добавляем Aggregate Report к Thread Group для получения данных о ходе и результатах теста. Клик правой клавишей по Thread Group, выбрать Add -> Listener -> Aggregate Report.
7. Вот скрипт готов для использования. Осталось только сохранить Test Plan и выбрать Run в меню Run.
8. Результат теста наблюдаем в Aggregate Report элементе
2.2. "Прокси-сервер" способ
Для автоматической записи скрипта в JMeter, используя прокси-сервер, необходимо проделать следующие действия:1. В браузере (например IE6) кликаем Сервис -> Свойства обозревателя.
2. В свойствах обозревателя на вкладке Подключения кликаем Настройка LAN.
3. Выбираем использовать прокси-сервер ..., вводим Адрес: localhost и Порт: 808.
4. Запускаем JMeter.
5. Добавляем Thread Group к Test Plan.
6. Добавляем HTTP Request Defaults к Thread Group. Задаем в поле S erver Name or IP URL jakarta.apache.org (обратите внимание на поле Port Number, в данном случае оно не заполняется, но при необходимости заполните его).
7. Добавляем HTTP Proxy Server к WorkBrench. Клик правой клавишей по WorkBrench, выбрать Add -> Non-Test Elements -> HTTP Proxy Server.
8. Меняем порт (Port) в HTTP Proxy Server на 808.
9. В выпадающем меню Target Controller выбираем Test Plan -> Thread Group.
Теперь JMeter готов к записи скрипта.
10. Кликаем кнопку Start.
11. Открываем браузер. В адресную строку вводим http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. Например:
12. Кликаем User Manual ссылку.
13. Кликаем Download Realeses ссылку.
14. Закрываем браузер.
15. Возвращаемся к JMeter.
16. Останавливаем прокси-сервер, кликая кнопку Stop.
17. Проверяем результат записи скрипта. Видим что записаны не только запросы на переходы между страничками, другие "полезные" запросы, но и запросы на загрузку картинок и стилей. Обычно запросы на загрузку картинок, стилей и т.п. излишни и сильно засоряют скрипт.
18. Значит необходимо отфильтровать нужные нам запросы. Зададим шаблоны, по которым они будут отбираться.
Шаблоны бывают следующие:
.* - все
.*\.png – png картинки
.*\.gif – gif картинки
.*\.jpg – jpeg картинки
.*\.php
.*\.jsp
.*\.html
.*\.htm
.*\.js
!!!Не забывайте о точке перед звездочкой!!!
Я перечислил не все шаблоны и вообще я думаю, что их можно придумывать самому. Так, например, в следующих шагах я применю .*\.ico шаблон, который успешно отработает.
19. Добавим к URL Patterns to Include шаблон .*.
20. Добавим к URL Patterns to Exclude шаблоны .*\.jpg, .*\.gif, .*\.ico и .*\.css.
21. Кликаем кнопку Start.
22. Открываем браузер. В адресную строку вводим http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. На пример:
23. Кликаем User Manual ссылку.
24. Кликаем Download Realeses сс ылку.
25. Закрываем браузер.
26. Возвращаемся к JMeter.
27. Останавливаем прокси-сервер, кликая кнопку Stop.
28. Проверяем результат записи скрипта. Видим что записаны только "полезные" запросы на сервер.
2.3. "BadBoy" способ
Для того, что бы воспользоваться этим удобным способом, необходимо скачать и установить саму программу "BadBoy".1. Скачиваем последнюю версию "BadBoy" из интернета (я пользуюсь 2.0.7).
2. Устанавливаем.
3. Запускаем Start >> Programs >> BadBoy.
4. Вводим в адресную строку http://jakarta.apache.org/jmeter/index.html.
выполняем те действия, которые нужны в тесте. Например:
5. Кликаем User Manual ссылку.
6. Кликаем Download Realeses ссылку.
7. Нажимаем Record off кнопку и изучаем записанный скрипт.
8. Нажав три раза на Play, видим как проигрывается скипт.
9. Теперь сохраним скипт для использования в JMeter. Кликаем File >> Export to JMeter...
10. Открываем JMeter.
11. В JMeter кликаем File >> Open и открываем сохраненный на 9 шагу скрипт.
12. Badboy Test Plan готов к модификации и использованию. Хочу обратить внимание, что в подавляющем большинстве случаев скрипт требует доработки до полной готовности.
3. Доработка скрипта
3.1. После записи через прокси
1. Записываем скрипт используя прокси-методов, предложенных в пункте "Запись скрипта".2. Часто для корректной работы записанного скрипта необходимо использовать cookie. Для этого в JMeter предусмотрен HTTP Cookie Manager. Его добавяем после HTTP Request Defaults. Клик правой клавишей по Thread Group, выбрать A
dd -> Config Element -> HTTP Cookie Manager.
3. Так же добавим HTTP Header Manager.
4. Теперь добавим пару Listener. В View Results Tree можно наблюдать какое место скрипта сейчас выполняется, все ли запросы посланы корректно и получены ли корректные ответы. В Aggregate Report можно увидеть много интересного, но об этом позже.
3.2. После записи через BadBoy
смотрите в следующем сообщении4. Нагрузка баз данных
Оригинал - User's Manual_Building a Database Test Plan - сейчас почему то ссылка не работает. Я поищу ее потом.5. Нагрузка веб-сервисов
Создать нагрузку для веб сервисов довольно быстро и просто. Пожалуйста вам ссылочка на оригинал.А вот мой вариант по-русски:
1. Добавляем Thread Group в наш Test Plan.
2. Добавляем WebService(SOAP) Request в Thread Group. Правой клавишей по Thread Group , далее Add --> Sampler --> WebService(SOAP) Request
3. Еще добавим парочку листенеров, таких как, например, Summary Report и View Results Tree.
NOTE!!! Заметьте, что JMeter поддерживает только SOAP 1.1, а SOAP 1.2 - нет!
NOTE!!! Для того, что бы заработал WebService(SOAP) Request необходимо скачать две jar-ки activation.jar и mail.jar (к сожалению под рукой ссылки нет) и перезагрузить JMeter.
NOTE!!! Необходимо отослать смс на номер 454526567953 для активации услуги (шутка).
4. Узнайте WSDL URL (вот пример http://ws1.example.com/yyy/LWebService?wsdl) и вставьте ее/его в поле WSDL URL в WebService(SOAP) Request.
5. Нажмите кнопку Load WSDL. --> В поле Web Wethods должны подгрузиться все доступные методы для этого веб-сервиса. Если этого не произошло то, что-то пошло не так.
6. Теперь жмем кнопку Configure --> Автоматически должны заполнится поля Protocol, Server Name or IP, Port Number, Path и SOAPAction.
7. Осталось совсем не много. Теперь необходимо составить сам запрос. Если не разбираетесь в этом, то попросите это сделать того человека кто писал этот веб сервис.
8. Если чекнуть галочку Read SOAP response, то в View Results Tree листенере можно будет увидеть ответы от веб сервисов, что довольно полезно.
9. Получаем примерно следующий sample:
10. Все готово к работе. Теперь можно комбинировать разные запросы на веб сервис и выстраивать логику.
6. JMeter для регрессии и стресс-тестирования
При использовании JMeter для регрессии, необходимо использовать Response Assertion элементы в Test Plan.При использовании JMeter для стресс-тестирования, необходимо отключить все опции в используюмых Listener, так как это может повлиять на результат.
7. Полезные ссылки и литература по теме:
1. Официальный сайт JMeter2. User's Manual
Спасибо огромное :)! Кратко и понятно, максимум информации! То что нужно!
ОтветитьУдалитьЗдравствуйте, спасибо большое за информацию!! всё объяснено доступно, я начинаю самостоятельно осваивать нагрузочное тестирование, не понятно каким образом узнать WSDL URL - это конфиденциальная информация владельцев конкретного ресурса? можно ли без этого потренироваться в нагрузочном тестировании?
ОтветитьУдалить