Доработка JMeter скрипта.
После записи скрипта не важно каким способом или "прокси-сервер", или "BadBoy", он в любом случае нуждается в доработке для корректной работы с приложением. Его нужно параметризовать. В чем заключается параметризация я попытаюсь показать наглядно ниже.
Тестировать будем приложение
http://demo.flamingo.exadel.com/booking/home.seam
1. Запишем скрипт используя BadBoy способ.
Записываем следующие действия:
1.1. Вводим http://demo.flamingo.exadel.com/booking/home.seam.
1.2. Логинимся с данными Login Name: loaduser1 и Password: 12345.
1.3. Кликаем Find Hotels кнопку.
1.4. Кликаем на любой View Hotel ссылку.
1.5. Нажимаем Book Hotel кнопку.
1.6. Заполняем поля Credit Card и Credit Card Name значением 1231231231231231.
1.7. Жмем Proceed кнопку.
1.8. Кликаем Confirm кнопку.
1.9. Удаляем в таблице Current Hotel Bookings созданную запись, кликая Cancel.
1.10. Нажимаем Logout ссылку.
2. Запишем скрипт второй раз.
3. Откроем два скрипта в двух JMeterах.
4. Сравнивая запросы в двух скриптах, можно понять какие данные нужно коррелировать. Например во втором запросе параметр javax.faces.ViewState.
4. Добавьте View Results Tree Listener в конец скрипта.
5. Запустите скипт на выполнение один раз. В листенере можно посмотреть отправленные запросы и полученные ответы. Раз параметр javax.faces.ViewState имеет динамическое значение и отправляется со вторым запросом, значит его значение должно появиться в ответах из предыдущих запросов. Проверим ответ от первого запроса. Там действительно приходит значение этого параметра.
6. Для того, чтобы выхватить этот параметр, добавим Regular Expression Extractor к первому запросу(семплу) со следующими параметрами:
7. Теперь значение параметра javax.faces.ViewState можно заменить
на ${ViewStateId}. И запрос будет отправляться с корректным значением.
8. Так же необходимо поступить со всеми запросами, где присутствует параметр javax.faces.ViewState, а так же параметр cid.
9. В четвертом запросе параметром dataModelSelection мы выбираем, какой из отелей открыть. Сделаем, что бы отель выбирался рандомом, для этого в поле Match No.(0 for Random) Regular Expression Extractora, прикрепленного к третьему запросу, выставим значение 0. Остальные поля заполняем из соображений правильности :). А в самом запросе параметр dataModelSelection будет иметь такой вид: hot:hotels[${hotel}].
Вид Regular Expression Extractorа:
10. Приведу пример использования XPath Extractorа.
Задача: получить значение Confirmation number для только что созданной записи.
Используя firebug для firefox или IEDeveloperToolBar для IE,смотрим дерево тегов возле интересующих нас значений.
Добавляем XPath Extractor к девятому запросу со следующими параметрами:
Теперь с помощью параметра ${xcancel} можно получать доступ к значениям Confirmation number.
а зачем нужен XPath Extractor и как понять ту строку, которая в параметре извлечения в последней иллюстрации?
ОтветитьУдалитьXPath Extractor - нужен для получения всякого рода информации со страниц. Например, если вам нужно получить сумму заказа, а она показывается на страничке в определенном поле. Да и вообще для много чего.
ОтветитьУдалитьО XPath - почитайте на каком-нибудь специализированном сайте. Думаю гугл подскажет :)
С ХPath понятно. Проблема в том, что он здесь никак не используется. Для наглядности можно было бы показать его использование в следующем запросе.
ОтветитьУдалить