一、 Jmeter参数化
1、 文件参数化
解释:
创建测试数据,将数据写入TXT文件文件中,然后Jmeter从文件中读取数据。例如用户注册
操作:
1、 首先在Jmeter下创建一个线程组,如下图:

2、 然后添加一个用户注册的HTTP请求。响应的接口信息如下图:

3、 添加完成HTTP请求后,通过接口文档进行HTTP请求的完善,如下图:

4、 创建参数化的文件,对用户名和密码进行参数化,参数化文件如下图(注意最后一行不要有空格):

5、 添加CSV Data Set Config组件,如下图:

各个参数项解释如下:

6、 编辑用户注册请求将用户名和密码进行参数化设置,如下图:

7、 添加查看结果数,作用可以对运行的结果进行查看,如下图:

8、 点击线程组设置循环次数为3,然后点击界面上的运行按钮,如下图:

9、 通过观察结果树,可以看出三次请求的参数和TXT中的数据是一致的说明 参数化成功;同时响应数据都是注册成功,说明接口调用也是成功的。如下图:

2、 用户定义的变量
说明:这种就是为了方便管理参数,只能有一个值,通常用在一个不经常变换的量上。比如说IP地址
1、 用户定义变量的添加如下图:

2、 配置说明

key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${ip}这样去取值,name就是你取的变量名称
示例如下:

3、 函数助手
函数助手的话可以随机按照规则生成一些参数,比如生成随机数,随机数取当前时间等。最长用的就是如下两种
 _Random,可以在你指定的一个范围内取随机值
1、函数的选取位置

2、函数的参数介绍

3、函数的调用和参数化调用方式一样,只需要将上图生成的参数名,复制到需要参数化的位置进行参数的替换即可。
 _time,如果在有一些需要传时间的情况下可以使用,日期格式是:yyyy-MM-dd HH:mm:ss、yyyyMMddHHmmss
1、函数的选取位置,同上
2、函数的配置介绍

3、使用方法同上
补充:
 _UUID
说明:这个就是每次会生成一个随机的uuid,都是唯一的
1、 函数的选取位置,同上
2、 函数的配置介绍

3、使用方法同上
二、 Jmeter关联
1、 关联的定义:将服务器返回的动态的变化的一个值,把他保存为一个参数,以供脚本里面后边需要用到参数化的地方进行使用
2、 关联的目的
脚本值写死,但是服务器返回值每次都是动态的不可预期的,服务器用不同的值做业务处理,进行校验,所以需要关联
3、 通过jsonpath插件进行数据的关联
通过添加金币的请求来说明关联的配置操作
1、 添加金币的接口参数说明

2、 因为添加金币的操作需要获取用户登录成功的session所以我们需要对登录后的session进行参数数的设置。在这里我们使用jp@gc - JSON Path Extractor(插件需要下载)插件进行数据的关联
3、 根据接口文档添加登录及添加金币的HTTP请求(sample>HTTP请求),同时添加察看结果树(监听器>查看结果树),由于金币操作需要用户登录的session所以还需要添加cookie管理器(配置原件中>HTTP Cookie管理器);配置完成后如下图:

4、 JSON Path Extractor的添加如下图所示:

5、 JSON Path Extractor配置说明,如下图:

JSonPath Expression值的配置说明:
先来看一下登录返回的值

登录成功后返回的是一个json格式的结果,它都是key:value的格式,我们要取的值为sign的值;通过观察我们可以看到sign在login_info的value值中,所以我们要取Sign的值就可以写成 $.login_time.sign,配置如下图:

配置完成后,需要将该出关联引用到HTTP Coolie管理器中,如下图:

6、 运行结果,如下图所示:
登录请求中的sign值

金币操作获取到的值:

三、 Jmeter断言
 Jmeter中的断言相当于是LR中的检查点作用就是检查数据的返回结果是否正确。如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。
 断言的添加如下图:

 断言的参数说明:

四、 Jmeter对数据库的操作
1、 导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql;导入方法选择测试计划本身,然后在界面右下角有浏览,打开进行jar包的导入,如下图:

2、 创建数据库连接配置,mysql的url、端口号、账号、密码(即获取数据库的相关信息,比如IP、端口等)
3、 添加一个JDBC Connection Configuration,如下图:

4、 配置JDBC Connection Configuration,指定数据库URL、JDBC驱动类、数据库连接用户名和密码,如下图:

jdbc:mysql://x.x.x.x:3306/数据库名?allowMultiQueries=true
IP地址:为数据库的IP地址;
Jxz为要连接的数据库名称
allowMultiQueries=true,如果不加该语句只能写一条SQL语句,添加后可以写多条
characterEncoding=UTF-8,可以解决插入数据库的乱码问题
5、 添加JDBC request请求,如下图:

添加完成后,就可以写SQL语句进行数据查询、修改等操作了,如下图:

Query Type参数说明:
  Select Statement:只能执行select语句
  Update Statement:可以执行insert和update语句
  Callable Statement:可以执行所有的SQL语句

================================================================

            如有错误,欢迎指正!  

Jmeter学习之— 参数化、关联、断言、数据库的操作的更多相关文章

  1. thinkphp5.0学习笔记(四)数据库的操作

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用PDO ...

  2. JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置

    众所周知,在进行接口测试的过程中,需要创建不同的场景(不同条件的输入,来验证不同的入参的返回结果).因而,在日常的自动化接口监控或商品监控等线上监控过程中,需要配置大量的入参来监控接口的返回是否正确. ...

  3. JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置

    前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...

  4. JMeter学习-026-JMeter 分布式(远程)参数化测试实例

    以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...

  5. JMeter学习-007-JMeter 断言实例之一 - 响应断言

    之前的文章中已经对如何录制 web 的请求进行了详细的描述,敬请参阅:JMeter学习-004-WEB脚本入门实战 同时,我们的手机应用(例如:京东.天猫.唯品会.携程.易迅 等等 App)所发出的请 ...

  6. JMeter学习-015-JMeter 断言之-Bean Shell Assertion

    前面的博文中有对 JMeter 中的 响应断言 进行了讲解并实例演示,详情敬请参阅博文:JMeter学习-007-JMeter 断言实例之一 - 响应断言. 在 JMeter 中总计提供了如下几种 B ...

  7. JMeter脚本参数化和断言设置( CSV Data Set Config )

    用Badboy录制了Jmeter的脚本,用Jmeter打开后形成了原始的脚本.但是在实际应用中,为了增强脚本的多样性,就要使脚本参数化.这里我以登录为例,参数化用户账号与用户密码.  图1 :原始脚本 ...

  8. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据

    脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1.   安装MySQL ODBC驱动程序 O ...

  9. Jmeter CSV 参数化/检查点/断言

    当参数的值没有规律且量不太大时,可以使用CSV Data set config这种方法. 案例: 应用Sogou自动搜索关键字: 软件开发测试,web功能自动化测试,性能自动化测试,Selenium以 ...

随机推荐

  1. haproxy支持的负载均衡算法详解

    目前haproxy支持的负载均衡算法有如下8种: 1.roundrobin 表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法.该算法是动态的,对于实 ...

  2. go语言项目汇总

    Horst Rutter edited this page 7 days ago · 529 revisions Indexes and search engines These sites prov ...

  3. Python基础:获取平台相关信息

    Windows 10家庭中文版,Python 3.6.4, 本文介绍了使用os.platform.sys三个模块获取Python程序的运行平台相关的信息. os模块:提供 各种各样的操作系统接口 os ...

  4. Ad Hoc Distributed Queries的启用与关闭

    启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_config ...

  5. java算法小例子

    作为一个程序员,有时候我觉得自己都不适合,因为自己数学不好,算法不好,脑子不够灵活.而对于算法,感觉就像是数学题,总觉得很难.以前上学,在班里总有几个什么都不好,但唯独数学很厉害,真气人!面对难题时, ...

  6. KnockoutJs学习笔记(四)

    由于Writable computed observables和How dependency tracking works的要求相对较高,我先跳过这两篇,学习Pure computed observa ...

  7. java8 - 5

    import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Lis ...

  8. js和php计算图片自适应宽高算法实现

    js Code: <script> $width = $(imgobj).width(); //图原始宽 $newheight = $(imgobj).height(); //图原始高 $ ...

  9. 【LOJ】#2292. 「THUSC 2016」成绩单

    题解 神仙dp啊><(也有可能是我菜) 我们发现,想要拿一段区间的话,只和这个区间的最大值和最小值有关系,那么我们考虑,如果一个区间[l,r]我们拿走了一些数后,使它的最小值是a,最大值是 ...

  10. HDU - 4420 2013icpc长春A 函数离散化 + st表

    思路:我们定义F(x) 为以x点为起点,向后(a - b)个里面有多少个白球,虽然x的范围是LL范围内的,但是白球的 个数只有1e5, 那么我们可以把连续一段相同的离散化到一起, 对于一个确定的长度为 ...