我们本篇文章演示在请求中,以Json形式的数据格式,实现JMeter参数化。

我们以小项目学院管理系统为例,下载地址:点击下载,里面有详细的启动配置说明和API接口文档。

接口文档如下:

学院-新增1) 请求方法:POST2) 请求地址:http://127.0.0.1:8000/api/departments/3) 请求JOSN报文:(需要Content-Type=application/json)4) 调用传入的json串如下(可新增多条,之间用,隔开):{"data": [{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}5) 新增成功返回报文:{"already_exist": {"results": [],"count": 0},"create_success": {"results": [{"dep_id": "T02","dep_name": "Java学院","master_name": "Java-Master","slogan": "java"}],"count": 1}}6) 新增失败id已存在-返回报文:{"already_exist": {"results": [{"dep_id": "T01","dep_name": "Test学院","master_name": "Test-Master","slogan": "Here is Slogan"}],"count": 1},"create_success": {"results": [],"count": 0}}
7) 新增失败json格式错误:{"status_code": 400,"detail": "请求体参数格式错误。"}

Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834

1、使用“CSV数据文件设置”组件实现参数化

例如:现在有一个需求,实现批量添加学院信息。

(1)测试计划中的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加配置元件"HTTP信息头管理器"组件:选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP信息头管理器
  4. 在线程组中,添加配置元件CSV Data Set Config组件:选中“线程组”右键 —> 添加 —> 配置元件 —> CSV数据文件设置
  5. 在线程组中,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  6. 在线程组中,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中包含的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)数据文件内容

先用Excel表格编辑所需的请求参数,内容如下:

我们需要把该文件保存为.csv格式。

然后使用Notepad++打开该文件,点击“编码” —> 转为UTF-8编码,防止中文乱码。

最终所得到的.csv格式文件的内容如下:

(3)线程组元件内容

如果需要使用CSV文件中所有的数据,需要设置线程组元件的线程数或循环次数。

因为在CSV数据文件设置组件中,有Recycle on EOFStop thread on EOF选项的关系,所以设置线程数和循环次数都可以实现,使用数据文件中的每一组数据进行测试。

(4)HTTP信息头管理器组件内容

因为我们要使用Post请求发送Json数据,所以需要在请求头中设置Content-Type=application/json

如果我们不在请求头中进行设置,默认请求头的Content-Type值为text/plain,(这在前面的Post请求文章中有详细的说明),并且在接口文档中也有明确的要求说明。

如下图所示:

5)CSV数据文件设置组件内容

如下图所示:

我一般常用操作,简单说明:

  • 文件名:就直接浏览选择文件即可,也就是使用数据文件的绝对路径。
  • 文件编码选择UTF-8
  • 变量名称:就是把数据文件的每个变量名都填写上,中间用逗号分割。
  • 忽略首行:选择True,如果CSV文件中首行写的是变量名称,选择忽略首行。
  • 分隔符:如果CSV文件中的数据,使用的是逗号隔开,就是默认值。如果是制表符,就用\t表示。
  • 是否允许带引号?:如果变量值中有引号就选择True,没有则默认False即可。
  • 其他一般默认选择。如果需求看上面说明中写的很详细,按工作中实际情况选择。

(6)HTTP请求组件内容

在JMeter中使用参数化变量的格式:${变量名}

编辑添加学院接口内容,如下图所示:

我们可以看到${变量名}中的引用变量名,是以CSV数据文件设置组件中变量名称中定义变量名为准。如果不在变量名称栏中定义任何内容,就以数据文件中的标题列名为引用变量名。

(7)脚本运行结果

该测试脚本运行结果如下图所示:

可以看到四个学院都成功添加到数据库中了。

我们再去数据库中查看一下,如下图所示:

这样就说明我们的JMeter测试脚本实现成功了。

2、使用“用户参数”组件实现参数化

接下来我们使用“用户参数”组件,来实现上面的接口。

(1)添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加配置元件"HTTP信息头管理器"组件:选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP信息头管理器
  4. 在线程组中,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  5. 在取样器中,添加前置处理器“用户参数”组件:选中“取样器”右键 —> 添加 —> 前置处理器 —>用户参数
  6. 在线程组中,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件,如下图所示:

(2)元件中的内容介绍

其实就是把上面示例中,CSV数据文件设置组件删除掉,然后在取样器请求的下一级,添加一个用户参数组件。

其他元件的内容都没有任何的改动。

所以这里指展示用户参数组件中的内容,其他组件看上面配置就好。

用户参数组件内容如下:

测试结果也是完全通过,数据能够直接存储到数据库中。

数据库中,如下图所示:

Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834

Jmeter基础之JMeter参数化补充练习相关推荐

  1. jmeter基础(二)-JMeter证书

    1.https的网站需要添加证书 第一次用JMeter录制脚本,浏览器和JMeter设置端口都一致.直接上去访问百度,发现访问不了,最终找到原因没有安装证书.但是http网站不需要安装证书 在JMet ...

  2. JMeter基础之组件的作用域与执行顺序

    对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低性能测试学习的热情,算我们熟悉了所有元件以及元件上的参数了,我们也不知道如何将其组合成我们想要描 ...

  3. 【虫师--系列】JMeter基础之--元件的作用域与执行顺序

    来自: http://www.cnblogs.com/fnng/archive/2012/12/27/2836506.html    作者:虫师 前面有介绍过jmeter的元件类别,对于新手来说,jm ...

  4. JMeter中如何实现参数化(CSV)

    1.参数化的定义 参数化是自动化测试脚本的一种常用技巧,可将脚本中的某些参数使用变量来代替.例如登录操作时,利用GET/POST请求方式传递参数的场景,可在脚本运行时指定参数的取值范围和规则. 脚本在 ...

  5. jmeter基础逻辑控制器之if控制器

    jmeter中存在很多逻辑控制器,类似于代码中的if条件控制,for循环等,接下来我们来简单介绍下jmeter中的if条件控制器. 接下来我们以获取主题列表接口作为示例: 然后将这个接口中的limit ...

  6. JMeter基础之一个简单的性能测试

    我们了解了jmeter的一此主要元件,创建一个简单的测试计划来使用这些元件.该计划对应的测试需求: 1)测试目标网站是www.51cto.com 2)测试目的是该网站在负载达到20 QPS 时的响应时 ...

  7. JMeter基础之——录制脚本

    JMeter基础之--录制脚本 Jmeter 是一个非常流行的性能测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细:很它的优点也有很多: ● 开源, ...

  8. 性能测试入门(二)转:JMeter基础之一 一个简单的性能测试

    转自:虫师博客 https://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html 个人总结: 关键词:固定QPS限制,线程组设置 测试需求. 1 ...

  9. JMeter使用CSV Data参数化,中文参数传递过程出现乱码问题解决

    JMeter使用CSV Data参数化,中文参数传递过程出现乱码问题解决 参考文章: (1)JMeter使用CSV Data参数化,中文参数传递过程出现乱码问题解决 (2)https://www.cn ...

最新文章

  1. C#-利用ZPL语言完毕条形码的生成和打印
  2. 立体栅格地图_更新丨智图栅格数据—彩色版地图,智臻智美,带来更好的业务体验...
  3. Leetcode--面试题 01.07. 旋转矩阵(Java)
  4. 开源Elasticsearch云托管服务,专享企业级服务
  5. 当前不会命中断点_原神:体验服新角色胡桃,0命就能起飞,难道是策划良心发现了?...
  6. WebLogic11g 安装配置规范
  7. python基本语言元素是_Python-基本语法元素
  8. 1342.将数字变成0的操作次数
  9. poj题目分类(转)--方便分类做题
  10. 《Spring微服务实战》读书笔记——构建微服务
  11. 【编程开发】之国际号码校验工具 Libphonenumber
  12. mac homebrew加速
  13. Python网络爬虫:下载漫画的正确姿势
  14. Fiddler调式使用(一)深入研究[转载]
  15. 网易2019实习生招聘编程题集合 - 题解
  16. 《支付机构外汇业务管理办法》正式发布 合作银行不得超过2家
  17. C#入门学习-----图书阅读器(WPF 用户控件技术)
  18. 【HTML教程(一)】HTML标签、模板和实例
  19. Linux环境 网络流量统计/proc/net/dev和/proc/net/snmp
  20. c basic library framework - simplec 2.0.0

热门文章

  1. win7系统怎么搭建web服务器,win7系统搭建web服务器的操作方法
  2. mysql concat键值对_mysql中concat函数实现数据库字段合并查询
  3. 基于matlab的prony方法实现,基于MATLAB的Prony方法实现
  4. 什么是应用管理与运维平台(ServiceStage)?
  5. 收集分享有用的注册表项
  6. 敏捷开发系列学习总结(10)——到底什么是敏捷开发?
  7. [JSP]自定义标签库taglib
  8. Cisco策略路由(policy route)精解
  9. 服务器硬件检测(采用mcelog)
  10. Ccover在hudson持续集成中的应用