Jmeter之JDBC请求参数化

转:https://www.cnblogs.com/rzln/p/8570480.html

在HTTPsample中,我们经常会使用参数化或者正则表达提取器(关联)使我们的请求参数转换为变量,以便更正确、多样的调试脚本。那么,同样是工作中经常用到的JDBC请求,它的参数化以及关联该怎么做呢?这篇文章给大家详细介绍JDBC请求的参数化。

环境准备

Jmeter(我使用的是3.1版本,最新版本为3.3,不影响本次演示)

一个可连接数据库

JDBC驱动

OK,下面进入正文。

A

首先,我们在测试计划下,把JDBC驱动包添加上,也可以将驱动包放入jmeter的lib目录下,即可自动加载。

B

然后,新建一个线程组→JDBC Connection Configuration(连接数据库组件)→JDBC Request(JDBC请求)

C

接下来,配置JDBC Connection Configuration

Ps 下面介绍比较重要的几个参数其他地方可照截图配置即可。

Variable Name:连接名称,自定义填写。

Validation Query验证查询,不同版本的填写格式可能不同(比如3.1是Select 1,2.6是Select1),格式错误会报错。最新的Jmeter3.3已经做成下拉框,比较人性化。

Database URL:数据库url,格式固定。

jdbc:mysql://{ip}:{port}/{dbname}?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

jdbc:mysql:// 表明连接的数据库是mysql

ip 数据库服务器地址

port mysql端口号

dbname 数据库名称

useUnicode=true 使用Unicode编码格式(字符集编码格式)

characterEncoding=utf8 使用UTF-8解码(字符集编码格式)

allowMultiQueries=true 允许多个query一起使用(1个请求中添加多个sql语句)

D

配置完毕,接下来填写JDBC请求

Variable Name:与JDBC Connection Configuration中的Variable Name保持一致

Query Type:语句类型,查询用select,增删改用update,一起用可以选择callable

Query:填写对应的语句(这里用了一个简单的查询语句作为示例)

E

以上,我们JDBC请求已经完成,我们添加一个查看结果树,看看请求结果。

JDBC请求响应正常。

准备工作已经完成,接下来,开始我们今天的目标。

将查询语句参数化

1

方法1:使用CSV元件,将语句对应的部分替换成CSV文件中内容(与http请求参数化方式一样)

查询结果正常,参数取值正常。成功!

2

方法2:使用占位符,将替换语句中对应的部分。

a:Query Type修改为Prepared Select Statement

b:在where子句中将参数数值填写为?

c :在下方的Parameter values中把值填上,多个参数用,分隔,数量与?保持一致(第一个值对应第一个?,以此类推)

d:Parameter types填为varchar,多个参数用,分隔,数量与?保持一致(不管什么数据类型均填写为varchar)

上图的查询语句最终为:

select id,stuid,cname,grade from score where id = 10 or cname = 娃哈哈;

我们来看一下结果

查询结果正确。成功!

注意:

1、Parameter values只能用在where子句中,如果放在查询字段中的话,它会将该字段的结果全部替换为值本身,而不是数据库的查询结果。如下:

查询结果如下,id没有正确获取,失败!

2、Parameter values也可以使用变量噢,也就是CSV元件中定义变量后,可以在Parameter values中使用${}引用,这个大家自己尝试一下,在此不做演示。

获取查询结果

上面只是介绍了如何给JDBC请求做参数化,那么,如果我想获取JDBC的查询结果,类似于正则表达式提取器获取http请求返回值,该怎么做呢?

由于查询返回的是一个结果集,以行列的形式呈现,所以,我们用通常的正则表达式提取是行不通的。但是,JDBC请求本身提供了这种功能,就是Query下方的Variable Name(与上方的连接名称不一样!!!)

Variable N

ame是按照查询结果列数取该列的所有值,多个参数以,分隔。我们以示例说明

Variable Name设置如图,为方便查看,我们添加一个Debug PostProcessor。查看参数结果。

下面是我们的查询结果

查看Debug PostProcessor结果

从Debug PostProcessor的结果来看,Variable Name中定义的test1,test2,test3,test4分别是查询结果中的第一、第二、第三、第四列所有的结果,test1_#则代表这一列结果的总数,也就是查询结果的总行数。如果要使用里面任意参数,直接${}引用就OK。

如果只想获取某一列的查询结果,有2种方法。

1

方法1:直接修改sql,只查询需要的那一列,Variable Name中填写1个参数即可。

2

方法2:指定参数的列数,比如cname的查询结果中为第三列,那么在Variable Name中可以写成这样,表示第一、第二列都为空,第三列的结果保存为test参数。

以上结果大家可以自己试验。

OK。现在我们知道Variable Name会将某一列的结果保存为数组,并可以直接引用,那么,我们现在想获取这个数组的所有结果,也就是获取这个字段所有的值,该怎么操作呢?

同样,有2种方法。

1

方法1:使用foreach控制器,因为Variable Name输出的是一个数组,那么就可以使用foreach控制器,将数组内的值全部取出来。

运行一下,查看取值结果

取值正常,成功!

虽然,foreach能够取出所有的值,但是foreach控制器是发现如果还能够往下取值,它就会自动循环,而不进行迭代。这在大多数情况不符合我们的使用需求。

2

方法2:利用计数器,进行每次迭代的更替取值。下面进行演示。

修改线程组设置,运行,查看取值结果

取值正确,成功!

使用计数器和JDBC的Variable Name配合,可以完成从数据库取值后,通过迭代来控制参数取值的目的。是不是觉得这种方式很熟悉?没错!其实咱们的CSV元件就是通过迭代来控制参数取值的。也就是说,使用上面这种方式,我们可以直接从数据库查到我们想要的数据,然后通过迭代来取值,从而省去了获取参数化文件和配置CSV元件的过程。

虽然,使用JDBC和计数器的方式来实现参数化略显繁琐,但是因为是直接从数据库中取值,所以即使数据发生变化,也不用去修改脚本。也不存在CSV文件路径、编码格式以及数据准确性等等一系列的问题。并且,由于JDBC请求只是作为获取数据来源用的,所以使用仅一次控制器即可,对本身测试的影响并不大(查询数据不大的情况下)。

以上,是本篇分享的所有内容,如有不合理之处,希望及时指出。

原文地址:https://www.cnblogs.com/ohlala/p/10986223.html

时间: 2024-08-30 03:09:50

Jmeter之JDBC请求参数化的相关文章

JMeter处理jdbc请求后的响应结果

JMeter如果进行JDBC请求,请求后的响应结果如何给下一个请求用(也就是传说中的关联),于是研究了一下,下面将学习的成果做个记录: 1.添加 "JDBC Connection Configuration"里面用来配置一些数据库连接的信息 2.添加一个“CSV Data Set Config”,用来在后续的JDBC请求中select语句中where条件参数化使用 3.添加JDBC请求 4.请求测试可以发现jdbc请求已经成果,并能在响应数据中看到返回的结果 5.那么接下来的问题就来了

jmeter之JDBC请求

jmeter不仅可以测试http请求,也可以执行JDBC请求的测试.本次以mysql为例,介绍JDBC请求如何完成发送 目录 1.环境配置 2.数据库连接配置 3.添加一个JDBC请求 1.环境配置 测试mysql请求,需要添加一个jar包,下载mysql-connector-java-5.1.23-bin.jar(网盘:链接:https://pan.baidu.com/s/1eYx5vNc3K4QIpiyx6UPgHQ 密码:wx2v),放到D:\Program Files\apache-jm

Jmeter 使用-JDBC请求

1.下载mysql-connector-java-5.1.7-bin.jar, 百度网盘地址: 链接:https://pan.baidu.com/s/1cLoPvhueyWMSbRCJIy4BBQ 密码:g9cg 2.测试计划->导入jar包(不同的数据库引入不同的jar包,本文中引用的是mysql) 3.创建线程->配置元件->JDBC Connection Configuration->进行数据库配置 4.线程组->sampler->JDBC Request->

接口测试之Jmeter中http请求参数化(九)

1.打开Jmeter,新建一个测试计划 2.选择测试计划,右击-Threads(Users)-线程组 3.接下来新建一个http请求,选择线程组,右击-Samper-HTTP请求. 4.输入服务器名称或IP:选择post方式:输入请求路径:输入请求参数. 5.再添加一个察看结果树查看请求结果,选择线程组,右击-监听器-察看结果树. 6.点击运行,再点击察看结果树查看结果. 原文地址:https://www.cnblogs.com/fxcity/p/10577525.html

jmeter JDBC请求连接测试mysql数据库

所有jmeter基本组件功能本文不做介绍.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错)我这里下载的是mysql-connector-java-5.1.7-bin.jar 1.准备好驱动包后,需要把jdbc驱动jar包引入测试计划.操作步骤如下图: 点击测试计划-->点击浏览-->选中mysql驱动jar包-->打开 2 OK,这样驱动就引入进来了.接下来新建一个线

SoapUI 之 JDBC请求

之前有试过Jmeter的JDBC请求,挺方便的,今天下午闲来没事,看见soapUI里面也有一个JDBC请求,便也来试试. 首先添加一个JDBC请求,然后直接把Jmeter的一些链接参数复制过去,一直报错,没法访问数据库.便到处百度查看了下,最后还是去官网上找到了答案,记录下来供分享,以后大家遇到类似的需要用到,可以不用撞破头啦! 1.添加一个JDBC request 2.添加完毕后,看到JDBC的内容页面: 需要我们自己去添加驱动以及连接字符串. 注意:驱动需要我们自己去下载,mysql-con

Jmeter JDBC请求-----数据库读取数据进行参数化 附带 SSH跳板机连接数据库

前期准备: jdbc驱动:mysql-connector-java-5.1.7-bin.jar Jmeter 要链接MySQL数据库,首选需要下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错) 第一步: 选择 测试计划-->点击 浏览-->选中mysql驱动jar包-->打开,引入驱动 第二步:新建一个线程组: 第三步:线程组下创建一个JDBC Connection Configuration配置原件: Var

jmeter(八)-JDBC请求(sqlserver)

做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197.190:1433;databaseName=ebank 数据库驱动:com.microsoft.sqlserver.jdbc.SQLServerDriver 下载sqljdbc4.jar放在apache-jmeter-2.6\lib下面 Sqlserver驱动包(jar)名称: Microsoft+SQL+Server+JDBC+D

Jmeter -- JDBC请求(sqlserver)

做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197.190:1433;databaseName=ebank 数据库驱动:com.microsoft.sqlserver.jdbc.SQLServerDriver 下载sqljdbc4.jar放在apache-jmeter-3.0\lib下面 Sqlserver驱动包(jar)名称: Microsoft+SQL+Server+JDBC+D