我是JMeter的新手,我想验证定义为"用户定义参数"的一部分的JMeter测试输入变量。让我们说我有一个变量" sessions"并且我的测试人员应该在0到30之间传递输入值用于会话,如果测试人员超过此范围,则测试不应该进一步,并且应该在适当的消息中引发错误。
是否可以使用任何类型的JMeter控制器/断言/ ...而无需编写验证代码?
答案 0 :(得分:0)
我不确定是否有任何有效/直接的方式来做到这一点。但我达到了你的要求如下:
Stop Test Now
Action to be taken after a Sample error
JMeter Variable
部分中的Apply to
。Matches
部分中的Pattern Matching Rules
。^[0-9]$|^0[1-9]$|^1[0-9]$|^2[0-9]$|^30$
文本区域中添加正则表达式Pattern to test
。如果您在用户定义的变量中提供sessions
以外的0-30
值,则测试将停止,因为安装线程组在示例错误上配置为Stop Test Now
。
注1:添加了查看结果树监听器,以确认测试是否继续,并检查错误消息。查看结果树仅用于视觉确认,必须在加载测试期间删除,不影响实际逻辑。
注2:我不知道任何可以向用户显示自定义消息/提醒的组件。所以,使用了查看结果树。我们应该在负载测试期间删除此命令。我在这里添加了视觉确认目的。如果不存在,则测试将在sessions
的错误值上停止,即0-30
Note3:我们需要一个Sampler组件才能应用Assertion。所以,添加了Debug Sampler。 Debug Sampler只会在执行时报告所有JMeter变量值。
图片参考:
答案 1 :(得分:0)
如果不修改JMeter源代码,您无法在GUI中实现此类验证,但您可以使用脚本来检查变量范围。
例如,添加JSR223 Sampler作为第一个请求的子项,并将以下代码放入“脚本”区域:
import org.apache.commons.lang3.Range;
int sessions = Integer.parseInt(vars.get("sessions"));
String errorMessage = "Provided sessions number is not between 1 and 30, stopping test";
if (!Range.between(1, 30).contains(sessions)) {
log.info(errorMessage);
SampleResult.setSuccessful(false);
SampleResult.setResponseMessage(errorMessage);
SampleResult.setStopTest(true);
}
演示:
确保您使用Groovy作为一种语言(根据JMeter 3.1,该选项应该是默认的,如果您出于某种原因使用早期的JMeter版本 - 您必须从“groovy
中选择{语言“下拉列表”