上次写了在接口的交互过程中,系统返回的内容,需要在接下来的交互中用到,从而把参数进行参数化的关联,这次写一下在压测过程中,如果每次发起请求参数名相同,单参数值需要替换的,我们需要进行的参数化。

在使用Jemeter做压力测试的时候,比如登录接口,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.或者注册接口也需要大量不同的用户名和密码的用户以达到目的。

一、使用CSV Data Set Config实现参数化

我们以上次说到的添加学生信息接口为例来实验。

首先通过Test Plan或者Thread Group或http请求的Add->Config Element->CSV Data Set Config添加

以下是CSV Data Set Config各个参数的简要说明:

  • FileName:参数化文件的读取位置,
  • File Encoding: 选择UTF-8
  • Varible Names: 变量名称。这里定义的变量名称,后面就可以直接用来引用了。(多个变量名称以逗号隔开。例如username,passwd。参数化文件中同样有对应的两列数据。)
  • Delimiter:分隔符,默认逗号。
  • Allow Quoated data: 是非选项,是否允许变量中间有分隔符,这里最好先默认false,数据中间最好不要有分隔符。
  • Recycle on EOF: 设置为True后,允许循环取值
  • Stop Thread on EOF: Recycle on EOF和Stop thread on EOF按需设置。是否循环,到结尾是否停止测试。
  • Sharing Mode: 设置是否线程共享,allthreads表示所有的线程都可以利用此参数化。

准备测试数据

添加学生信息接口

  • 请求URL:http://api.nnzhp.cn/api/user/add_stu
  • 请求方式  post
  • 参数 ,入参是json类型

参数名        必选     类型     说明

name           是       string    学生姓名

grade           是        string   班级

phone           是      string    电话

sex               否      string    性别,如果不传,默认为男

age               否    string    年龄 ,不传默认为18

add              否     string   地址,如果不传默认为北京市昌平区

返回参数说明

参数名         类型   说明

error_code  int       错误编码,1000为操作成功

msg            string   提示信息

创建学生账号的时候,手机号码不能重复,姓名我们也设置为不重复,则需要参数化的参数为:name,phone

新建文件userinfo.txt

填写相应的信息

引用方法是 ${}   ;其中{}内写入参数化中的变量。

线程数我们设置为1.循环11次,表示一个用户调用这个接口11次;因为文件中只有10条数据,我们可以看一下循环之后的效果;

点击运行,查看结果树

我们可以看到请求调用的11次,第一次的phone为1结尾;第二个请求获取的phone为2结尾;

第10个是调用成功的,第11个是执行失败的,手机号码重复的。

如果只从调用结果中我们看不出添加是否成功,所以可以添加断言来看是否达到了我们预期的效果;

APPly to:适用范围

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

Main sample only:仅作用于父节点取样器

Sub-samples only:仅作用于子节点取样器

JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

要测试的响应字段:要检查的项

响应报文

Documeng(text):测试文件

URL样本

响应代码

响应信息

Response Headers:响应头部

Ignore status:忽略返回的响应报文状态码

模式匹配规则:

包括:返回结果包括你指定的内容

匹配:(好像跟Equals查不多,弄不明白有什么区别)

Equals:返回结果与你指定结果一致

Substring:返回结果是指定结果的字串

否:不进行匹配

要测试的模式:即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理

此处我们选择响应文本,选择规则为包括,内容为:操作成功 ,意思为返回结果中包括“操作成功”则创建用户成功;

我们在来执行一次上面的操作:

我们可以看到最后一次执行的结果是红色的,查看断言结果为匹配失败。

二、使用函数助手对话框实现参数化

jmeter中创造函数随机数的工具在选项->函数助手对话框

在函数里选择一个功能,例如_Random

设置一个最小数,一个最大数和一个参数名,点击生成,生成函数字符串,放入到需要参数化的参数中

${__Random(1000,1100,name2)}

同样的道理,我们对手机号也执行此操作

我们再来执行一下操作

可以看到执行结果中,我们传入的参数为设置的随机数中的随机数,11次调用结果都是成功的,因为没有重复。

好了,这次jmeter的操作先说到这里,后续继续学习,加油~

jmeter 参数化学习笔记的更多相关文章

  1. JMeter接口学习笔记2017

    协议学习地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 本篇学习笔记来自于慕课网上学习JMeter的学习笔记 学习 ...

  2. jmeter接口测试 ——学习笔记

    JMETER常用操作 1.jmeter做http脚本 Http请求页面内容介绍 添加cookie 线程组-添加-配置元件--HTTP Cookie管理器 添加权限验证 不能使用普通用户修改学生金币,接 ...

  3. jmeter新手学习笔记(一)

    使用jmeter做接口测试--设置线程组 1.创建线程组 2.设置线程数配置信息 线程组:常用于模拟并发用户访问,例如需要100个用户访问该接口,线程数则设置为100 Ramp-Up Period:决 ...

  4. jmeter 参数化学习之CSV Data Set Config随机读取一行参数

    需要使用到循环控制器,if控制器,CSV Data Set Config,Random Variable 4个组件 如图 先在线程组下面放一个随机数生成器 然后在同一层级设置一个永久的循环控制器,记住 ...

  5. Jmeter学习笔记(十五)——常用的4种参数化方式

    一.Jmeter参数化概念 当使用JMeter进行测试时,测试数据的准备是一项重要的工作.若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据. 参数化是自动化测试脚本的一 ...

  6. ADO学习笔记之注入漏洞与参数化查询

    ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...

  7. JMeter学习笔记(三)

    D. User Defined Variables:用户自定义的变量,在此我们可以定义后面原件需要引用的变量并对其进行赋值.jsessionid一般是服务器返回的,每个用户返回的都不一样,所以在此不应 ...

  8. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二

    今天继续分享我的阅读<LEARNING HARD C#学习笔记>知识点总结与摘要二,仍然是基础知识,但可温故而知新. 七.面向对象 三大基本特性: 封装:把客观事物封装成类,并隐藏类的内部 ...

  9. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)

    前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获颇多,也深深为Jay哥的技术能力.架构能力和对于分布式系统的理解之深刻所折服.同时也因 ...

随机推荐

  1. CDR真实图片转水墨画效果制作教程

    CorelDRAW创造性滤镜组是最具有创造力的滤镜,使用里面的散开滤镜能够实现类似于水墨的表现手法,然后再结合图层的合并模式,让您的图片产生意想不到的视觉效果.本文将利用CorelDRAW软件中提供的 ...

  2. 移动的 touch事件中的touches、targetTouches和changedTouches

    touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表 通过一个例子来区分一下触 ...

  3. node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)

    node.js(API解读) - process 2011-10-28 17:05:34|  分类: node |  标签:nodejs  nodejsprocess  node.jsprocess  ...

  4. Java切换JDK版本的方法及技巧

    由于项目的不同安排,之前项目开发时,使用的jdk版本为1.8,现临时接手一以前项目,需要更换jdk版本. 安装 不再赘述,去Oracle网站(https://www.oracle.com/techne ...

  5. hdu2002 计算球体积【C++】

    计算球体积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  6. datetime库 日期与时间

    datetime是一个关于时间的库,主要包含的类有: date    日期对象,常用的属性有year,month,day time 时间对象,hour,minute,second,毫秒 datetim ...

  7. eventlet学习笔记

    eventlet学习笔记 标签(空格分隔): python eventlet eventlet是一个用来处理和网络相关的python库函数,且可以通过协程(coroutines)实现并发.在event ...

  8. C/C++中的64位整数

    C/C++中的64位整数(__int64 and long long) 在做ACM题时,经常都会遇到一些比较大的整数.而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31, ...

  9. Spring面试总结

    Spring面试总结 文件夹(?)[+] 1.什么是spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spr ...

  10. 从头认识java-15.7 Map(3)-介绍HashMap的工作原理-get方法

    接着上一章节.我们来讨论一下get方法. 1.还是利用上一章节的图 下图引用自:http://www.admin10000.com/document/3322.html 我们简单说一下步骤.就是通过h ...