JMeter接口测试-连接SQL Server
(1)下载jdbc驱动(注意下载对应版本),并放在jmeter的lib目录下,重启jmeter,如下图:
sqljdbc4.jar sqljdbc4-2.0.jar.zip 解压一下再放在lib目录下
(2)测试计划下配置驱动程序,如下图
点击浏览,把jar的路径添加进来
(3)添加配置原件JDBC Connection Configuration,如下图
(4)在JDBC Connection Configuration配置中填写相应项,注意通过sql账号密码连接SQL server和通过windows身份验证连接SQL server这两种情况下的填写项有所不同,下面会分别介绍
4.1通过sql账号密码连接SQL server,这里以通过账号SOPAdmin,密码SOPAdmin连接ebizflcnuat/SOP库为例
Variable Name:自己定义一个变量名
Database URL: jdbc:sqlserver://localhost:port;databaseName=***
localhost和port可以通过查看sql configuration manager获取,如下图,把Alias对应的server和parameters替换database url里的localhost和port值即可
JDBC Driver class:com.microsoft.sqlserver.jdbc.SQLServerDriver,固定写这个
Username:用户名
Password:密码
4.1通过windows验证连接SQL server,这里同样以连接ebizflcnuat/SOP库为例
下载sqljdbc_auth.dll(sqljdbc_auth(jb51.net).rar),并放到C:\Windows\System32,重新启动Jmeter
Database URL: jdbc:sqlserver://localhost:port;integratedSecurity=true;databaseName=***
JDBC Driver class:com.microsoft.sqlserver.jdbc.SQLServerDriver,固定写这个
Username和Password不用填
(5)添加JDBC Request,并填入对应参数,如下图
(6)引用sql返回的某一个字段值作为http请求的request 参数
参数引用:${JDBC Request中的变量名_N},N表示sql返回的该字段下面的第N行
例如我想取select top 10 * from dbo.permission_jobs返回的jobid字段的第7行的值,jobid我定义为变量a,引用参数的地方用${a_7}
(7)引用sql返回的批量字段值作为请求参数,用于压力测试
例如我想取select top 10 * from dbo.permission_jobs返回的10个jobid,依次去调用http请求2
【说明】
JDBC Request中Variables name:
假设variables names设置为a,b,c那么如下变量会被设置为:
a_#=10 (总行数) 因为我设置的sql是top 10,所以总行数是10条
a_1=第1列, 第1行
a_2=第1列, 第2行
c_#=10 (总行数)
c_1=第3列, 第1行
c_2=第3列, 第2行
可以使用${a_#}、${a_1}...来获取相应的值
(8)添加循环控制器,设置循环次数为总行数,如下图
(9)因为我们取的值是根据${a_N}来取的,那么这个N可以通过计数器递增的方式获得,我们需要添加一个计数器,如下图:
(10)引用参数的地方用${__V(a_${N})}
(11)运行脚本,查看结果树