51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3158|回复: 2
打印 上一主题 下一主题

[原创] JMeter前后置处理器的另类玩法

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-11-18 09:48:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    摘要:在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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 09:20 , Processed in 0.149634 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表