项目测试过程中遇到需要连接Oracle数据库获取测试参数的场景,测试过程中遇到2个小问题:
1.如何使用jmeter访问orcale数据库;
2.实际压测过程中,为了节省资源,如何控制jmeter获取参数的过程只执行1次,后续是循环使用从Oracle数据库中获取的参数进行业务场景的压测。
本文是基于解决以上2个项目过程中真实问题进行阐述,记录问题的解决过程。
1. 安装插件
下载插件:https://download.csdn.net/download/laofashi2015/11974089
将该Oracle插件放在jmeter安装路径下的lib目录中,重启jmeter。
2.创建测试计划
2.1创建仅一次控制器--控制仅请求1次数据库
1.测试计划--(右键)-->添加.线程组
2.线程组--(右键)-->添加.逻辑控制器--->仅一次控制器;(敲黑板,此处如果不嵌套该控制器,执行时会不断向数据库发起请求连接,会造成不必要的资源浪费。我们执行时只希望请求一次数据库,获取到参数后进行参数化,循环读取参数化中的数据进行业务测试。)
3.仅一次控制器--(右键)-->添加.配置元件--->JDBC Connection Configuration,添加数据库信息
4.仅一次控制器--(右键)-->添加.Sampler--->JDBC Request,添加数据库请求信息(Variable Name和JDBC Connection Configuration中定义的Variable Name值相同),定义变量名:conPresentationId;
5.查看数据库查询结果:
2.2创建循环控制器
1.线程组--(右键)-->添加.配置元件-->HTTP信息头管理器,此处不再赘述
2.线程组--(右键)-->添加.逻辑控制器--->循环控制器,此处控制循环读取从Oracle数据库中获取的参数;
3.循环控制器---(右键)-->添加.配置元件--->计数器,计数器允许用户配置一个起点,一个最大值,增量数,循环到最大值,然后重新开始,继续这样,直到测试结束。
4.循环控制器---(右键)-->添加.配置元件--->HTTP请求,请求中需要引用JDBC Request中定义的变量名,${__V(conPresentationId_${N})};
5.线程组--(右键)-->添加.监听器---->查看结果树
6.执行测试计划,通过查看结果树可以看出,该测试计划已经实现了1次请求数据库,获取数据库参数;从数据库中获取的参数通过参数化的方式循环应用到http请求中。