目录:
1、Jmeter在linux上的安装与执行
2、通过P函数在linux执行命令中改变线程数和执行时间
3、jmeter通过BeanShell断言来打印响应报文日志
1、Jmeter在linux上的安装与执行
Jmeter在linux上的安装和执行,已经有人写的很详细了,详见微博链接:
https://www.cnblogs.com/surewing/p/9271886.html
2、通过P函数在linux执行命令中改变线程数和执行时间
在linux运行jmeter脚本时,因为改变线程数和执行时间等信息,如果通过在本地修改脚本后,然后上传才能执行,是一件效率很低而且很麻烦的事情。以下两步,可以轻松解决这个问题:
(1)在Windows可视化的Jmeter脚本,将线程数和持续时间用 "$ {__P(TC,)}"函数进行参数化:$ {__P(TC,)}、${__P(time,)}其中TC和time是自定义的,想写啥都行。
如下图:
(2)在linux执行命令中加入:-JTC=300 、-Jtime=120 参数,
linux命令如下:
jmeter -JTC=300 -Jtime=120 -n -t clients1.jmx -l testrults.jtl
说明:
“-JTC=”:后面的值,即为想要的线程数;
“-Jtime=”:后面的值,即为执行时间,单位为秒;
-n -t: 特定参数,没研究过,后面跟执行的jmeter脚本;
-l:需要生成报告时,要加此参数,后面跟报告名称及存放路径,可以下载到本地查看执行结果。
注意:
jmeter配置了环境变量时,才可以直接使用“jmeter”命令来执行,否则要加上执行bin文件所在的路径,不然会报错
3、jmeter通过BeanShell断言来打印响应报文日志
jmeter脚本执行过程中,会在当前目录生成一个jmeter.log的日志文件,但是只会记录一些基本的信息,不会打印响应报文,当执行无异常时,就无所谓,但是执行异常,看不到响应的结果,无法定位是服务器短的问题,还是请求的问题,是不是一件很头疼的事情?即使生成有报告,下载的报告也很大,很麻烦,而且报告也不会有响应报文。
解决方法:通过BeanShell 后置处理程序或者BeanShell断言来执行,两者差不多,BeanShell断言的话,可以加自己想要的断言而已,此处以BeanShell断言为例。
(1)添加BeanShell断言:
(2)编写BeanShell断言脚本(java)
前提条件:要提前问开发要响应报文的格式,或者自己通过请求相应结果来确定响应报文格式,因为要根据响应体实际情况来提取相关参数。
因为笔者的请求响应报文,比较特殊,成功和失败响应的都是一个json串,且成功和失败没有相同的参数,无法直接提取参数后再进行判断,而是只能直接判断,具体见如下:
脚本实现:
//获取上一个请求的返回值
String response = prev.getResponseDataAsString();
//如果响应报文没有包含“_index”,说明请求失败;如果响应报文没有包含“successful”,说明数据写入失败
if(response.contains("_index")&&response.contains("successful")){
Failure=false;
// 打印返回信息
// log.info("sms success--------------------------");
// log.info("responseData:" + response);
// log.info("-------------------------------------");
}else{
Failure = true;
//打印返回错误信息
log.info("sms ERROR--------------------------");
log.info("responseData:" + response);
log.info("-----------------------------------");
}
(3)将脚本传到linux上执行,并查看jmeter.log日志
注意:jmeter.log在当前执行脚本的目录哦。