首页 文章

使用JMeter测试JSF时提取ViewState

提问于
浏览
6

我正在使用JMeter对我的JSF应用程序进行一些负载测试,而我在浏览页面时遇到了麻烦 . ViewState变量根本没有被提取,或者它没有被传递到页面 .

我用代理服务器记录了我的测试步骤,这就是它的样子:

First GET Request

我在第一个GET请求中添加了Regex提取器 . 测试了正则表达式,这是正确的 .

First POST Request

在每个POST请求中,我将硬连线视图ID替换为我的变量 .

我发送请求时得到的结果如下:

Request sent

POST参数不正确,因为它发送变量的名称 .

发布数据:

loginForm%3ArequestToken =&loginForm%3Ausername = heller&loginForm%3Apassword =%21QAYxsw2%A7EDC&loginForm%3AloginButton = Anmelden&com.sun.faces.VIEW =%24%7BjsfViewState%7D&loginForm = loginForm

你能说出我在这里做错了什么吗?
谢谢!

2 回答

  • 2

    ViewState参数是一个编码值(我相信Base64?),如果通过url在GET请求中传递,则可能包含不合适的值 . 通常对URL参数进行编码,以便在请求到达服务器时可以表示和解码特殊值(例如,空格 - >%20) .

    这里的问题是以下请求是POST意味着参数不需要进行URL编码 .

    com.sun.faces.VIEW =%24%7BjsfViewState%7D&loginForm = loginForm

    以上显示JMeter或其他一些进程是在请求中对ViewState进行URL编码,这是不正确的 . 应该按原样发送ViewState的值 .

  • 2

    发现我的问题:正则表达式是错误的,因此在响应中找不到任何内容 . 我不得不改变正则表达式 . 添加默认值“NOT FOUND”后注意到它 .

相关问题