一、前言

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

接口进行压测之前,首先需要调通脚本。有两种方式,一种是通过抓包工具(如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. 7个技巧让你写出干净的 TSX 代码

    原文链接:https://dev.to/ruppysuppy/7-tips-for-clean-react-typescript-code-you-must-know-2da2 "干净的代码 ...

  2. 第五十一篇:webpack中的loader(二) --less-loader

    好家伙 先扩充一下知识点: 什么是.less文件? 作为一名前端开发的同学,很多时候我们都无法避免地要去写大量的 CSS 代码, 而且耗费的时间还不少,所以学习一种能够提升开发效率的 CSS 预处理器 ...

  3. Makefile 文件的编写

    目录 目录 Makefile 编写规则 Makefile 编写规则 生成的目标文件:依赖文件 生成目标文件所需执行的动作(注:命令行前需加Tab推进) 例: VPATH=inc src main:ma ...

  4. 大促活动如何抵御大流量 DDoS 攻击?

    每一次活动大促带来的迅猛流量,对技术人而言都是一次严峻考验.如果在活动期间遭受黑产恶意DDoS攻击,无疑是雪上加霜.电商的特性是业务常态下通常不会遭受大流量DDoS攻击,且对延迟敏感,因此只需要在活动 ...

  5. DFS算法-求集合的所有子集

    目录 1. 题目来源 2. 普通方法 1. 思路 2. 代码 3. 运行结果 3. DFS算法 1. 概念 2. 解题思路 3. 代码 4. 运行结果 4. 对比 1. 题目来源 牛客网,集合的所有子 ...

  6. Grafana Mimir:支持乱序的指标采集

    Grafana Mimir:支持乱序的指标采集 译自:New in Grafana Mimir: Introducing out-of-order sample ingestion 很早之前在使用th ...

  7. 01-MyBatisPlus简介

    一.简介 官网:http://mp.baomidou.com/ 参考教程:https://baomidou.com/pages/24112f/ MyBatis-Plus(简称 MP)是一个 MyBat ...

  8. 7. Ceph 高级篇 - RBD块设备回收站、快照、克隆

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485298&idx=1&sn=b83fda07 ...

  9. Elasticsearch:Index生命周期管理入门

    如果您要处理时间序列数据,则不想将所有内容连续转储到单个索引中. 取而代之的是,您可以定期将数据滚动到新索引,以防止数据过大而又缓慢又昂贵. 随着索引的老化和查询频率的降低,您可能会将其转移到价格较低 ...

  10. Mysql三种日志(binlog,redolog,undolog)的作用和区别

    Mysql有三种很重要的日志也是面试经常涉及到的考点,分别是 binlog .redo log和undo log, 这里面binlog 是server层实现的日志,而redo log 和undo lo ...