在web程序开发过程中,经常需要做一些压力测试,确定当前页面的实际性能,这方面的工具有很多,有开发源码的OpenSTA(Open System Testing Architecture),还有就是大家比较熟悉的eTest,这两种工具都可以预先录制页面操作,比如你使用用户名、密码登陆,浏览页面,访问论坛等动作可以做成一个测试循环,然后可以将这个循环同时并发100次或1000次等,这个主要看你的机器性能,但据我的使用经验来看,同样的配置eTest使用的内存更少一些,当然eTest是要负费的,呵呵,如果一般的应用,可以使用OpenSTA.
我使用的是e-Test Suite 7.0(IE6),包括e-Test(录制编辑测试脚本),e-Load(压力测试)等功能,这里只介绍e-Test及e-Load,e-Test界面如下,工具栏上有几个按钮会常用到,录制(Record Script),停止(Stop),回放(Playback Script),数据银行向导(Run Data Bank Wizard),只要把鼠标放到工具栏上看一下提示就可以找到了
1、录制测试脚本
在地址栏输入你要测试的URL地址,当页面返回之后,点击录制按钮,就可以录制你的操作(不要使用回车,要使用鼠标点击提交按钮),随着你的操作,在左侧的脚本栏中会出现你的操作信息,分页面显示,包括每个页面的详细信息如Cookie、form、html等信息,如下图所示
操作完成之后点击停止按钮,点击保存按钮,录制工作就完成了,得到的是一个脚本
现在可以点击回放按钮,你可以看到你录制的操作回放,回放之后它会提供一个回放报告,包括页面的时间以及错误警告等。如果有问题,可以重新开始创建新的脚本,也可以删除出错的页面,将新的页面录制到这个脚本上(建议不这么做,容易出现莫名其妙的问题)。
这样就可以解决简单的重复测试的问题,但如果操作不具备可重复性,比如模拟1000个不同的用户登陆、或者模拟某些电子商务网站的消费(如点卡充值,每次测试的需要不通的卡号),那么我们就需要数据银行的功能了。
2、数据银行
e-Test Suite的数据银行功能非常强大,你只要将form中的数据框对应到一个文本文件,你可以手工编辑这个文件,在测试回放中,你可以选择每次选择不同的记录,在压力测试中,你可以为每个虚拟用户分配一定数量的记录,并可以让他们执行一个或多个循环,用了这个功能,你可以很容易的模拟出1000个不同的用户登陆的情况,也可以模拟1000用户充值10000张点卡的情况,同时e-Load会提供非常详细的压力测试报告,你可以知道1000个用户同时登陆登陆成功的百分比,也可以知道10000张卡充值完成需要多少时间,出现错误的概率是多少等等,好了,下面我们来看看这个引人注目的功能吧。
点击数据银行向导按钮,得到当前脚本的Form中的值的列表,如下图
我的脚本中有5个form值,依次为用户名、密码、验证码、卡号、密码,数据银行的绑定功能对应关系为参数->变量->数据银行域,我们可以手工添加变量、绑定,也可以点击自动映射、自动绑定按钮,来自动操作,这里我采用自动操作功能,然后手工调整,下图是映射结果
自动映射结果如下,
现在显示的数据是我在录制脚本时录入的数据,点击edit按钮,显示出一个记事本scripte1.csv
name,pwd,authno,cardid,password
flysyq,xxxxxx,rrrrrr,09990000620150,MSADDIOM
这个文件是自动生成的,你可以编辑这个文件,增加它的记录条数
在绑定页面你可以看到你用的是数据文件中的第几行,如果需要每个页面使用不同的记录,要点击Unique Variables per Page 的复选框
点击OK保存。
然后选择Options->New Script(Script1)->Playback->script->Data Bank 复选 Playback with Data Bank,选择use all records,如下图
保存脚本,回放脚本,脚本就会循环取 DataBank 中的值,你的测试的Data Bank就完成了。
3、压力测试(e-Load)
打开e-Load,可以看到你定义的脚本,我的是Script1,设置虚拟用户的数量是100,我们模拟100个用户的压力测试,如下图
其他的设定很多,可以参考一下它的帮助,这里就不说了,
点击Submit Scenario,提交你的设定
在自动运行的设定中,我没有做任何修改,默认是立即执行、永不停止、每次启动10%数量的虚拟用户,间隔为5秒,你也可以修改这些参数,我的如下图
选择 Run->Autopilot->Data Bank Control ,会显示你设定的数据银行
点击Prefernces,设定每个客户缓存100条记录,记录使用完就停止(避免无用操作),如下图
点击Ok 确定!
Autopilot点击start,就可以进行压力测试了,你可以注意看它的测试结果和监控报告,以及结束之后的报表,这些就得您慢慢研究了,呵呵!