JMeter前后置处理器的另类玩法

发表于:2020-11-18 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:罗狮小钉    来源:51Testing软件测试网原创

  摘要:在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会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号