简单的JMeter测试不起作用

时间:2012-04-25 15:09:41

标签: java testing jsf-2 automated-tests jmeter

我们正在尝试在JSF应用程序中使用JMeter添加一个简单的测试。我们按照以下说明进行操作:

http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html

它有一个简单的登录页面,其中包含用户名和密码以及提交按钮。您可以从屏幕截图中看到我们使用了代理。使用屏幕截图中的设置,我们收到HTTP 500错误。我不确定我是否以正确的方式提出问题。请询问您是否需要澄清。

enter image description here

Cookie Manager

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

错误代码是: enter image description here enter image description here

修改: 我认为这将是SO最长的问题。但有时候图像比文字要好。无论如何,我们所做的是发送与我们在firebug中看到的数据相同的数据。但仍然有500错误。您可以在附件中看到Tomcat日志。

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:5)

HTTP 5xx代码与服务器或应用程序错误有关。首先搜索日志文件。

您的脚本不需要“用户定义的变量”组件,因为没有真正需要根据线程/用户评估的变量表达式。

“正则表达式提取器”组件足以提取JSF ViewState值。 我建议你删除表达式的最后一部分“/>”,并将正则表达式分组(。+?)更改为(\ w +?)'因为它将评估为几个匹配(可能只有2个)。更改“匹配号”的值字段为1(如果匹配的所有值都相同,则无需使用随机数。)

我不明白为什么你同时使用“XPath Extractor”和“Regular Expression Extractor”组件来提取相同的值。我喜欢在使用html时使用最后一个。使用格式良好的xml字符串/文件进行处理时,XPath会更好。

要从头开始捕获脚本,我建议您在Workbench中添加“HTTP代理服务器”,配置它,启动它,配置浏览器以使用此代理并使用浏览器导航这些页面。这样,您将捕获所有请求,并请求您选择的浏览器使用的标头。在此之后,删除不必要的请求并将查询参数(如javax.faces.ViewState)更改为相应的变量。

考虑在将使用参数值中的变量的HTTP Sampler之前使用提取器(Pos-Processors)。例如:if / EBS请求是第一个,而/EBS/login.xhtml请求有一个javax.faces.ViewState参数,那么,/ EBS响应可能包含一个带有javax.faces.ViewState值的隐藏输入。

这是我使用的JSF应用程序测试脚本的常见组成部分。提供有关HTTP 500错误原因的更多信息应阐明获得更好解决方案的方法。

答案 1 :(得分:5)

在jsfViewState的正则表达式提取器上,将(?s)添加到正则表达式的开头。所以你有:

(?s)<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" /> 

这允许(.+?)跨越换行符。

答案 2 :(得分:2)

您的正则表达式提取器位于错误的位置。您无法从对请求的响应中提取值,然后使用相同的请求发送它。实现这一目标的唯一方法是使用时间机器,但这些机器尚不存在,即使它们确实存在,也可能不起作用。

通常,您在对GET的响应中获得一个视图状态,然后您在同一页面的POST中需要它。因此,将正则表达式提取器作为GET调用的,首先调用login.xhtml页面(作为GET)。如果您的录音不包含此GET调用,则可以手动添加它或在登录POST之前检查之前调用的响应以查找它,例如。也许GET homepage.xhtml(或类似的)将包含它。