作者:秀珍冠秋晓雯 | 来源:互联网 | 2023-08-06 13:47
目 的使用jmeter对web业务进行一次完整的性能测试,包括录制脚本、脚本调试、设计场景、执行压测,记录结果、性能分析等,全面了解使用jmeter
使用jmeter对web业务进行一次完整的性能测试,包括录制脚本、脚本调试、设计场景、执行压测,记录结果、性能分析等,全面了解使用jmeter进行web性能测试流程。
在录制脚本前,需要先明确业务流程,需要添加的事务,需要创建几个线程等。
web业务中一个页面操作,会有大量的http请求,我们一般不关注单个请求的性能,而是某个操作整体的性能状况,所以需要将操作添加到事务,最终关注事务的性能状况。
本例查询业务,需要进行的操作主要有登录、搜索菜单、打开菜单、点击查询、注销登录等,其中一个虚拟用户,登录、注销操作只需要做一次,查询业务可以做多次,因此将注销放tearDown Thread Group线程组,所有主线程执行完成后,最后执行,且为了方便查询操作能和登录共用一个有效回话,登录和查询业务可以放一个线程组,录制完脚本后登录操作添加一个Once Only Controller,来实现登录一次,查询业务多次操作。
另外还需要根据实际情况,添加公共的默认COOKIE,http默认值等。
明确了以上问题,就可以在测试计划中依次添加,如下图:
2. 配置http代理服务器
测试计划准备好,就可以对http代理服务器进行设置,包括代理端口、过滤不需要录制的页面元素,如.png、css等页面元素,还需要对浏览器设置代理服务器,端口号要和http代理服务器中设置的一致
3. 录制脚本
http代理服务器和ie代理服务器都设置完成后,点击【start】按钮就可以进行脚本录制了。jmeter5.0后,在录制脚本过程中有recording框,和loadrunner类似,可以实时添加事务。脚本录制完成后,可以在响应的事务控制器下看到录制的脚本。
删掉不相干的请求,在录制过程中可能有非业务相关的请求,也一块记录,删除这些请求。
参数化,线程组添加CSV Data Set Config ,将登陆用户、查询条件等进行参数化,多并发时就会模拟不同用户、不同查询条件。
关联,如果有需要关联的参数,在相应的http请求下添加提取器,提取关联参数进行关联,关联参数的确定可以通过fiddler抓包确认,或直接询问相关的开发人员。
断言,根据实际需求在相关的请求下添加断言,来判断请求是否达到预期值。
登录事务添加一次性控制器
COOKIE共享,注销和登录在不同线程组,需要将登录COOKIE参数全局化,在注销线程组中引用。COOKIE参数化还需要修改配置文件jmeter.properties中COOKIEManager.allow_variable_COOKIEs=true,默认是false
测试计划中勾选Run Thread Group consecutively,这样多线程组就能顺序执行
所有事务控制器都要勾选Generate parent sampler,这样结果统计按事务统计,否则结果按每个http请求来统计。
以上完成后,就可以添加监控器、View Results Tree、Aggregate Report等,运行脚本,在View Results Tree查看,若有失败的请求,再根据实际报错情况进行调试。
参数化、一次性逻辑控制器:
关联:
全局化COOKIE参数,在注销中引用:
脚本调试完成后运行,在View Results Tree中查看,没有报错,调试成功
脚本调试完成后,就可以根据实际需求,设计压测场景进行压测了。本例设计的场景为5并发,每隔3s起1个并发,压测5min,完成后查看结果。
在jmeter默认的线程组中设置,不好实现以上场景,可以下载线程组插件,丰富不同场景需求。
本例用Stepping Thread Group (deprecated)来实现以上场景,如下:
Jmeter执行压测,GUI上执行多并发耗资源较大,一般不建议直接在GUI上执行,建议通过命令行执行脚本jmeter -n -t D:\jmeter\查询.jmx -l D:\jmeter\Qry.jtl -e -o D:\jmeter\
-n: 非GUI模式执行脚本
-t: 脚本文件(含路径)
-l: 测试结果保存文件(含路径)
-e: 测试结束后生成测试报告(html报告)
-o: 存放测试报告路径
如果压测结束,退出压测时报The JVM should have exited but did not.修改jmeter.properties中jmeterengine.force.system.exit=true,默认为false
压测结束后,在相应的路径下能看到生成的.jtl测试结果和.html测试报告,其中.jtl可以在jmeter中打开,.html测试报告中有已生成的各维度统计结果(表格、统计图等)记录性能指标结果(事务平均响应时间、TPS等)。
本例查询业务,我们只关注打开菜单和查询操作的性能状况,其他操作不关注,所以记录结果只记录【打开菜单】和【查询】事务。
从本例结果分析,1/5/10并发TPS按倍数递增,平均响应时间相差不大,性能平稳,从20并发开始,TPS增加明显变缓,平均响应时间增大,性能有下降趋势,60并发TPS开始下降,平均响应时间持续增大,错误率也明显增大,60并发达到性能瓶颈。
1并发响应时间趋势图:
60并发响应时间趋势图: