Как протестировать CAS с помощью jmeter?

  • запрос:

    Я отправляю" get " http-запрос, не имеет параметров;
    путь: http://192.168.22.139:8080/KSP

  • ответ:

    <input id="username" type="text" name="username" required/>
    <input id="password" type="password" name="password" required/>
    <input type="hidden" name="lt" value="LT-697-vbNmm6NKOZ0cd7Wg1ywzbMKLa0DnOc" />
    <input type="hidden" name="execution" value="e1s1" />
    <input type="hidden" name="_eventId" value="submit" />
    

и я добавляю два экстрактора XPath, чтобы получить lt и execution:

  • имя ссылки: lt;
    запрос xPath://*[@id="login"]/input[3]
  • имя ссылки: execution;
    запрос XPath: //*[@id="login"]/input[4]

enter image description here

тогда я посылаю другой запрос с username/password/service/It/execution/_eventId:

enter image description here

: билет и исполнение, которые я получаю, пусты, я получаю xpath от chrome, так в чем проблема?

4 ответов


из первого ответа, можно использовать Экстрактор Регулярных Выражений для извлечения тика и lt. extract ticket

затем послать второй запрос с параметром:

username/password/It/execution/_eventId/_eventId enter image description here

кстати, вы должны добавить http Cookie Manager, enter image description here


Я не вижу параметров первый запрос. По крайней мере, я не видел lt.

второй запрос должен быть запросом GET, а параметры:сервис и авиабилет(это не jsessionid, значение генерируется CAS, и то же самое с параметром lt в первом запросе к логину CAS).


есть несколько вещей, которые вам нужно изменить во втором запросе:

  • добавить execution параметр (извлеките его из первого запроса, например. с XPath Extractor или Regular Expression Extractor),

    • выражение XPath будет чем-то вроде .//*[@id='fm1']//*[@name='execution']/@value
  • добавить ,

  • на lt параметр (билет для входа) должен быть извлечен из форма входа в систему тоже-она меняется каждый раз; см. XPath Extractor или Regular Expression Extractor,

    • XPath выражение: .//*[@id='fm1']//*[@name='lt']/@value,
  • не требуется, но будет выглядеть лучше - изменение получить сообщение.

Если вы тестируете сам вход CAS, я могу предложить использовать JMeter HTTP прокси-сервер для записи процесса входа в систему, поймать все значения, которые передаются, обнаружить те, которые являются динамическими и иметь дело с ними с помощью экстрактора регулярных выражений, XPath, Beanshell и т.д. Post Processors-то, что вам наиболее комфортно.

в случае, если ваше приложение находится за CAS, я думаю, что CAS login просто добавляет cookie, и ваше приложение считает пользователя аутентифицированным на основе он. В этом случае вы можете просто хранить cookies где-то в CSV-файле и использовать их через http Cookie Manager для имитации авторизованные пользователи.