一、前言

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

接口进行压测之前,首先需要调通脚本。有两种方式,一种是通过抓包工具(如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文件读取+接口关联+设置集合点】的更多相关文章

  1. CSV文件读取类

    最近项目中,经常需要读取Csv文件.基本步骤是: (1)按行读取 (2)然后将一行数据按逗号,分割为字符串数组 (3)将各列字符串转换成相应类型的数据 ,如int double类型 写了一个简单的Cs ...

  2. Python文件处理(txt、csv文件读取)

    打开文件 使用Python内置的方法 open()可以打开文件 file object = open(file_name [, access_mode][, buffering]) file_name ...

  3. jmeter接口自动化-通过csv文件读取用例并执行测试

    最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一.在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例.脚本可通过优先级参数控制执 ...

  4. JMeter循环读取CSV文件实现接口批量测试

    首先要理解为什么要进行批量测试,当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响 ...

  5. Jmeter使用csv文件读取测试数据

    最近有同事在测试过程中遇到需要造批量测试数据的问题,这些数据往往是同一种单据,但是单据的内容不同,如果手工创建就比较费时费力.那我们用jmeter的csv文件来读取测试数据就完美解决了这个问题. 我们 ...

  6. HTML5之FileReader文件读取接口

    FileReader用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据. 1.FileReade ...

  7. Jmeter实现从csv文件中随机读取数据

    一.需求 参数放在csv文件中,文件格式如下,需求每次从文件中随机读取一行数据. 二.步骤 1.在csv文件中新增加一列,pl 2.新增一个配置原件-随机数,设置如下: 50是文件数据的行数 3.新增 ...

  8. java实现接口导出csv文件

    Tomxin7 Simple, Interesting | 简单,有趣 业务介绍 项目要求从数据库中查询出相关数据后,通过表格展示给用户,如果用户需要,可以点击导出按钮,导出数据为csv格式. 开发环 ...

  9. Jmeter之CSV文件读取

    注意execl表生成的CSV文件的文件编码是GB2312和分隔符就好了

随机推荐

  1. bat-MD文件转CSV文件

    目录 1. bat文件里面写死文件名 2. 拖入文件 注意:每个单元格不能出现字符[|.$.;] 1. bat文件里面写死文件名 @echo off && setlocal enabl ...

  2. 第八十三篇:Vue购物车(四) 总价计算

    好家伙, 1.总价计算 来了,又先是一波分析: 我们用一个计算属性amt 我们把item中被勾选的项用一个过滤器过滤器来 然后用一个循环相加,把商品的价格乘以商品的数量, 把这个总值返回出去, 然后组 ...

  3. 如何从零开始参与 Apache 顶级开源项目?| 墙裂推荐

    ​ 写在开头 从 2021 开始,有一个很有意思的说法经常在各大技术媒体或开源论坛中出现,「开源正在吞噬一切」.不论是否言过其实,从一个行业从业者的切身感知来看,开源确实从少数极客的小众文化成为主流的 ...

  4. Linux_more_less总结

    先写结论 : less is more,使用less 优于使用more more 和 less的区别 优于more不能后退,而less 就在其基础上增加了后退功能 less 可以使用键盘上的上下方向键 ...

  5. 【面试题】JS改变this指向的三种方法

    一.this指向 点击打开视频讲解更加详细 this随处可见,一般谁调用,this就指向谁.this在不同环境下,不同作用下,表现的也不同. 以下几种情况,this都是指向window 1.全局作用下 ...

  6. Openstack neutron:目录

    为什么? 最近一直在学习SDN方面的知识,本着"最好的学习就是分享"的精神,记录下本系列的文章,尝试更好地去理解SDN这一正当红的技术. 如何? SDN领域现在已经充斥了大量的公司 ...

  7. Java的lamda表达式/函数式接口/流式计算

    在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...

  8. Containerd 知识点

    1.查看安装Containerd的版本 # ctr --version ctr github.com/containerd/containerd v1.6.6 # ctr version Client ...

  9. ProxySQL的双层用户认证机制

    转载自:https://www.likecs.com/show-203802325.html 如果使用了ProxySQL来做中间路由,那么与我们平时登录数据库有一些区别:平时我们直接使用数据库的用户密 ...

  10. 在kibana中查看nginx日志的Discover,Dashboards

    官方的操作: 1.安装filebeat,配置filebeat获取nginx日志,来源有两种: 第一种是使用自带的模块进行收集,在modules.d目录中启用模块配置,运行Filebeat时启用模块,在 ...