一、jmeter脚本编写及使用
下面是jmeter编写脚本的一些详细步骤:
1、测试计划全局变量设置
进入jmeter点击已创建的测试计划,看到jmeter右方对应的测试计划全局变量的设置
- 【host】:被测集群对应的公网地址为:47.113.116.224,图中为内网host,推荐使用内网host进行
- 【thread】:定义的压测线程的大小,根据需求修改值,全局生效,即所有线程组的线程数由该值控制
- 【holdime】:定义的压测持续时间大小,单位为秒(s),根据需求修改值,全局生效,即所有线程组的运行时间由该值控制
- 【port】:接口对应的请求端口号,若请求端口不变无需修改
2、线程组参数设置
在已创建的jmeter测试计划下选中对应已创建的线程组
- 【线程数】:根据需求可以使用默认的全局变量设置的线程数,上一步在测试计划全局变量中设置的thread线程数默认作为这里的线程数入参,若对当前线程组有特殊需求,可以直接输入具体值作为该线程组的线程数
- 【Ramp-Up时间】:根据场景需求设定该参数,默认为1。这个参数的意义即接下来花费多少时间将所有测试用户(线程)添加到测试执行中,若为1000个目标线程,Ramp-up时间为1000秒: JMeter将每秒添加一个线程(User);若为1000个目标线程,Ramp-up时间为100秒: JMeter将每秒添加10个用户。
- 【循环次数】默认勾选永远,若不勾选,需要传入循环次数的具体值,传入了需要进行的线程时间,必勾选循环次数为永远,这样才能按照需求的时间运行完相应的线程
- 【持续时间】:默认为全局变量的hostTime设定的值,也可根据自己的需求更改,使用【持续时间】前提是点击勾选了【调度器】
3、请求入参设置
点击线程组展开箭头展开具体线程组的内容
- 【HTTP信息头管理器】:选中并右击线程组,点击添加,选择配置元件,选择【HTTP信息头管理器】
根据请求的接口设置默认不变,若接口请求头Header有变动,根据需求添加
- 【CSV数据文件设置】:选中并右击线程组,点击添加,选择配置元件,选择【CSV Data Set Config 】
对于某些请求的入参,需要通过读取csv文件中的数据作为接口请求的入参,需要设置文件地址,若默认禁用,则该线程此接口入参无需csv文件,若需使用自己的csv文件作为入参,请确保csv文件路径及相关参数赋值正确,关于每个组件的禁用和启用,就是鼠标选中并右击对应组件,弹出操作框会有对应的禁用/启用选项若组件被禁用即不适用该组件
- 【HTTP请求】:选中并右击线程组,点击添加,选择取样器,选择【HTTP请求】
在HTTP请求设置中填入全局设置中的host及port,以及需要请求的接口路径和请求方式
4、断言设置
选中需要添加断言的HTTP请求,然后鼠标右击添加,选中断言,点击JSON断言,用的比较多的为json断言,常用的json断言为断言接口返回的code参数是否为0来判断是否通过断言。
如有特殊需求还可选择其他断言方式,根据接口返回参数和压测需求进行断言。
对于dubbo接口的断言,可以使用beanshell断言,这次测试的dubbo接口都不会返回code,可以观察接口返回的错误提示,使用beanshell断言可以比较灵活捕捉到接口返回的异常信息
可以看到只要接口返回的json数据包含exceptionMessage字段则认为接口失败
然后打印出exceptionMessage字段的报错信息。
二、jmeter脚本运行及查看结果
对于jmeter脚本的运行,你可以设置所有线程组一起运行,也可以启用具体的线程组进行运行
发压的线程数取决于全局变量设置的线程数,也可以单独给具体线程设置具体线程数
1、点击测试计划的名字进入对应的测试计划设置页面,设置想要的线程数和发压时间
2、点击jmeter中的运行图标:
然后等待运行时间结束
想要查看jmeter脚本的运行结果,主要依赖这两个监听器,添加方法是选中测试计划,然后右击点击添加--->选择监听器--->点击【查看结果树】和【聚合报告】就可以看到对应的元件已经生成
3、【查看结果树】:结果树中有每个请求的结果,默认是Text,可以看到通过断言的请求是绿色✔状态的,未通过断言的请求是红色❌状态的,点击具体的请求,可以看到取样器结果,请求,和响应数据,点击响应数据即可看到接口返回的响应的具体信息;若为错误请求,我们也可以通过返回的响应数据,通过复制返回的一些报错信息,排查是请求入参的问题还是接口本身的问题
4、【聚合报告】:运行结束后会生成聚合报告
聚合报告详细展示了每个线程组请求的样本数,平均值,99线,95线,异常率等信息,一般重点关注99线,95线,tps,qps,异常率。生成的聚合报告,只有在异常率为0或者极小异常率可忽略情况下才有参考意义,聚合报告中的样本数即脚本运行时间内请求的总数,平均值是每次请求响应的平均时间,99%百分位即99线,即99%的请求响应的时间为这个,95%百分位即95线,即95%的请求响应的时间为这个,吞吐量即为单位时间内服务器能够处理的请求数量,计算qps的方法为总请求数/运行时间,或者线程数/平均响应时间。