博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jmeter接口性能测试【CSV文件读取+接口关联+设置集合点】
阅读量:5223 次
发布时间:2019-06-14

本文共 2052 字,大约阅读时间需要 6 分钟。

一、前言

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

接口进行压测之前,首先需要调通脚本。有两种方式,一种是通过抓包工具(如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

你可能感兴趣的文章
一个体验好的Windows 任务栏缩略图开发心得
查看>>
电商购物车产品在做什么?
查看>>
PTA-1028——List Sorting
查看>>
自己实现Java中List对象转换为JSON对象
查看>>
python数据类型之字典类型
查看>>
【effective c++读书笔记】【第2章】构造/析构/赋值运算(2)
查看>>
MyEclipse – MyEclipse9.0正式版的破解和激活方法(注册机)
查看>>
你不知道的JavaScript--Item20 作用域与作用域链(scope chain)
查看>>
【Android Developers Training】 5. 序言:添加Action Bar
查看>>
【Android Developers Training】 35. 序言:分享文件
查看>>
Php的异步处理
查看>>
转让接包相关事项
查看>>
【Beta】Scrum Meeting 7 & 与助教谈话
查看>>
HTML5/CSS3 第三章页面布局
查看>>
c# vs2008报表
查看>>
CentOS7安装memcached
查看>>
canvas画布
查看>>
Chapter 4 : Strings and Formatted Input/Output
查看>>
php引用变量
查看>>
用纯C语言写的一个植物大战僵尸的外挂
查看>>