在性能测试过程中,碰到这样一个场景:一个搜索框,可用来搜索的类型有:“工号、姓名、英文名、邮箱、电话”等信息,每个类型的搜索都要支持模糊查询。虽然情况复杂,但这怎么可能难倒我们测试大大?开搞。
分析:
搜索框输入后,使用查询接口发送数据,发送的是JSON格式。
{
"search": "string"
}
方法1.针对这样的情况,因为用户随机发送求,那么首先想到的是JSON中的值stirng用变量表示,用户可以自定义这些变量,然后用随机函数来获取这个变量。至于这个变量的值,则用随机函数来实现。
①、首先添加用户自定义变量,在http请求上右键点击添加-配置元件-用户自定义的变量
② 变量配置如下:其中u1表示工号,u2表示姓名,还有u3等
③ u1使用_Random函数,路径:菜单栏,Tools-函数助手对话框,选择一个功能:_Random,然后设置此函数的最小值和最大值,以及这个数的变量,点击“生产”就会生产一个函数,如图
其他地方再调用此变量u1时,就会生产随机范围内的值。
④ name等其他变量,可用“CSV 数据文件设置” ,来从本机读取。
⑤ 那边就剩下随机读取u1到u5这5个变量了,笔者试了多个方法,都无法实现。例如发送的请求中,值也用函数:${__RandomFromMultipleVars(u1|u2|u3|u4|u5)} 来实现,结果后面调试时发,发现结果只能读取
没办法,此路不通了,再还条路搞起。
方法2:刚才的情况不行,无法随机读取变量,那么我们改进下,控制随机发送请求,不同的请求类型用不同的请求来实现:
①使用随机控制器。
在线程组上右键点击添加-逻辑控制器-随机控制器
然后,在此随机控制器下,添加不同的http访问请求:查询接口-姓名;查询接口-工号;查询接口-邮件等。每个请求的请求内容,可以用随机函数,也可以用CSV数据文件配置。
②线程组中,设置多个请求,在查看结果树中,查看请求结果,发现实现了,Perfect!
3. 测试时还发现关于编码格式的问题:请求文本是中文,发送时,请求中看到读取出来是乱码,经分析是因为文档编码格式和配置中的编码不一致;
另外还有发送的是中文,但返回数据为空,使用postman时是正常的。原因是因为发送的请求需要附件编码格式,使用UTF-8
总结:测试出现了一些不常见的场景,不要怕,看怎么让工具来明白我们的思想,怎么用机器语言来实现我们的想法。
另外,第一种方法,没实现想要的结果,也欢迎高手给出解决办法,谢谢!