在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前置处理器及后置处理器,介绍了其在典型测试场景中的应用,希望能够帮大家进一步拓展这两类处理器的使用场景,在今后的工作学习中能够结合实际情况有效应用。


最后给测试人的一封信

IT工作是辛苦的,软件测试当然也不例外。

每天执行用例、跟踪Bug,

还要与开发、产品同学争吵PK,与人斗其乐无穷~

但正是因为这些默默的付出,

那是一场本该在用户面前发生的灾难,

提前在自己面前发生了

你是否有一种救世主的感觉?

你拯救了用户,也拯救了这一软件,

避免了她被撇弃、卸载的命运。

既然选择了测试这一行,何不一站到底~~

现在我邀请你进入我们的软件测试学习交流群,关注+私信我“测试”,即可拉你入群哟~~

大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

那我邀你进群吧!记得:关注+私信我“测试”,即可拉你入群哟~~

web 错误 处理你的请求时出错_最强辅助Jmeter技术干货:JMeter中处理器的另类玩法...相关推荐

  1. 第一次使用MsChart运行提示:ChartImg.axd 执行子请求时出错。

    第一次尝试使用MsChart提示:ChartImg.axd 执行子请求时出错. 解决方法,在web.config种做如下调整: <appSettings>     <add key= ...

  2. .Net Framework 4.5.1 ASP.NET MVC 5 下新建视图报“错误 运行所选代码生成器时出错 无法检索元数据 没有为该对象定义无参数构造函数”...

    当在控制器中新建视图的时候,选择的视图界面如下: 执行添加后报如下错误: 错误的内容为: 错误 运行所选代码生成器时出错 无法检索"XXX"的元数据 没有为该对象定义无参数构造函数 ...

  3. Google Chrome 更新失败(错误:3)检查更新时出错

    现在 Google Chrome 的稳定版都已经发布 39.0 版本了,我机上还是 31, 本想在线更新一下,结果点击菜单项中的"关于 Google Chrome"后,进入的界面提 ...

  4. VS2017登陆失败:我们无法刷新此账户的凭证、我们无法添加此账户发送请求时出错、评估期已结束,请登录以解除产品锁定

    一.问题: 点击登录后会显示如下窗口: [忘了截图,图片截于:(35条消息) Visual Studio 2017无法登录问题解决_kellyjucy的博客-CSDN博客_vs2017无法登陆] 二. ...

  5. 苹果执行请求时出错_iOS网络请求错误整理

    在iOS开发中经常会遇到网络请求的错误, 一方面可能会是自己网络请求的方式, 参数, 请求头等造成的; 另一方面可能就是后台写的接口出了问题; 所以看懂报错原因就显得尤为重要. 一. iOS错误状态码 ...

  6. oracle写入导出文件时出错,帮忙!EXP-00015:错误!EXP-00002: 写入导出文件时出错

    今天在同一个目录下做Release 9.2.0.6.0EXP导出,导了几个小表没问题,但是大点的上万条记录的表就有问题 1:小表正常: GXdbC% exp c_perf/gxcperf@gxdbc ...

  7. 创建声音流时出错_如何设计微交互创建出色用户体验方案

    ♝点击上方"交互设计学堂"关注我们,送电子书 很多人把微交互简单的理解为做个动效,实质上,我们通常见到的那些动效只是微交互构成中的一部分,属于反馈层面的视觉表达. 微交互既不是一个 ...

  8. 启动转换安装失败 拷贝windows安装文件时出错_男人的生产力工具:极速拷贝 效率神器 TeraCopy精品推荐...

    本文作者:lifeisgood Win系统文件管理器的痛点 多年以来,我一直怀疑Windows是为了降低工作效率.保护办公族健康而存在的.姑且不提漫长的系统启动过程,仅就每日使用频率最高的文件访问和管 ...

  9. word文档保存文件时出错_保存时如何自动创建Word文档的备份副本

    word文档保存文件时出错 Backing up your documents is always a good thing to do, but not always something we re ...

最新文章

  1. 使用python操作redis及简单应用
  2. 客户端负载均衡Ribbon之一:Spring Cloud Netflix负载均衡组件Ribbon介绍
  3. WZJ的数据结构(零)KMP
  4. angularJS 自定义元素和属性
  5. 5行代码帮你梳理EOS.IO的脉络
  6. SAP Cloud Application Programming bookshop 例子 Vue页面不能正常显示的原因分析
  7. 软件测试c语言代码_软件测试理论知多少?
  8. 听说java又过气了?看我运用大数据分析2019年java发展趋势!
  9. HTTP(1)---HTTP 工作原理
  10. 2022年9月中国数据库排行榜:榜眼、探花纷纷易主,AnalyticDB蝉联榜单十强
  11. #######好好好好##########知识图谱商业应用
  12. Android之USB打印
  13. 直通车优化,淘宝运营如何优化直通车
  14. LTE网络PCI规划
  15. 西门子real是什么数据类型_西门子PLC的数据类型及数据转换
  16. 没有 XXX 的手册页条目问题解决
  17. 51单片机入门——动态数码管显示详解
  18. Data Quality Services
  19. 齐博x1用户登录接口
  20. STM32学习记录:输入捕获应用

热门文章

  1. 服务器怎么操作系统版本,服务器怎么操作系统版本
  2. vs2015+opencv3.2.0配置的一些小事情
  3. linux申请cache和释放cache,Linux--- 手工释放系统cache
  4. api查询所有记录 zabbix_通过Zabbix API获取历史监控数据
  5. 8.0强行转换后变成了7_DCDC电源转换器应用FHP8N60型号,可替代FQP8N60参数的国外场效应管!...
  6. python笑傲江湖统计字数_基於Python的tf-idf算法实现:以《笑傲江湖》为例
  7. 计算机可以辅助解决哪些医学问题,计算机辅助医学影像诊查之关键学习技术研究...
  8. hive 修改分桶数 分桶表_疯狂Hive之DDL操作二(三)
  9. python模拟一个简单的取款机,python简单区块链模拟详解
  10. java笔试题_公司真题 | 用友2018秋招Java笔试题(四)