jmeter支持多种服务协议,包括:HTTP/HTTPS,SOAP,Java,TCP,JDBC,JMS等,虽然我们使用最多的是http/https协议,但其实JDBC协议在苍穹用处很大。
使用JDBC协议可以实时从数据库获取数据,对数据进行不同的参数化处理后,脚本在运行时可以根据需要引用参数名作为输入,实现不同场景的使用。
通过JDBC协议获取的数据属于动态数据,不同于静态数据参数化,动态数据参数化可提高脚本可移植性,增加脚本的寿命,减少维护周期和维护成本。
那如何通过JDBC协议获取数据呢?
请听小编继续分解。
01、添加数据库驱动
添加驱动的方式有两种,可在测试计划中添加驱动jar包的路径,还可以将驱动jar包放入至Jmeter安装路径的\lib\ext文件夹下。
驱动版本需根据数据库及其版本进行匹配。
下图是添加mysql驱动:mysql-connector-Java-8.0.20.jar。
02、添加JDBC Connection Configuration
在添加好数据库驱动后,接下来添加JDBC Connection Configuration,具体操作如下:
03、填写配置信息
重点关注名称(需保持与后续的JDBCRequst的名称一致),Database URL,JDBC Driver class(驱动),用户名和密码。
04、发送JDBC Request请求
发送JDBC Request请求,执行sql语句获取数据库的数据。
得到的数据自动成为Jmeter变量,可供Jmeter调用和操作。
05、查看JDBC请求结果
通过组件“查看结果树”,查看JDBC请求的响应。
如下图,JDBC请求返回结果列出了从数据库表得到的1999个fid值
06、Debug Sampler
在上一步中,JDBC请求后,可在查看结果树中查看请求结果,通过sql语句从数据库得到fid值,这些值可作为请求和计算的数据来源。
在JDBC请求中填写过一个输出变量-- materialFidQ1(本文第四步),但在Jmeter中不能直接引用materialFidQ1,那该如何解决呢?
Jmeter有它特殊的调试工具--DebugSampler。DebugSampler能打印出Jmeter变量,引用的参数名及参数值。DebugSampler是Jmeter调试利器,推荐大家使用。
如图所示,返回的Jmeter变量中列出了从数据库得到的1999个变量值。请注意变量值的前缀为JDBC请求中填写的materialFidQ1,通过数字下标标识不同的值,比如materialFidQ1_1,为第一个值’1028198142056595456’, materialFidQ1_1000为第1000值’1028209821440018432’等。
几个名词
1.数据池也即数组。
2.前缀:materialFidQ1。
3.下标:materialFidQ1_1的下标为1,materialFidQ1_100的下标为100。
4.数据池的长度也即数组的长度等于materialFidQ1_#的值,在这里为1999。
07、一个简单的使用
在DebugSampler中看到了参数名和参数值,一个简单的引用方式,直接通过${ materialFidQ1_1} 可得1028198142056595456这个值。具体如下图所示:
在Jmeter请求中通过引用参数” materialFidQ1_1”获取参数值” 1028198142056595456”。
在查看结果树中,我们可以看到引用${ materialFidQ1_1}成功获取到对应的值。我们可以更改下标来引用不同的值,比如${ materialFidQ1_99}引用第99个值。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!