压力测试入门案例分析(Loadrunner使用)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
压力测试案例分析
1.客户背景介绍
中国联合网络通信有限公司XX省分公司是中国联合网络通信有限公司在XX省内的分支机构,是国家授权许可经营移动通信业务、互联网业务、数据通信业务、国际国内长途电话通信业务等综合业务的电信运营商。
2.压力测试拓扑图
压测拓扑图如下所示,在测试过程中,拓扑图可能会根据测试内容改变:
3.测试服务器性能要求
资源列表数量及参数
Loadrunner测试机器(客户提供)2台高性能服务器(4GB内存,千兆网卡,四核CPU,Windows server2003 SP2 32bit)
VPN7150(深信服提
供)
1台
IIS服务器1台高性能服务器(4GB内存,千兆网卡,四核CPU,Windows
server2003 SP2 32bit),安装好IIS
Loadrunner 1套(本次用的是V9.5)
注意:Loadrunner(以下简称LR)在测试VPN加解密速度时,对CPU的占用率较高,所以客户准备服务器的时候,尽量让CPU高端些,免得到时候瓶颈在服务器上,客户误以为我们设备跑不到那么多的吞吐量。要做压测的客户都是大客户,准备这几台服务器应该没问题。
4.测试环境搭建
4.1.拓扑搭建
关于物理拓扑的搭建,就如上图所示即可,条件允许的话,可以再增加一台千兆交换机,将自己的笔记本与服务器另外一个网卡连接起来,便于远程桌面管理和截图。
注意:由于LR运行某些脚本时数据流很大,测试网络需与客户业务网络物理隔离,千万别沿用客户原来的路由交换设备跑测试数据,不然会影响业务甚至中断业务。
4.2.搭建Web服务器,安装LR
IIS的安装不多说。但是有一点要注意下,不要使用一些小的Web服务器(如小旋风ASP服务器,HFS等)来代替IIS,我第一次使用HFS试了一下,并发跑上来后,直接阻塞掉,本次测试需要跑到10000个并发。
安装LR前,需要先给server2003系统打上NET Framework V3.5 SP1包。这次测试使用的是Loadrunner9.5版本,emule上有云端版下载(http://bit.ly/rOOUDJ),直接用32bit英文版即可,汉化版有时会出问题。云端版安装后无需破解授权,直接可以使用,安装完毕如下图所示:
组件,但是我们做VPN压测的时候,只要用到2个:Controller和Virtual User Generator,在打了NET Framework V3.5 SP1包的前提下,如果这2个组件还不能
运行的话,请分别修复VS2005,VS2008运行库:
搞完这些后,运行LR应该没什么问题了。如再有问题,自行Google。前面提到了LR的2个组件,Controller和Virtual User Generator,这里来做一个简单的介绍。
Virtual User Generator是用来录制脚本用的,也就是说,你要告诉压测服务器如何去运行,录制脚本就相当于定义好压测机的行为。这个在下文会详细体现出来。Controller的任务就是载入Virtual User Generator录制好的脚本,然后设置各项参数,进行压测。一句话:Virtual User Generator是动作的定义者,而Controller是动作的执行者。安装介绍到此结束,下面介绍LR的使用。
5.一个简单的例子
5.1.使用Virtual User Generator录制脚本
打开Virtual User Generator,点击,新建一个脚本录制页面。
选择脚本的类型为Web(HTTP/HTML):
接着设置录制参数,如果没有弹出这个页面,可以点击,其他参数如下,URL Address填登陆VPN设备的地址(我这里使用WOC模拟一下,实际环境按需填写),Record into Action里选择为Action即可
确定后,会出现一个Recording的控制条,这里有点慢,请耐心等待一下,最后出现证书提示页面,这里既然是录制,就要你手动先示范一遍让LR记录下来。我这里就模拟一次登陆WOC后再退出的行为,作为一个事物记录下来,比如对VPN的测试,你可以模拟用户登陆VPN,然后访问一个资源,然后退出等。
继续录制,直到退出WOC,退出后,点击停止,这时候可以看到,已经产生了1494个events:
停止后,LR会自动编译,输出代码,可以看到,我们刚才录制的脚本存储在Action里,而前面的init,后面的end等函数可以不用管,LR的函数和C语言类似:
我在录制登陆WOC的事物时,中间有些地方人为停顿的时间较长,在实际测试时,可以在代码里找到相应的lr_think_time(8);函数,修改time()里面的值,到达灵活控制停顿时间的目的。接着将录制好的脚本保存下来。
5.2.Controller加载脚本运行
运行Controller,软件会自动加载刚才录制的脚本,我们add脚本到右边:
以下是Controller运行的主界面,请注意底部有2个选项卡,分别是Design和Run,Design是设定运行参数的地方,Run选项卡则是运行时的状态和运行结果实时回显,下面
分模块简单介绍各个运行参数的设置:
如下图,首先需要载入一台发生器,这里我们点击ADD后,在Name里输入localhost
即可,加载本地发生器:
接着设置Gloabal Schedule,这里的参数非常重要,定义了虚拟用户(Vusers)初始
化个数,有多少个Vusers在跑,跑多长时间,停止时间等,这里根据实际需求来设置,通
过设置参数,可以让Vusers运行时与真实环境下海量用户同时登陆的动作类似: