8.8. Jmeter性能测试常用方法
8.8.1. 从Jenkins中获取参数到jmeter脚本
在Jenkins中可以添加配置参数,会加入到临时的环境变量中,在Jenkins通过BeanShel脚本变可以获取到Jenkins的参数
8.8.1.1. 在Jenkins中添加参数,是你需要透传给jmeter的
8.8.1.2. 在jmeter添加一个前置处理器,BeanShell PreProcessor,输入以下代码:
String DataId= System.getenv("data_id");
vars.put("DataId",DataId);
8.8.1.3. 在jmeter脚本脚本中通过 ${DataId},获取Jenkins中配置的data_id
8.8.2. beanshell断言,可以在报告中展示异常的response
在性能测试中,我们如果只使用了响应断言,那边在用例失败时,我们只知道响应里面没有需要的断言数据,但不知道实际响应了什么,这时候我们就可以把响应断言修改成以下的beanshell断言,这样失败时,FailureMessage就会出现在我们的报告中
代码如下:
String response = "";
String Str = "\"code\":0";
response = prev.getResponseDataAsString();
if (response == ""){
Failure = true;
FailureMessage = "系统无响应";
// System.out.print( FailureMessage);
}
else if((response.contains(Str)) == false){
Failure = true;
FailureMessage = "接口响应异常,接口实际响应内容为:" + response;
// System.out.print(FailureMessage);
}
多个字符串断言,如Str1和Str2两者存在其一即为通过,代码如下:
String response = "";
String Str1 = "assert_str1";
String Str2 = "assert_str2";
response = prev.getResponseDataAsString();
if (response == ""){
Failure = true;
FailureMessage = "系统无响应";
// System.out.print( FailureMessage);
}
else if(!(response.contains(Str1) || response.contains(Str2))){
Failure = true;
FailureMessage = "接口响应异常,接口实际响应内容为:" + response;
// System.out.print(FailureMessage);
}
8.8.3. jmeter使用Beanshell预处理器从指定列表中获取随机值
新增beanshell前置处理器
代码如下:
//随机字符串
String[] nation = new String[]{"china", "US", "UK"};
Random random = new Random();
int i = random.nextInt(nation.length);
vars.put("mynation",nation[i]);
//随机数字
String[] num = new String[]{"8", "2", "1","7"};
Random r = new Random();
int j = r.nextInt(num.length);
vars.put("anum",num[j]);
然后在脚本中使用${mynation}或者${anum}变可以获取对应参数
Warning
数量较多时推荐使用csv,当然也可以使用随机函数,但是在性能测试中不推荐使用随机函数,部分随机函数生成时的性能较差,无法提供足够的负载
8.8.4. 仅一次控制器
在编写性能测试是,有时候部分场景我们只希望执行一次,如登录,这时候我们就可以使用【仅一次控制器】,将登录接口加入到仅一次控制器中。这样每个线程只会执行一次登录。
方法:在线程组中添加逻辑控制器,仅一次控制器