前言

由于Visual Studio的Web Performance Test是基于XML脚本的,留给用户修改测试行为的自由度并不高。因此,Plugin机制就对于实现很多客户化的配置显得很重要。

问题描述

当使用Web Performance Test进行测试,发送一个Request并收到Response后,框架会自动帮你解析Dependent Request,比如 -- css,javascript,图片等,然后再去请求这些资源。你需要做的是把 Parse Dependent Request属性设置为True:

这个功能很好,可以帮助你更真实地模拟实际的压力,但是由于对Dependent Request的解析是运行时动态解析的,因此从脚本中你是无法指定哪些Dependent Request并不想去请求。而我们不想去请求的原因可能是:

1,有的资源可能放在第三方的服务器上,比如用到了第三方的图片服务,但是你只想测试自己的服务。

2,有些第三方资源可能访问有问题,将导致测试用例失败。比如我遇到的是页面包含了google提供的jquery脚本,请求有时会抛出socket异常,测试用例就直接失败了。

3,第三种情况我猜测可能存在--即某些第三方资源对同一IP的访问有限制,可能导致资源有时请求成功,有时失败。

解决方案

我们通过Plugin来过滤掉我们不喜欢的Dependent Requests,

    public class RequestFilterWebTestPlugin : WebTestPlugin{public override void PreRequest(object sender, PreRequestEventArgs e){int count = e.Request.DependentRequests.Count;for (int i = count - 1; i >= 0; i--){if (e.Request.DependentRequests[i].Url.ToLower().Contains("****.com")){continue;}else{e.Request.DependentRequests.RemoveAt(i);}}}public override void PostRequest(object sender, PostRequestEventArgs e){int count = e.Request.DependentRequests.Count;for (int i = count - 1; i >= 0; i--){if (e.Request.DependentRequests[i].Url.ToLower().Contains("****.com")){continue;}else{e.Request.DependentRequests.RemoveAt(i);}}}}

以上代码很简单,继承WebTestPlugin, 在PreRequest和PostRequest方法中,移除掉e.Request.DependentRequests中不需要的Request。我们这里很简单,只是移除掉所有非****.com域的Dependent Requests,读者也可以自己实现更复杂的功能-- 黑名单、白名单、配置在配置文件中等等。

Binhua Liu原创,写于2013/9/29。

转载于:https://www.cnblogs.com/Binhua-Liu/p/3346121.html

Web Performance Test: 如果使用Plugin过滤Dependent Request相关推荐

  1. Web Performance and Load Test Project错误集

    当我们创建Web Performance and Load Test Project时,经常会遇到下面这些问题: 1. 当点击Add Recording时, 左边的record tree没有出现: 解 ...

  2. Visual Studio的Web Performance Test提取规则详解(1)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  3. web performance in action学习前言

    今天开始研究学习<web performance in action>这本书,以后在这个专栏里记录自己学习的内容,希望通过原版的,能把这些技术学的更深入,好好应用的工作中,并分享给想学的朋 ...

  4. Web Performance评估工具介绍

    谈到性能测试,我们首先想到的可能是从后端服务的接口入手,对服务进行性能测试,例如采用Jemeter,Gatling,LoadRunner等工具可以很方便的对后端接口进行压测评估系统性能.除了从后端接口 ...

  5. org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI

    org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI 在重启项目中会遇到[ ...

  6. org.springframework.web.client.ResourceAccessException: I/O error on POST request for ************

    org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://l ...

  7. WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/J

    解决:WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI ...

  8. org.springframework.web.client.ResourceAccessException: I/O error on GET request for http://localho

    org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://lo ...

  9. 解决:org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request;

    项目场景: 微服务修改保存,出现系统异常 问题描述 报错日志如下: | 2022-10-24 11:32:42.882 |-[1;31mERROR[m [http-nio-9000-exec-4] [ ...

最新文章

  1. 打工人必备的8款冷门软件,每一款都让人相见恨晚!
  2. Winform中对ZedGraph的曲线标签进行设置,比如去掉标签边框
  3. 软件工程师生存指南:面试准备、工作经验和实用工具
  4. Android之CheckBox进行代码设置setChecked(true)会触发setOnCheckedChangeListener事件
  5. 通过8个技巧让你成为一个超强的Linux终端用户
  6. paip.使用泛型时未能找到类型或命名空间名称“T
  7. 《Git与Github使用笔记》第8章 github常见操作和常见错误
  8. python多元逻辑回归_Python机器学习的练习四:多元逻辑回归
  9. CentOS6.5服务器端口捆绑
  10. ElasticSearch入门一(索引CRD和文档的CRUD)
  11. import java.sql.*;问题:The package java.sql is not accessible
  12. 2022云计算真题:日志分析服务
  13. python打印九九乘法表到文件_99乘法表打印_python怎么打印九九乘法表
  14. 2023年如何实习QQ强制拉人入群,QQ批量拉群,QQ强制拉群软件开发定制的思路解析
  15. 数据可视化、信息可视化与知识可视化
  16. 相遇3000亿美金之巅,阿里腾讯战力与血值几何?
  17. 用单片机c51电子秤的c语言,基于51单片机的电子秤系统设计
  18. android异常相机处理器,Android抛出错误:不幸的是相机已停止在Android模拟器中
  19. Illustrator教程之 在 Ai 2022中创建一个新文档
  20. loo-cv验证matlab,高光谱成像系统的基本原理,高光谱成像技术在红肉食用品质中的应用进展...

热门文章

  1. zend studio 10.6.2破解和汉化
  2. linux下用户及用户组的管理
  3. current online redo logfile 丢失的处理方法
  4. web项目在iis配置好后不能正确访问问题集锦,以及IIS常规设置
  5. java中子类继承父类时是否继承构造函数
  6. 水晶報表:金額轉換大寫12/8
  7. springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
  8. 软件设计师备考知识03
  9. mysql从挂了数据怎么恢复_详解MySQL误操作后怎样进行数据恢复
  10. java程序中默认包含的是_在编写 Java 程序时,如果不为类的成员变量定义初始值, Java 会给出它们的默认值,下列说法中不正确的一个是( )。...