Jmeter获取jtl文件中所有的请求报文

        大家都知道Jmeter运行测试可以产生jtl文件,里边包含了整个脚本的请求返回以及各种设置。近期遇到一个问题给大家分享下,就是作为性能测试组,从自动化测试组中拿到了一堆jtl文件,需要自己提取其中的请求报文。

        用Jmeter打开jtl文件可以看到,请求报文是xml报文,显示如下图:

Jmeter获取jtl文件中所有的请求报文_第1张图片

         把jtl文件改为txt文件,打开看到如下图:

Jmeter获取jtl文件中所有的请求报文_第2张图片

        内容还是比较多的,有N个请求,应该怎么提取呢,有Java基础的朋友应该可以使用代码直接提取,本人没有去实现,应该难度不是很大。那对于测试比较熟悉的我们,怎么使用jmeter工具来提取呢?

        我的思路是这样的:

        1.把原本的jtl文件只能在查看结果树的请求中看到报文,转变为使用BeanShell发送请求,可以在查看结果树返回中看到所有的结果。

       Jmeter获取jtl文件中所有的请求报文_第3张图片Jmeter获取jtl文件中所有的请求报文_第4张图片

        2.在查看结果树中,已经可以看到响应了,返回的是全部的原jtl文件内容,提取其中的报文就可以使用正则表达式,边界值提取器,得到自己想要的了,确定好请求的左右边界,匹配数字写-1,就是可以获取全部符合要求的报文了。

        简单来讲,就是把jtl文件后缀改为txt,在jmeter中使用beanshell取样器中写代码,读取文件,并把读取结果放到Jmeter变量中,使用调试取样器就可以看到结果。

Jmeter获取jtl文件中所有的请求报文_第5张图片

        3.这个时候获取data数据,不能简单使用${data}了,可以看做是综合的结果,获取时需要使用到ForEach控制器,因为多个jtl不能确定里边有多少个请求需要提取,所以循环的结束字段${data_matchNr}。

Jmeter获取jtl文件中所有的请求报文_第6张图片

         4.最后一步,获取变量并输出,因为之前输出时xml格式的报文进行了转义,这边做了一个还原,使用lang3包中的固定方法就可以实现,代码如下:

Jmeter获取jtl文件中所有的请求报文_第7张图片

         最终输出的txt文件,换行符隔开,可自行调整,然后用于性能测试脚本参数化,如下:

Jmeter获取jtl文件中所有的请求报文_第8张图片

         jtl文件较多,要进行路径参数化,把整个脚本内容放在一个事物控制器中,防止多线程下,获取到不同的结果,运行设置相应多的线程处理就可以了。

        相互学习,共同进步!

你可能感兴趣的:(jmeter,http,jmeter,java,测试工具)