Web Performance Test: 如果使用Plugin过滤Dependent Request
前言
由于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相关推荐
- Web Performance and Load Test Project错误集
当我们创建Web Performance and Load Test Project时,经常会遇到下面这些问题: 1. 当点击Add Recording时, 左边的record tree没有出现: 解 ...
- Visual Studio的Web Performance Test提取规则详解(1)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- web performance in action学习前言
今天开始研究学习<web performance in action>这本书,以后在这个专栏里记录自己学习的内容,希望通过原版的,能把这些技术学的更深入,好好应用的工作中,并分享给想学的朋 ...
- Web Performance评估工具介绍
谈到性能测试,我们首先想到的可能是从后端服务的接口入手,对服务进行性能测试,例如采用Jemeter,Gatling,LoadRunner等工具可以很方便的对后端接口进行压测评估系统性能.除了从后端接口 ...
- 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 在重启项目中会遇到[ ...
- 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 ...
- 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 ...
- 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 ...
- 解决: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] [ ...
最新文章
- 打工人必备的8款冷门软件,每一款都让人相见恨晚!
- Winform中对ZedGraph的曲线标签进行设置,比如去掉标签边框
- 软件工程师生存指南:面试准备、工作经验和实用工具
- Android之CheckBox进行代码设置setChecked(true)会触发setOnCheckedChangeListener事件
- 通过8个技巧让你成为一个超强的Linux终端用户
- paip.使用泛型时未能找到类型或命名空间名称“T
- 《Git与Github使用笔记》第8章 github常见操作和常见错误
- python多元逻辑回归_Python机器学习的练习四:多元逻辑回归
- CentOS6.5服务器端口捆绑
- ElasticSearch入门一(索引CRD和文档的CRUD)
- import java.sql.*;问题:The package java.sql is not accessible
- 2022云计算真题:日志分析服务
- python打印九九乘法表到文件_99乘法表打印_python怎么打印九九乘法表
- 2023年如何实习QQ强制拉人入群,QQ批量拉群,QQ强制拉群软件开发定制的思路解析
- 数据可视化、信息可视化与知识可视化
- 相遇3000亿美金之巅,阿里腾讯战力与血值几何?
- 用单片机c51电子秤的c语言,基于51单片机的电子秤系统设计
- android异常相机处理器,Android抛出错误:不幸的是相机已停止在Android模拟器中
- Illustrator教程之 在 Ai 2022中创建一个新文档
- loo-cv验证matlab,高光谱成像系统的基本原理,高光谱成像技术在红肉食用品质中的应用进展...
热门文章
- zend studio 10.6.2破解和汉化
- linux下用户及用户组的管理
- current online redo logfile 丢失的处理方法
- web项目在iis配置好后不能正确访问问题集锦,以及IIS常规设置
- java中子类继承父类时是否继承构造函数
- 水晶報表:金額轉換大寫12/8
- springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
- 软件设计师备考知识03
- mysql从挂了数据怎么恢复_详解MySQL误操作后怎样进行数据恢复
- java程序中默认包含的是_在编写 Java 程序时,如果不为类的成员变量定义初始值, Java 会给出它们的默认值,下列说法中不正确的一个是( )。...