自从开始学习利用Jmeter之后,我就被它在性能测试和接口测试过程中表现出来的灵巧性和扩展性所吸引。于是就在大神的辅导下找到了一种利用Jmeter对base64编码部分通过解码+参数化+重新编码进行报文重构的方法。这个过程用到了两个Jmeter插件:Dummy Sampler和 JSON Extractor。
一、两个插件
Dummy Sampler

Dummy Sampler 即虚拟采样器,常用于在做事端尚未开拓完毕时,仿照做事器相应。
Dummy Sampler 可通过Jmeter的Plugins Manager 进行下载安装,如图:
下载完成后,即可在取样器中找到它:
JSON Extractor
JSON Extractor即JSON提取器,可用于提取相应报文中的单个参数。
我们可以在后置处理器中找到它:
二、实现方法
第一步,解码:
首先在线程组中添加Dummy Sampler。在这里我们不是为了仿照做事相应,而只是借用它的输出进行base64解码。
参数如下:
个中,Response Code和Response Message设定为默认值即可。为了不对交易相应韶光产生较大影响,我们把Dummy Sampler的仿照连接韶光(Connect Time)、延迟韶光(Latency)、相应韶光(Response Time)均设置为1ms。并在Response Data部分用base64Decode()函数进行解码,并保存在Content变量中。
第二步,提取:
接下来,添加JSON Extractor,将Dummy Sampler仿照输出中须要参数化的变量提取出来:
个中:Names of created Variables即保存变量名,本例中为ReqSeqNo。
JSON Path expressions即json 路径表达式,也便是Dummy Sampler输出中我们要提取的字段名。
Match Numbers即匹配数字,0代表随机,1代表第一个,-1代表所有。
Default Values即默认值。
Compute concatenation var(suffix_ALL):是否统计所有,即保存所有匹配到值。
第三步,更换:
之后,便是把真正的HTTP要求报文中,base64编码部分提取出的变量用参数进行更换,然后重新编码,组成新的报文了:
这里我们用strReplace()函数将Content中ReqSeqNo变量对应的部分利用time()函数天生的字符串更换后,重新利用base64Encode()进行base64编码,这样一个新的报文就大功告成了。
如果你想看相应报文是否符合预期,还可以按照上面的解释如法炮制,把HTTP要求相应结果中的base64报文通过JSON Extractor提取,并利用另一个Dummy Sampler对其进行解码。
末了添加监听器组件,这样全体测试操持基本完成了:
三、总结
通过上述方法,我不必再利用其它工具对base64编码进行手工解码、编码,而且参数也是自动天生,轻松又愉快。当然你也可能会说,利用Dummy Sampler 只是用来对base64进行解码,为什么不直接在HTTP要求中用公式进行Decode和 Encode呢?这个方法我确实也考试测验了,但是末了出来的结果始终存在差错,手残党的悲哀啊。
恰好我刚学习了两个新的插件Dummy Sampler和 JSON Extractor,于是就想出了这个像拼乐高一样的办法。学习的过程是循规蹈矩,在不断考试测验的过程中灵巧运用,每每也能有新的创造。希望随着自己对Jmeter学习的深入,能够想出更大略有趣的方法和大家互换。
关注我的头条号+私信:【测试】,即可免费获取软件测试学习资料,同时约请进入软件测试学习互换群。