当前位置: 首页 > 编程日记 > 正文

能和LoadRunner匹敌的VS2010/2012Web负载测试

VS自带的Web负载测试真的很大程度上能和专业的loadrunner媲美(只是Web方面),上个report图吧(如何实现,请往下拉)

看,能探测一堆的计数器(上面红色打叉的是代表超过了基线值)、还能跟踪sql的执行,下面讲讲如何实现的。

样板代码下载

大致过程分成如下:新建测试工程、添加Web性能测试(和实现)、 添加负载测试(和实现,负载测试实际上是不断的调用Web性能测试)、运行负载测试看结果、调整性能。

新建测试工程:忽略(`(*∩_∩*)′)

添加Web性能测试

实现Web性能测试(先了解测试对象,需求如下)

我们需要分别给以上情况编写测试用例,如下:

  • User Name不填、Email不填==》页面不跳转,并且出现消息User Name cannot be empty.
  • User Name填、Email不填   ==》页面不跳转,并且出现消息Email cannot be empty.
  • User Name不填、Email填   ==》页面不跳转,并且出现消息User Name cannot be empty.
  • User Name填、Email填      ==》页面跳转至Thanks.aspx,并且出现消息Thanks

因此,需要分别给上述4种情况加入测试配置(不是测试代码,因为这里都是配置出来的...),如下图:

上面由于是要模拟form的Submit操作,并且使用的是asp.net webform技术,因此form域比较抓狂(要是用mvc技术就方便多了,在性能测试时记得不要考虑csrf攻击,或者直接忽略掉),而且不要忘记把Submit按钮写进去(value=1)

简单而言,每一个request的测试逻辑是这样的:

  1. send request 到 目标path(拼装好post/get, querystring, form field)
  2. get response
  3. 根据验证规则,开始验证

添加负载测试

实现负载测试

测试组合:"Register"是第一步中那个Web性能测试的名字,由于目前只有1个Web性能测试,所以前缀是[100%]

浏览器组合:工具能够模拟客户端浏览器类型分布百分比,来模拟实际情况

计数器集:这里有成堆成堆的计数器,里面有的是定义了阀门值的(有的没有定义),定义的阀门值分成2种:Warm和Alert,比如:CPU有个计数器叫:% Processor Time,这个计数器要求尽量低点,它有如下设置:

发出警报:true代表超出后会在最终的report中以图表的形式出现,比如本篇的第二张图中的那一连串的cpu处理时间。

大家一看就明白意思。

运行设置1 的属性窗口:


SQL跟踪:用来跟踪本地/远程数据库的sql执行情况(比如能跟踪到最耗时间的sql脚本找出来,这样就能够优化sql了)

采样速率:如字面意思...

运行持续时间:如字面意思...

预热持续时间:假设设置了5秒的预热持续时间,则负载测试开始后的5秒内不会进行请求,而是等待状态,等5秒后进行疯狂的请求动作

漏了个关键参数,如下:

负载测试被设置成了恒定有25个用户同时进行请求。

运行负载测试:略

调整性能

要回过头来看看第一张图,里面有 “最慢的5个测试”、“最慢的5个sql操作”,然后就具体情况具体优化了。

样板代码下载

本篇只说了负载方面的性能测试(偏外观的探测行为),其实VS还自带了一个功能强大的性能分析工具,它能监控内存、C#对象使用量,是偏内部的分析,等以后再说这个工具。

请大家点下“推荐”按钮吧...

相关文章:

设置编码格式为utf8

response.setCharacterEncoding("UTF-8"); 在Servlet2.3中是不行的,至少要2.4版本才可以,如果低于2.4版本,可以用如下办法: response.setContentType("text/html;charsetUTF-8"); pageEncoding"UTF-8&qu…

Linux 命令集锦

linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl M -i4# lsof -i | grep 9054 如果退格键变成了:"^h"。 终端连接unix删除退格键,按住CTL键同时按deleteLinux搜索 # find / -name "xxx.conf"查看linux是32位还是64位的命…

mysql (双主,互主)

Master-Master(双主) 1、测试环境 Master/Slave Master1/Slave1 IP 192.168.1.13 192.168.1.10 为了保持干净的环境:两边服务器 rm -rf /var/lib/mysql/* service mysqld re…

熬夜都要看完的 Python 干货!

结合我最近这些年的Python学习、开发经验,发现超90%的人在初学Python时都会遇到下面这些问题:没经验不知道怎么开始学,应用方向太多了根本不知道该怎么选择!各基础入门看似简单,但一到进阶部分就举步维艰,遇…

Linux下二进制文件安装MySQL

MySQL 下载地址:https://dev.mysql.com/downloads/mysql/ 并按如下方式选择来下载安装包。 1. 设置配置文件/etc/my.cnmore /etc/my.cnf [client] port 3306 socket /tmp/mysql.sockdefault-character-setutf8[mysqld] usermysql port 3306 server_id 1 socket/…

解决远程桌面无法连接问题

如果 出现的提示如下:---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一…

这些算法在印度农村医疗中发挥极大作用,未来还将发挥哪些作用?

作者 | Apoorva Mandavilli译者 | Jhonny,责编 | Carol来源 | Unitimes在结核病猖獗的印度农村等地方,用于扫描肺部X射线的 AI 技术可能有助于消除这种疾病之苦。印度农村马哈拉施特拉邦的 Chinchpada Mission 医院在世界上一些最偏远和最贫困的角落&…

四层和七层交换技术-loadbalance

1 四层交换技术简介 我们知道,二层交换机是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。三层交换机是直接根据第三层网络层IP地址来完成端到端的数据交换的。四 层交换机不仅可以完成端到端交换,还能根据端口主机的应用特…

sql server mvp 發糞塗牆

http://blog.csdn.net/dba_huangzj/article/details/38295753

几行代码完成动态图表绘制 | Python实战

作者 | 小F来源 | 法纳斯特头图 | CSDN下载自视觉中国关于动态条形图,小F以前推荐过「Bar Chart Race」这个库。三行代码就能实现动态条形图的绘制。有些同学在使用的时候,会出现一些错误。一个是加载文件报错,另一个是生成GIF的时候报错。这…

inline-block元素4px空白间隙的解决办法

为什么80%的码农都做不了架构师?>>> http://www.hujuntao.com/archives/inline-block-elements-the-4px-blank-gap-solution.html 转载于:https://my.oschina.net/i33/blog/124448

Ubuntn删除软件

删除dpkg -r 软件清除dpkg -P 软件也可以用sudo apt-get remove 软件 这种方式移除这种方式install的

对象Equals相等性比较的通用实现

对象Equals相等性比较的通用实现 最近编码的过程中&#xff0c;使用了对象本地内存缓存&#xff0c;缓存用了Dictionary<string,object>, ConcurrentDictionary<string,oject>,还可以是MemoryCache(底层基于Hashtable)。使用缓存&#xff0c;肯定要处理数据变化缓存…

Android:ViewPager为页卡内视图组件添加事件

在数据适配器PagerAdapter的初始化方法中添加按钮事件&#xff0c;这里是关键&#xff0c;首先判断当前的页卡编号。必须使用当前的view来获取按钮。 Overridepublic Object instantiateItem(View arg0, int arg1) {if (arg1 < 3) {((ViewPager) arg0).addView(mListViews.g…

解析C语言中的sizeof

一、sizeof的概念 sizeof是C语言的一种单目操作符&#xff0c;如C语言的其他操作符、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于…

开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势

​2020年12月2日&#xff0c;“OpenI/O 2020启智开发者大会”在北京国家会议中心召开。大会以“启智筑梦 开源先行”为主题&#xff0c;立足于国际国内开源大环境和发展趋势。开源领域顶尖专家学者和企业领军人物共聚一堂&#xff0c;探讨开源开放呈现出的新形势、新格局、新机…

linux中编译C语言程序

1.首先安装gcc编辑器 yum install gcc* -y 2.编写C语言程序 [roottest ~]# vim aa.c #include<stdio.h> int main( ) {int a;printf("请输入一个三位数的整数:");scanf("%d",&a);if(a>100&&a<1000)printf("百位是&#xff1a…

typedef的四个用途和两大陷阱

typedef的四个用途和两个陷阱 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;…

升级版APDrawing,人脸照秒变线条肖像画,细节呈现惊人

作者 | 高卫华出品 | AI科技大本营随着深度学习的发展&#xff0c;GAN模型在图像风格转换的应用越来越多&#xff0c;其中不少都实现了很好的效果。此前&#xff0c;reddit上的一个技术博主AtreveteTeTe基于GAN模型混合将普通的人像照片卡通化&#xff0c;并通过First Order Mo…

error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

1 这个error是什么原因造成的 cmake默认选择的是x86&#xff0c;即32位的生成子。 2 怎么解决这个error 在cmake ..的时候&#xff0c;在后面加上“-G "Visual Studio 12 2013 Win64"”选项即可。 3 怎么在CMakeLists.txt中进行相应的设置来解决这个问题 这个还未知。…

Linux的epoll

在linux的网络编程中&#xff0c;很长的时间都在使用select来做事件触发。在linux新的内核中&#xff0c;有了一种替换它的机制&#xff0c;就是epoll。 相比于select&#xff0c;epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中&#x…

[QA]Python字节码优化问题

这篇文章来自在Segmentfault 上面我提出的一个问题 问题背景&#xff1a; Python在执行的时候会加载每一个模块的PyCodeObject,其中这个对象就包含有opcode,也就是这个模块所有的指令集合&#xff0c;具体定义在源码目录的 /include/opcode.h 中定义了所有的指令集合&#xff0…

【滴滴专场】深度学习模型优化技术揭秘

滴滴拥有海量数据以及 AI 推理需求&#xff0c;GPU 在人脸识别、自动驾驶、地图导航等场景大量使用&#xff0c;滴滴云IFX团队针对斯坦福 DAWNBench 榜单的 ImageNet 模型也进行了深入优化&#xff0c;在 NVIDIA T4 上达到了 0.382 ms 的 Inference Latency 性能&#xff0c;打…

11.python并发入门(part9 多进程模块multiprocessing基本用法)

一、回顾多继承的概念。由于GIL&#xff08;全局解释器锁&#xff09;的存在&#xff0c;在python中无法实现真正的多线程&#xff08;一个进程里的多个线程无法在cpu上并行执行&#xff09;&#xff0c;如果想充分的利用cpu的资源&#xff0c;在python中需要使用进程。二、mul…

将不确定变为确定~Flag特性的枚举是否可以得到Description信息

回到目录 之前我写过对于普通枚举类型对象&#xff0c;输出Description特性信息的方法&#xff0c;今天主要来说一下&#xff0c;如何实现位域Flags枚举元素的Description信息的方法。 对于一个普通枚举对象&#xff0c;它输出描述信息是这样的 public enum Status{[Descriptio…

中科大“九章”历史性突破,但实现真正的量子霸权还有多远?

作者 | 马超 出品 | AI科技大本营 头图 | CSDN下载自视觉中国 10月中旬&#xff0c;政府高层强调要充分认识推动量子科技发展的重要性和紧迫性&#xff0c;加强量子科技发展战略谋划和系统布局&#xff0c;把握大趋势&#xff0c;下好先手棋。 今天&#xff0c;我国的量子科技领…

php析构函数的用法

简单的说,析构函数是用来在对象关闭时完成的特殊工作,比如我写的上例,在实例化同时打开某文件,但是它什么时候关闭呢,用完就关闭呗,所以析构函数直接关闭它, 又或者在析构时,我们将处理好的某些数据一并写进数据库,这时可以考虑使用析构函数内完成,在析构完成前,这些对象属性仍…

泛型中? super T和? extends T的区别

经常发现有List<? super T>、Set<? extends T>的声明&#xff0c;是什么意思呢&#xff1f;<? super T>表示包括T在内的任何T的父类&#xff0c;<? extends T>表示包括T在内的任何T的子类&#xff0c;下面我们详细分析一下两种通配符具体的区别。 …

两大AI技术集于一身,有道词典笔3从0到1的飞跃

作者 | Just 出品 | AI科技大本意&#xff08;ID:rgznai100&#xff09; “双十一”结束的钟点刚刚敲响&#xff0c;拥有电子消费品的企业便很快对外界秀了一把今年的销售战绩&#xff0c;网易有道也不例外。在电子词典单品品类榜单上&#xff0c;有道词典笔稳稳拿下天猫和京东…

VIM进阶功能

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/gunl/archive/2011/08/15/2139588.html 该网页上介绍了以下内容&#xff1a; 查找快速移动光标复制、删除、粘贴数字命令组合快速输入字符替换多文件编辑宏替换TABautocmd常用脚本常用配置另一篇…