2

我正在使用 JMeter 测试一个 Eclipse-RAP 应用程序。
在 RAP 中,客户端(浏览器中的 javascript 框架)通过基于 json 的协议与服务器通信。

一条消息如下所示:

{"head":{"requestCounter":3,"uiSessionId":"832834"},"operations":[["set","w1",{"bounds":    [0,0,1680,893],"cursorLocation":[1262,-1]}]]}

uiSessionId. I extracted this id using a "Regular Expression Extractor" and stored it in a variable named如您所见, UI_SESSION_ID 中存储了一个会话 ID 。
然后我编辑了记录的 HTTP-Request 的原始“Post Body”:

{"head":{"requestCounter":3,"uiSessionId":"${UI_SESSION_ID}"},"operations":[["set","w1",{"bounds":    [0,0,1680,893],"cursorLocation":[1262,-1]}]]}

它有效。

但是我必须更改每个 HTTP-Request 的每个 Post-Body,这可能很多。经过一些研究,我认为使用“BeanShell PreProcessor”是正确的,但是:

var sampler = ctx.getCurrentSampler();

会给我一个 HTTPSampler,但我没有找到任何方法可以让我检索 post-body,用变量替换 session-id 并设置更改后的 post-body。
JavaDoc:http: //jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSampler.html

你知道有什么方法可以uiSessionId在不手动更改每个请求的情况下用变量替换吗?

4

1 回答 1

0

你不必。标uiSessionId头已在里程碑版本中引入,为 RAP 中的多个浏览器选项卡支持做准备,但它已被另一种不再使用此标头参数的机制所取代。

从 RAP 2.1 RC1 开始,客户端现在将“连接 ID”附加到 URL 参数中的每个 POST 请求cid。此参数不会影响负载测试,您不必将其从记录中删除。由于每个 jmeter 线程都有自己的 HttpSession,因此所有线程都具有相同的 cid 不是问题。

进行此更改的一个原因是能够加载测试 RAP 应用程序而不会遇到您一直在努力解决的问题。

于 2013-05-23T09:14:32.290 回答