jmeter接口性能测试【CSV文件读取+接口关联+设置集合点】

一、前言

周计划上安排了个接口性能测试的任务,便开始了职业生涯的第一个接口性能测试。。。

接口进行压测之前,首先需要调通脚本。有两种方式,一种是通过抓包工具(如fiddler)抓取业务接口;另一种是通过jmeter进行脚本录制。

两者分别有各种的优缺点:

(1)Fiddler手工抓包:【优点】直接抓取业务接口;【缺点】对于性能测试小白可能比较困难(比如笔者自身,很难找到业务接口间的关联关系);

(2)Jmeter录制脚本:【优点】各业务接口间的关联关系可以从脚本中体现;【缺点】需要自己过滤无关紧要的相关接口(如下图中圈出部分已禁用的接口);

因笔者还是性能测试小白,所以选择了用jmeter进行脚本录制这种方式。

二、脚本录制

 根据性能测试要求,对所需要测的业务系统进行分析大概有多少个事务。如上图,分析得出业务系统有信息自检、填写信息、填写表单、上传材料、提交办件这5个事务。在测试计划下添加HTTP请求默认值、察看结果树、聚合报告,接下来添加线程组。

(1)测试计划右键添加线程组

(2)线程组右键新增事务控制器

 

添加事务控制器后,在录制脚本时,可以在“目标控制器”中选择对应的事务。

Generate parent sample:是否生成一个父取样,即将事务控制器下的请求看成一个整体(一般勾选该选项)。勾选后,在察看结果树和聚合报告中,只显示事务名称,不显示事务下具体的请求。

 (3)工作台右键添加HTTP代理服务器,(对应浏览器设置代理后)选择对应的目标控制器,并启动录制。

启动录制后,可去业务系统进行相关操作,此时jmeter会录制相关的脚本,产生的脚本就会显示在对应事务下,如图中“信息自检”下的很多接口,就是录制产生的。事务操作结束后,记得回到jmeter代理服务器页面停止录制,此时该事物的脚本录制结束。

PS:上图中,事务“基本信息”、“填写表单”、“上传材料”、“完成”的录制步骤同上,此处不过多描述。

三、关联参数

存在这样场景:上一个接口产生的数据,是下一个接口的入参。因此,可以用正则表达式提取器,提取上一个接口产生的数据,在下一个接口的传入参数中进行引用。 

 

 (1)通过正则表达式提取响应参数

选择对应接口>右键,添加>后置处理器>正则表达式提取器。以提取userCode为例。在正则表达式中填写引用名称、正则表达式以及匹配规则,在接口执行后即可提取对应参数;可通过添加Debug PostProcessor验证提取的参数值是否正确。

-------------------------------------------------------------------

正则表达式提取器相关说明:

Apply to:应用范围;

要检查的响应字段:数据源;

引用名称:其他地方引用时的变量名称,可自定义设置。引用方法为:${引用名称}

正则表达式:正则提取器,()括号里为要获取的的值。"userCode":"为左边界 ,"为右边界。括号里为正则表达式,用来匹配所需要获取的数据;

".":匹配除了换行符以外的任何字符;

"+":重复一次或更多次;

"?":重复零次或一次;

模板:$$对应正则表达式提取器类型。-1全部,0 随机,1第一个2第二个,以此类推,若只有一个正则一般就填写$1$;

匹配数字:匹配数据的所有结果。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1;

缺省值:匹配失败时的默认值。可以不写。

---------------------------------------------------------------------

(2)引用参数

在对应的接口对应的入参的值中进行引用,引用方法:${引用名称}。这样提取的参数值就会变成下一个接口的入参值,接口参数实现关联。

 

四、读取CSV文件

脚本基本跑通之后,为了可以进行多用户的并发,可以通过读取CSV文件引用多个用户变量(userCode)。上篇文章中有提及jmeter如何读取CSV文件,这里不过多描述。

(上篇博文传送门:https://www.cnblogs.com/dnjiang/p/11290521.html#4349303)

五、设置集合点

在进行接口性能测试(多用户并发)时,为了对一些接口施加压力,可以在对应的地方设置集合点(添加Synchronizing Timer)。根据Synchronizing Timer设置的集合点【一般小于或等于线程数】,当请求没有达到集合点时,会处于等待状态;当请求达到集合点时,会一起执行,从而实现并发的效果。

执行脚本,可在察看结果树中查看同时提交的请求效果。同时可在聚合报告中查看各事务的性能测试结果分析。

 

 六、番外话

性能测试还可能存在对接口进行持续施压的要求,可在线程组中进行设置。

 

转载于:https://www.cnblogs.com/dnjiang/p/11468878.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值