WAS(WebApplicationStress)测试实验目的•了解WAS(Microsoft的WebApplicationStressTool)服务器负载测试软件•掌握WAS服务器负载测试软件测试过程,能够使用WAS进行简单的测试工作•参考资料:=true工具介绍•MicrosoftWebApplicationStressTool是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。一、建立新脚本•方法一、启动WAS软件后会自动显示建立新脚本的提示页面,选择[manual]按钮就可完成建立新脚本的功能。方法二、启动WAS软件后点击[newscript]按钮。二、编辑脚本内容二、编辑脚本内容•1、在选择脚本名称的右侧会出现相应的设置[server]中输入要进行测试的服务器IP地址或计算机名称;[verb]中选择脚本运行方式get、post、head;[path]中输入向服务器提交的文件或字符串。2、[contenttree]该项在默认情况下不做更改。3、[settings]设置测试持续时间在“testruntime”各项中输入相应数字即可。4、[perfcounters]该项在默认情况下不做更改。5、[pagegroups]该项在默认情况下不做更改。6、[users]选项下双击[default]或单击[showusers]快捷键进入用户设置页面。在[username]和[password]中输入服务器认可的用户和密码,点击[create]按钮完成添加用户功能。删除用户时只需要点中用户左侧按钮选中该行后点击[删除]快捷键。[numberofnew]项不能设为“0”,否则添加无效。7、[clients]双击[default]进入设置页面在[machine]输入添加客户的计算机名后点击[add]按钮,在默认状态下只有“localhost”客户连接,添加的其他客户均离线。选中的客户会在报告中显示。8、[cookies]自动显示用户的状态。三、web测试•1、选择运行脚本名称2、在[script]菜单中选择[run]或者点击[运行脚本]快捷键四、测试报告•1、点击[report]快捷键出现报告目录2、选择脚本名称以及详细测试时间文件四、测试报告具体案例录制测试脚本录制测试脚本•Recorddelaybetweenrequest:记录了请求之间的延迟。由于用户实际上在浏览网站时,请求之间存在几秒甚至几分钟的延迟,这种录制方法在执行时会模仿用户之间的延迟发送请求,所以会是一个更加实际的测试。如果我们的目的是要发现Web应用程序的承受极限,就不要选择该项;如果只是想模拟一个特定数量的用户场景,那么选择该项进行测试捕捉请求延迟。•Recordbrowsercookies&Recordthehostheader:只记录用户的会话,不记录延迟时间。一般情况下,我们不需要选择这两项,可以让WAS创建cookies和hostheader,就好像用户登陆你的网站一样。然而,如果你有网站的回归信息时(比如一个用户的主要特征信息或者与一个永久性cookies相连的其他信息),在模拟一个新的用户登陆网站和进行必要的用户配置测试前,必须保证清除cookies,如果Web应用程序需要用户接受cookies,那么需要选中该选项。录制测试脚本•根据压力测试实际的情况,选择合适的选项,然后点“Next|Finish”,WAS会打开一个IE窗口,在IE中输入要测试的站点地址,然后我们就可以按照实际的情况开始浏览站点了,浏览的同时也就是执行测试用例的过程。录制测试脚本录制测试脚本如在上述地址栏输入,时,你会看到一个Createnewscript的对话框询问你以什么样的方式创建一个新的测试脚本。2.点Record按钮。如果之前你选择了Don'tdisplayatstartup,Createnewscript将不会显示出来。你可以在Script菜单选择Record然后Create.3.在BrowserRecorder—Step1of2对话框,你会被要求指定一些记录设置。在这里,清除所有的选择框点Next继续。4.在BrowserRecorder—Step2of2对话框,点Finish。一个新的IE窗口会出现以便记录浏览器活动,同时WAS会被置于记录模式。5.在新出现的IE窗口的地址栏,输入你的目的站点的地址。在WAS的窗口你将看到HTTP信息在跟随你的浏览活动而实时改变着。6.当完成了你的站点浏览后,转回WAS窗口——还处于记录状态—点StopRecording按钮。就会终止记录并产生一个新的测试脚本。去除静态干扰负载参数设置负载参数设置负载参数设置ContentTree•由于我们的WAS和WebServer是分开的,所以这里我们不需要设置SettingsSettings1.ConCurrentConnections:StressLevel(threads)的数值决定了所有客户机创建的Windows的线程的数值。每一个线程创建多个Socket连接(具体多少Socket连接数取决于Stressmultiplier(socketsperthread)),每个Socket连接就是一个并发的请求(request)。下面这个公式表示了它们之间的关系:总的并发请求数=StressLevel*Stressmultiplier=总的Socket连接数StressLevel和Stressmultiplier这二个项决定了访问服务器的并发连接的数量。Microsoft建议不要选择超过100的StressLevel值。如果要模拟的并发连接数量超过100个,可以调整Stressmultiplier或使用多个客户机。在负载测试期间WAS将通过DCOM与其他客户机协调。2.TestRunTime:设定持续运行多长时间的测试。我们可以在这里设定让WAS持续运行多少天、多少个小时、多少分钟、多少秒3.RequestDelay(inmilliseconds):设定请求延迟时间的最大、最小值,当然我们也可以选择“Userandomdelay”使用随机的延迟时间。Settings4.Suspend:WAS允许设置warmup(热身)时间,一般可以设置为1分钟。在warmup期间WAS开始执行脚本,但不收集统计数据。warmup时间给MTS、数据库以及磁盘缓冲等一个机会来做准备工作。如果在warmup时间内收集统计数据,这些操作的开销将影响性能测试结果。WAS也允许设置CoolDown时间。在WAS执行的时间达到设定的TestRunTime时,进入CoolDownTime,这时WAS并没有停止执行脚本,同样也不会收集统计数据。5.Bandwith:设置页面提供的另外一个有用的功能是限制带宽(throttlebandwidth)。带宽限制功能能够为测试模拟出Modem(14.kK,28.8K,56K)、ISDN(64K,128K)以及T1(1.54M)的速度。使用带宽限制功能可以精确地预测出客户通过拨号网络或其他外部连接访问Web服务器所感受的性能。6.Redirects、Throughput、Nameresolution:这几个选项一般情况下采用默认情况即可。选中FollowHTTPredirects选项将会支持重定向。选中Throughput中的两项,WAS将会收集活动用户的cookies,以及收集网站的统计数字。默认情况下都会选中这两项,如果不选择,将会增加压力测试的强度。Nameresolution默认情况下没有选中。选中该选项,会让每一个客户测试机执行查询,只有在使用多个子网时才需要选中该项。SettingsPerfCounters(性能计数器)一般情况下,这里需要添加的性能计数器有:1WebServer:·处理器:CPU使用百分比(%CPUUtilization)内存:内存使用百分比(%MemoryUtilization)线程:每秒的上下文切换次数(ContextSwitchesPerSecond(Total))ASP:每秒请求数量(RequestsPerSecond)ASP:请求执行时间(RequestExecutionTime)ASP:请求等待时间(RequestWaitTime)ASP:置入队列的请求数量(RequestsQueued)2各个WAS测试机:处理器:CPU使用百分比(%CPUUtilization)内存:内存使用百分比(%MemoryUtilization)PageGroups•对于一个Web应用而言,同一时刻用户点击分布是不一样的。WAS允许设置用户点击流量的分布比例。•按照不同的Web应用,我们可以根据实际的情况在定制这个比例关系,来更加符合实际的情况。PageGroupsPageGroupsUsersUsers创建新用户1.在左边窗口展开脚本的信息。2.点Users节点在右边窗口打开相应的视图。3.双击Default用户组打开用户视图。注意默认已经创建了200个用户。你可以简单地修改用户名和密码就行了。你也可以做以下操作来创建一系列新的用户1.点RemoveAll清除所有的记录。2.在Numberofnewusers,输入你想创建的新用户的数量。3.在Usernameprefix,你可以在用户编号的前面输入前缀值,例如“User.”4.在Password,输入密码。相同的密码会赋给所有用户。5.最后,点Create按钮。用户表单就会填满指定数量的用户。Users运行测试脚本运行测试脚本运行测试脚本•所有的设置完成以后,我们就可以运行WAS来进行压力测试了。要运行测试脚本很简单,只要选中测试脚本的名称,然后点工具栏上的“运行”按钮,即可。•建议:第一次运行测试脚本时,TestRunTime不要太长,StressLevel以及Stressmultiplier不要太大。第一次运行的目的只是为了检验测试脚本正确的运行。•每次测试运行结束后WAS会生成详细的报表,即使测试被提前停止也一样。WAS报表可以从View菜单选择Reports查看。下面介绍一下报表中几个重要的部分。测试结果测试结果测试结果•Connect—客户端不能与服务器取得连接的次数。如果这个值偏高,检查在客户端与服务器之间产生的任何潜在的错误。从每个客户端Ping服务器telnet服务器的端口80验证你得到正确的回应。·Send—客户端不能正确发送数据到服务器的次数。如果这个值偏高,检查服务器是否正确地工作着。在客户端打开一个浏览器然后手工点击站点页面验证站点正确地工作着。·Recv—客户端不能正确从服务器接收数据的次数。如果这个值偏高,执行和Send错误相同的操作。还要检查一下如果你减低负载系数,错误是否跟着减少。·Timeouts—超时的线程的数目,而且随后就关闭了。如果这个值偏高,在客户端打开一个浏览器然后手工点击站点页面验证是否即使只有一个用户你的程序也会很慢。再做一个不同负载系数的压力测试,看看你的程序的潜在特征。测试结果•页面摘要部分提供了页面的名字,接收到第一个字节的平均时间(TTFB),接收到最后一个字节的平均时间(TTLB),以及测试脚本中各个页面的命中次数。TTFB和TTLB这两个值对于计算客户端所看到的服务器性能具有重要意义。TTFB反映了从发出页面请求到接收到应答数据第一个字节的时间总和(以毫秒计),TTLB包含了TTFB,它是客户机接收到页面最后一个字