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设置的集合点【一般小于或等于线程数】,当请求没有达到集合点时,会处于等待状态;当请求达到集合点时,会一起执行,从而实现并发的效果。
执行脚本,可在察看结果树中查看同时提交的请求效果。同时可在聚合报告中查看各事务的性能测试结果分析。
六、自定义变量
日常接口压测过程中,存在每个接口请求头中都有带token的情况,当token过期后,执行脚本异常;因此我们需要替换接口请求头中的token信息,一个一个替换的话麻烦费时,因此我们可通过自定义变量并在对应位置引用;替换token时,只需改变量值即可。
七、番外话
性能测试还可能存在对接口进行持续施压的要求,可在线程组中进行设置。
jmeter接口性能测试【CSV文件读取+接口关联+设置集合点】的更多相关文章
- CSV文件读取类
最近项目中,经常需要读取Csv文件.基本步骤是: (1)按行读取 (2)然后将一行数据按逗号,分割为字符串数组 (3)将各列字符串转换成相应类型的数据 ,如int double类型 写了一个简单的Cs ...
- Python文件处理(txt、csv文件读取)
打开文件 使用Python内置的方法 open()可以打开文件 file object = open(file_name [, access_mode][, buffering]) file_name ...
- jmeter接口自动化-通过csv文件读取用例并执行测试
最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一.在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例.脚本可通过优先级参数控制执 ...
- JMeter循环读取CSV文件实现接口批量测试
首先要理解为什么要进行批量测试,当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响 ...
- Jmeter使用csv文件读取测试数据
最近有同事在测试过程中遇到需要造批量测试数据的问题,这些数据往往是同一种单据,但是单据的内容不同,如果手工创建就比较费时费力.那我们用jmeter的csv文件来读取测试数据就完美解决了这个问题. 我们 ...
- HTML5之FileReader文件读取接口
FileReader用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据. 1.FileReade ...
- Jmeter实现从csv文件中随机读取数据
一.需求 参数放在csv文件中,文件格式如下,需求每次从文件中随机读取一行数据. 二.步骤 1.在csv文件中新增加一列,pl 2.新增一个配置原件-随机数,设置如下: 50是文件数据的行数 3.新增 ...
- java实现接口导出csv文件
Tomxin7 Simple, Interesting | 简单,有趣 业务介绍 项目要求从数据库中查询出相关数据后,通过表格展示给用户,如果用户需要,可以点击导出按钮,导出数据为csv格式. 开发环 ...
- Jmeter之CSV文件读取
注意execl表生成的CSV文件的文件编码是GB2312和分隔符就好了
随机推荐
- 基于ASP.NET Core 6.0的整洁架构
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本节将介绍基于ASP.NET Core的整洁架构的设计理念,同时基于理论落地的代码 ...
- openstack中Cinder组件简解
一,Cinder组件介绍 概念 cinder组件作用: 块存储服务,为运行实例提供稳定的数据块存储服务 块存储服务,提供对 volume 从创建到删除整个生命周期的管理 二,常用操作 1.Volume ...
- 超详细 VS Code 配置C/C++教程
写在前面 如果您使用的电脑内存 \(\leq 4 \texttt{GB}\),建议您使用Dev-C++,否则会到时内存占用爆满,体验感不佳. 网上的很多教程都不够详细,这里我把每一步.每一个操作都详细 ...
- 如何干涉MySQL优化器使用hash join
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 前言 实验 总结 前言 数据库的优化器相当于人类的大 ...
- Bootstrap Blazor 开源UI库介绍-Table 虚拟滚动行
今天我们来介绍一下 Bootstrap Blazor 中 Table 组件的虚拟滚动行,什么是虚拟滚动呢,我查到的解释是:只渲染可视区域的列表项,非可见区域的 完全不渲染,在滚动条滚动时动态更新列表项 ...
- Rust基本数据类型
基本类型 Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型. 基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成: 数值类型: ...
- Fluentd 使用 multiline 解析器来处理多行日志
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247500439&idx=1&sn=45e9e0e0ef ...
- 查看docker容器占用的内存
# 获取容器ID docker ps => 3b7fa46d9d43 # 根据容器ID获取对应的进程 docker top 3b7fa46d9d43 => 179733 # 查看进程占用的 ...
- jenkins邮箱配置
- 等保审核 --- MySQL密码复杂度--和连接错误超时等
系统版本: Centos 7 MySQL版本: 5.7.19 架构: 主从架构 审计插件: validate_password.so(数据库自带5.6后版本都拥有此插件) 操作过程: 1). 安装va ...