Misty rain
Jmeter性能测试-进阶篇(上)
进阶篇上:本章主要讲jmeter中的一些进阶操作,比如:添加断言、获取上游参数、添加公共参数、计时器、读取csv参数、一些常用的基础操作
jmeter中的一些常用操作
- 上移下移:
在左侧直接拖动任意节点可进行位置调换,一般一些公共的变量、请求默认值、请求头都是放在最上面的,同时一些有流程性的接口也是讲究顺序的,如果顺序不正确会出现接口错误。
- 添加监听器:
在jmeter中可以添加各式各样的监听器,上节基础篇中我们添加了结果观察树,同时我们可以添加一些常用的监听器,例如:聚合报告(Aggregate Report)、断言结果(Assertion Results)、用表格查看结果(View Results in Table)、响应时间图(Response Time Graph)、图形结果(Graph Results);这些以后都会在性能测试中用到。
为接口添加断言
先查看(新增学生)接口成功之后的响应内容:
{"code": 0, "msg": "操作成功"}
右键选择接口-->Add-->Response Assertion,更改名称:新增学生响应断言
再新建一个‘响应断言’:响应头状态码
再次运行接口,发现断言未通过:
Test failed: text expected to contain /操作成功/
该响应信息中没有“操作成功”字符;
发现响应信息是:
{"code": -1, "msg": "phone具有 电话 的 学生 已存在。"}
所以该接口调用失败。
添加计时器
这里如果要做压力测试,这如果只能运行一次就报断言错误,那显然是行不通的,这时简单的重复编码业务可以优先考虑计时器。
右键线程组-->Add-->Config Element-->Counter,更改名称:电话号计时器,并将该计时器移动到最上方。
打开‘新增学生’接口:将phone字段变更为:${phone},即引入计时器参数,在后面的变量、获取上游参数中都是这么来获取。
验证:打开线程组-->调整线程(用户)数为:2
运行后发现俩个接口运行了俩遍,且全部正确,则通过(不要忘记调整计数器哦!)。
上面是使用计数器来完成,我们也可以用随机数来完成,这里引用一个概念:函数。
函数
函数和上面计时器的引用方式一样,都是${}格式。
现在我们创建一个随机数函数:
点击‘函数对话框’图标:
"name":"法外狂徒张三",
"grade":"三班",
"phone":"${__Random(11111111111,99999999999,phone)}"
}
再次点击请求可以看到发送了俩个不同的11位随机数。
当然,jmeter提供很多的函数,这里就不做解释了,可以参考我另外的jmeter文章。
用户自定义变量
我们可以自己定义一些固定的值,在多个接口中用到的参数就可以提炼出来作为用户公共参数。
点击项目‘student测试’:
点击运行后,查看请求参数,发现phone已经完成调用了公共参数。
获取上游参数
在接口请求中,我们经常会在当前接口用到上面接口的返回值作为参数进行请求,这时我们就需要获取上个接口的返回值作为参数。
我们在新建一个接口:复制‘获取学生列表’接口,更改名称:获取指定学生信息,并把这个移到‘获取学生列表’接口的下面。
需求:我们需要获取‘获取学生列表’接口返回的第一个学生名称name作为‘获取指定学生信息’接口的请求参数name获取该学生的信息。
在‘获取学生列表’接口右键点击Add-->Post Processors-->json Extractor
然后在‘获取指定学生信息’接口添加参数name:${name}来获取指定学生的全部信息:
这样就完成了上游参数的获取,获取的参数可以在下面的接口任意使用。
json获取规则:$.主参数.副参数.集合[0].参数(具体看你获取哪一层的参数了)
读取csv/txt参数
在有的参数过多时,我们可以将参数放到txt或csv文件中,以指定的符号进行分割,然后作为参数供接口使用。
在桌面新建一个csv文件写入:
张三,18311112225
李四,18311112226
选择线程组点击:Add-Config Element--CSV DAta set Config
选择文件并设置参数名,默认就是以,分割的
"name":"${csvname}",
"grade":"三班",
"phone":"${csvphone}"
}
将线程组改为2。
运行后完成调用。
1
1
1
1
1
1
if(now()=sysdate(),sleep(15),0)
1qP33VRe')) OR 527=(SELECT 527 FROM PG_SLEEP(6))--
1
1
1
1
1
1
1
1
1
1
1
1
1
1
'"
1
1
1
comment
comment
1
comment/.
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
555
555
555
555
555
1
1
1
1
1
555
555
555
555
555