在JMeter中有两种类型的处理器,即“前置处理器”和“后置处理器”,主要用来对其覆盖范围内采样器请求和响应的内容进行修改或截获。
【前置处理器】
“前置处理器”,又称预处理器,可以在我们发出“请求”之前执行一些相关操作。例如,假设我们需要通过JMeter爬取被测站点的所有链接并随意点击任意链接,检查其有效性,这就可以通过JMeter前置处理器中的“HTML Link Parser”来实现,该前置处理器会对指定主机/域名上所有链接进行解析和验证。
【前置处理器DEMO】
在针对服务端做压测时,我们往往需要有这样的工作场景,多个虚拟用户并发访问服务端,但每个用户请求的URL各不相同,以百度服务端为例,其主机域名为“www.bai.com”,下属子各链接分别定位到不同的信息站点(如:百度新闻URL“http://news.baidu.com/”,百度学术URL“https://xueshu.baidu.com/”,百度文库URL“https://wenku.baidu.com/”等),我们希望不同虚拟用户并发访问基于主机的任意URL,从而更好地模拟多用户对服务端主机发起的任意URL请求。
下面我们通过JMeter前置处理器中的“HTML Link Parser”来实现这项测试任务。
·测试步骤如下:
1.创建多用户并发请求场景
2.通过JMeter将HTTP请求发送至被测web主机服务端www.baidu.com, 请求的URL为基于主机的任意URL
3.查看结果
·JMeter实现步骤
1.添加线程组
右键单击“测试计划”,添加一个新的线程组:添加——>线程(用户)——>线程组;
在“线程组”面板中,输入对应的线程属性,即虚拟用户数及其入场设置,这里仅创建10个虚拟用户,每个虚拟用户对服务端发出10次请求,即总请求数为10*10 = 100次请求。
2.添加WHILE逻辑控制器
由于需要模拟大量用户持续发送随机URL请求,我们通过WHILE逻辑控制器来循环这个场景,大家可根据实际情况设定WHILE循环的次数。
右键单击线程组:添加——>逻辑控制器——>While控制器;
3.添加HTTP请求
在WHILE逻辑控制器中添加HTTP请求采样器,右键单击While Controller:添加——>采样器——>HTTP请求;
在HTTP请求面板中,指定path为“/.*”,这样JMeter将直接向baidu服务端发起基于域名为www.baidu.com的任意请求。
4.添加前置处理器“HTML Link Parser”
为上述的HTTP请求采样器添加前置处理器,目的是为了解析主机中的所有链接;
右键单击上述HTTP请求:添加——>前置处理器——>HTML Link Parser;
5.添加视图结果树
右键单击线程组:添加——>监听器——>查看结果树;
6.运行测试
选择菜单栏上的运行按钮,执行测试后,选择查看结果树,会看到任意基于baidu主机请求的URL (可以手动点击STOP,即,停止循环),可以点开任何一个HTTP Request查看其请求的URL及响应的结果。
【后置处理器】
“后置处理器”顾名思义是指在“请求采样器”发出后执行的一些操作。例如我们有这样一个测试需求场景, 通过JMeter将HTTP请求发送到被测web服务端(如:www.google.com)并获得响应,我们希望JMeter在服务器响应出错的情况下能有效停止测试,这项任务可以通过后置处理器的协助来完成。
【后置处理器DEMO】
根据上述的后置处理器测试需求分析,下面我们通过JMeter具体实现这项测试任务。
·测试步骤如下:
1.通过JMeter将HTTP请求发送至被测web服务器www.google.com
2.JMeter收到来自google服务器的响应
3.如果服务器响应出错,JMeter停止当前测试
4.如果服务器响应正常(无错误),那么JMeter将继续执行后续测试任务
·JMeter实现步骤
1.添加线程组
参见上述“前置处理器DEMO中的STEP1”
2.添加JMeter元素
在当前测试任务中,需要添加的JMeter元素有:配置元件中的“HTTP默认请求”和采样器中的“HTTP请求”;
在线程组上右键单击选择:添加——>配置元件——>HTTP默认请求;
在“HTTP默认请求”面板中,输入被测服务端域名(如:http://www.google.com);
右键单击线程组:添加——>采样器——>HTTP请求;
在HTTP请求面板中,先不指定path,这样JMeter将直接向Google服务端www.google.com发起请求。
3.添加后置处理器
右键单击线程组:添加—>后置处理器—>结果状态操作处理;
结果状态操作处理允许在用户请求失败时停止线程或整个测试;
在结果状态操作处理面板中,选择“立即停止测试”,这样一来,当JMeter收到来自服务器响应错误时,将停止测试。
4.配置HTTP请求
在HTTP请求面板中,设置path为“xyz”;
从上面得知,当我们在path中输入“xyz”时,JMeter将向Google服务器创建一个URL请求为:http://www.google.com/xyz,很明显这个URL是不存在的,是一个错误的请求地址,因此Google服务器会返回错误相应。
5.添加视图结果树
右键单击线程组:添加——>监听器——>查看结果树;
6.运行测试
选择菜单栏上的运行按钮,执行测试后,选择查看结果树,会看到来自Google服务器的错误响应,并且测试在未完成100次请求时就停止了;
现在我们返回第4步,在HTTP请求面板中,指定path为“calendar”,即需要请求的URL地址为“http://www.google.com/calendar”,这是正确的URL请求地址;
重新运行后,打开查看结果树,可以发现Google服务端响应正常,并且测试将持续执行,直到完成所有100个请求为止。
【总结】
以上基于JMeter前置处理器及后置处理器,介绍了其在典型测试场景中的应用,希望能够帮大家进一步拓展这两类处理器的使用场景,在今后的工作学习中能够结合实际情况有效应用。
作者:罗狮小钉
来源:51Testing软件测试网原创