今天在工作中遇到了这样一个业务场景:
一个请求的请求数据需要依赖数据库的查询结果,现在我想跑1000次该请求对应的线程,但是只想执行一次JDBC Rrquest请求,这个怎么做呢
解决这个问题,花了差不多两个小时的时间,也自己百度了、也在各个不同的测试群里面问了很多的大佬,在此也非常感谢各位大佬提出的宝贵建议,中午午休后,突然有了一个解决问题的思路,其实现在回想起来,还是自己基础没有打牢,解决问题的灵活度不够,这之前,自己在简书上面其实已经写了两篇文章(《Jmeter使用之跨线程传参》和 《jmeter如何将数据库的查询结果(Result variable name)作为参数进行传递(二)》),这两篇文章综合起来,今天这个问题就迎刃而解了,在此,记录一下解决的思路。
1、有一个请求,该请求的目的是获取某个套餐的详细信息,请求中的参数包括套餐id、套餐编号(activityNum)以及套餐分组(activityGroup),fiddler抓取的接口请求参数如下:
因为业务场景的需要,此处的套餐id、activityNum以及activityGroup不能写死,所以需要从数据库里面把符合条件的套餐先筛选出来
2、因为要跑1000次该请求对应的线程,但是又不需要每次都去执行一次JDBC Request请求(否则后续做压测的时候,会对数据库的压力非常大),于是想到了这么一个解决思路:JDBC Request请求放在setUp线程中,将响应的结果进行全局化,然后在业务压测线程中进行引用 。好了,思路有了,具体实施就简单了
步骤一:全局化JDBC Requet的响应结果
A、JDBC Request请求设置如下
B、全局化后面接口中需要的参数(id、activity_num、activity_group),以id举例
步骤二:接口中引用已全局化的参数