среда, 10 февраля 2010 г.

JMeter 2nd page

Записки маленького тестировщика. Часть вторая.

Доработка 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 и Pas
sword: 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.




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

  1. а зачем нужен XPath Extractor и как понять ту строку, которая в параметре извлечения в последней иллюстрации?

    ОтветитьУдалить
  2. XPath Extractor - нужен для получения всякого рода информации со страниц. Например, если вам нужно получить сумму заказа, а она показывается на страничке в определенном поле. Да и вообще для много чего.
    О XPath - почитайте на каком-нибудь специализированном сайте. Думаю гугл подскажет :)

    ОтветитьУдалить
  3. С ХPath понятно. Проблема в том, что он здесь никак не используется. Для наглядности можно было бы показать его использование в следующем запросе.

    ОтветитьУдалить