1.简介

  前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了。今天这一篇主要是讲参数化,其实前边或多或少的介绍过类似的知识点,知识没有系统的讲解,由于这个在实际工作中用到比较多而且经常用到,所以宏哥今天将其单独作为一个主题来系统的讲解。

尤其是在用到jmeter工具时,无论做接口测试还是性能测试,参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景,例如:
  1)多个请求都是同一个ip地址,若服务器地址更换了,则脚本需要更改每个请求的ip
  2)注册账号,不允许账号重复;想批量注册用户时
  3)模拟多个用户登录,需要用到不同用户信息登录时
  4)上一个请求的输出结果用于下一个请求的参数传入,例如登录获取到的token信息,用于提交账单请求的参数调用

2.什么是参数化

  概念:根据需求动态获取数据并进行赋值的过程。

  参数化:通俗的讲就是在进行测试的时候,测试数据是一项重要的准备工作,每次迭代的数据当不一样的时候,需要进行参数化,从参数化的文件中来读取测试数据。例如:测试用户登录时需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。

3.jmeter的几种参数化方式

这里以下边的这个注册接口为例:接口地址:https://api.apiopen.top/api.html

开发者注册

请求方式:POST

请求地址:https://api.apiopen.top/developerRegister

Query参数名 类型 必需 描述 示例 e.g.
name string 用户名 peakchao
passwd string 密码 123456
email string 邮箱,用户反馈相关会邮件通知。 309324904@qq.com

返回示例:

{
"code": 200,
"message": "成功!",
"result": {
"apikey": "b9b3a96f7554e3bead2eccf16506c13e"
}
}

3.1在jmeter中,通过${变量名}来获取参数值。

1、用户定义的变量

1)线程组右键添加-->配置元件-->用户定义的变量,出现如下设置页面后

  输入名称、值;注意:名称可以自定义设置,如下图所示:

2)然后将设置后的变量名称,在注册、登录请求中进行参数化引用${ip}、${email}

  注意:引用的参数名跟用户定义变量设置的名称必须保持一致,宏哥这里例举了一个注册实例,如下图所示:

3)点击运行,查看结果树,显示成功,如下图所示:

2、函数助手获取参数值

1)选择菜单栏 选项-->函数助手对话框,弹出函数助手框,功能下面有多个函数可供选择,我们主要看下__RandomString,其他可以自行了解下哟

2)要进行多个账号注册(比如10个用户),注册信息要求邮箱 email 和用户名 name 不能重复;所以可以这么来思考,QQ邮箱后边的@qq.com段固定,那就对QQ邮箱前几位进行随机,页面设置如下图所示:

3)拷贝生成的函数字符串,粘贴进行参数引用,如下图所示:

4)设置线程组线程数为10,模拟10个虚拟用户的注册,如下图所示:

5)点击运行,查看结果树,显示成功,(宏哥这里只举例说明邮箱,用户名你可以模仿设置后《宏哥这里在“北京宏哥”后边加了一个随机函数random,这样北京宏哥后带有一个数字就不会重复了》,才能注册成功,否则会报用户名重复的错误)如下图所示:

3、CSV Data Set Config获取参数值

1)若需要注册的QQ邮箱不能随机,必须是用户真实提供的QQ邮箱进行注册的话,就采用以下这种方式,提前收集用户真实QQ号及昵称,存放在本地txt或者CSV文件(CSV文件默认逗号隔开),如下图所示:

2)线程组右键添加-->配置元件-->CSV Data Set Config,如下图所示:

关键参数说明:

  Filename:需要传入文件的完整路径。我的文件位于C盘目录下,文件名为users.txt。

  File encoding:参数文件的编码格式。可以不填。

  Variable Names:对应参数文件中每列的变量名,也是你要引用到请求中的参数变量名。这里第一列是用户名、第二列是密码、第三列是邮箱。变量名可以自定义。

  igonre first line(only used if Variable Names is not empty):当 CSV 文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。若首行未设置,则选择False

  Delimiter:文件中的分隔符,默认英文的逗号分隔。所以注意txt文档中每行多个参数用英文逗号分隔。

  Recycle on EOF: 设置为True后,允许重头循环取值;为False,当读取文件到结尾时,停止读取文件

  Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效。

  Sharing Mode:共享模式。All threads:所有线程,所有线程循环取值,线程1取第一行,线程2取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:当前线程,该测试计划内的所有线程都取第一行。

备注说明:这里我用通俗的语言大概讲一下Recycle on EOF与Stop thread on EOF结果的关联

Recycle on EOF :到了文件尾处,是否循环读取参数,选项:true和false

Stop thread on EOF:到了文件尾处,是否停止线程,选项:true和false

当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,通俗的讲,在前面控制了不停的循环读取,后面再来让stop或run没有任何意义

当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次

当Recycle on EOF 选择flase时,Stop thread on EOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误

3)使用CSV Data Set Config中定义好

a、直接参数化引用,如下图所示:

b、通过函数助手进行参数化引用,如下图所示:

4)设置线程组中线程数为3,执行后,输出如下结果:成功,如下图所示:

4.小结

1.在文件中输入变量的值时,尤其是.txt和.bat文件中的变量值之间要用英文的逗号隔开。
2.变量值中有中文时,要在后边勾选utf-8。
如果报错,请求不成功,注意检查是不是这两点没有注意到。

  好了,时间不早了,今天就分享到这里吧!!!

Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)的更多相关文章

  1. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  2. Jmeter(三十八) - 从入门到精通进阶篇 - 命令行运行JMeter详解(详解教程)

    1.简介 前边一篇文章介绍了如何生成测试报告,细心地小伙伴或者同学们可以看到宏哥启动Jmeter生成测试报告不是在gui页面操作的,而是在gui页面设置好保存以后,用命令行来生成测试报告的.这一篇宏哥 ...

  3. Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)

    1.简介 上一篇中介绍了如果想要同时发送多条请求,那么怎样才能让每条数据某些请求参数改变呢.这就用到了jMeter参数化.在实际测试场景中,我们往往还有这样的需求,登录后服务器响应的token作为下次 ...

  4. Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)

    1.简介 上一篇宏哥已经介绍了如何在Linux系统中安装Jmeter,想必各位小伙伴都已经在Linux服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在Linux系统下运 ...

  5. Jmeter(四十二) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 -番外篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  6. Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...

  7. Jmeter(三十二) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy5(详解教程)

    1.简介 这一篇文章,宏哥主要想讲解一下,录制完脚本不是就完事了,我们有时候还需要断言,看结果是否和我们预期的结果一致.这在测试中都是很重要的.用句老话说:只看结果不看过程. 2.录制脚本 想要断言, ...

  8. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...

  9. Jmeter(五十二) - 从入门到精通高级篇 - jmeter之跨线程组传递参数(详解教程)

    1.简介 之前分享的所有文章都是只有一个线程组,而且参数的传递也只在一个线程组中,那么如果需要在两个线程组中传递参数,我们怎么做呢?宏哥今天就给小伙伴或者童鞋们讲解一下,如何实现在线程组之间传递参数. ...

随机推荐

  1. PyQt(Python+Qt)学习随笔:QListView的flow属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的flow属性用于控制视图中的数据排列方向,其类型为枚举类型QListView.F ...

  2. 问题:PyCharm调试方法smart step into的用途

    smart step into为智能单步跟踪,当一行代码中有多个函数,想进入其中一个函数调测其他函数不进入调测时,使用该功能可以让调试人员选择进入的函数.如: 就可以选择需要调试进入的函数而其他两个函 ...

  3. 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤

    在使用Qt Designer进行GUI设计时,一般常规的步骤都是差不多的,主要步骤包括新建显示窗口.在窗口上按照规划的布局放置组件.设置初始化组件的属性.定义信号和槽函数的连接,一般后三步是每增加一个 ...

  4. 缩减项目代码中的大面积if策略

    参考设计模式 - 策略模式我们可以优化if-else代码段,而在Spring(Boot)中,借助ApplicationContext扫描,可以使代码更加干净. 话不多说,亮代码: 首先按照策略模式的写 ...

  5. Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721)

    Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能.Shiro框架直观.易用,同时也能提供健壮的安全性. 文章目录: 1.Shiro rememberMe ...

  6. CSS常用语法缩写

    使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.CSS常用语法缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:#000000可以缩写为#000;#33669 ...

  7. 第 6 篇 Scrum 冲刺博客

    每天举行会议 会议照片: 昨天已完成的工作与今天计划完成的工作及工作中遇到的困难: 成员姓名 昨天完成工作 今天计划完成的工作 工作中遇到的困难 蔡双浩 实现关注,被关注功能 补充注释,初步查找bug ...

  8. 百度前端技术学院-基础-day22-24

    第二十二天到第二十四天:JavaScript里面的居民们 task1 题目: <div> <label>Number A:<input id="radio-a& ...

  9. 【题解】P2610 [ZJOI2012]旅游

    link 题意 T国的国土可以用一个凸N边形来表示,包含 \(N-2\) 个城市,每个城市都是顶点为 \(N\) 边形顶点的三角形,两人的旅游路线可以看做是连接N个顶点中不相邻两点的线段.问一路能经过 ...

  10. Docker的容器使用与连接-Window

    启动容器 启动容器之前需要先拉取镜像,然后通过 run 命令启动容器,同一个镜像可以启动多个容器,只要执行多次 run 命令就行了.我们这边启动 centos 的镜像. PS D:\> dock ...