M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

时间:2023-03-09 05:10:06
M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

一、准备工作

为了测试数据的准备性,首先需要删除缓存和Cookies等临时文件。启动IE后打开“工具”菜单下的“Internet”选项命令,在打开的“Internet选项”窗口的“常规”选项卡中,单击“Internet临时文件”区域的“删除Cookies”和“删除文件”按钮将临时文件删除。

二、录制测试脚本

安装并启动WAS,程序运行时会打开“Create new script”对话框,即建立一个新的脚本窗口(如图1),如果运行WAS没有打开该窗口可以单击WAS主程序窗口工具栏上第一个按钮“New Script”即可。

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

因为是初次使用,所以在新建脚本窗口上单击“Record”按钮打开创建向导对话框“Browser Recorder-Step 1 of 2”,其中三个选项的作用是选择要记录的内容,分别为Request(请求)、Cookies(网上信息块)以及Host headers(主机标题),可根据需要选择(图2),然后单击“Next”即会打开“Browser Recorder-Step 2 of 2”窗口,单击“Finish”按钮。这样WAS会自动启用,并且会打开一个浏览器窗口,此时我们就可以在浏览器的地址栏中输入要测试的网站网址。随着要测试的网站内容的不断显示,在WAS主界面的“Recording”选项卡中的信息会实时更新(如图3)。

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

当浏览器的状态栏显示为“完成”时,我们就可以返回WAS窗口,单击“Stop Recording”按钮返回脚本窗口。

三、测试设置

为了使测试更加准确,更加接按真实效果,需要对录制的测试脚本进行一些设置。

去除静态干扰

由于网页是由图片、文字以及其它动态源码组成的,而一般的静态内容消耗的带宽并不是很大,因此我们可以将其排除在外。在脚本中选中指向图像、文字以及其它静态文件项目前的灰色按钮,然后单击工具栏上的“Delete”按钮将其删除(图4)。

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

设置并发数

然后在单击“New Recorded Script”下的“Settings”标签,其中“Concurrent Connections”是设置并发连接数的,其下面的“Stress level (threads)”和 “Stress multiplier(sockets perthread)” 分别设置对目标服务器的压力及负载程度的,其中Level是客户端所产生的线程数目,一个线程可以产生多个Socket并发请求,因此将两者的数值相乘,所获得的数字就是客户端同时连接的并发数(图5)。

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

时间设置

时间设置包括“Test Run Time”(测试运行时间)和“Request Delay”(停止响应)以及“Suspend”(挂起时间)三项。其中测试运行时间是以日、小时、分钟和秒来设定的,建议该项时间不宜太短,如果设置的并发数较多,那么时间应该按比较增长,以便产生足够多的请求;而停止时间是指连接时超出这个时间即作超时处理;在挂起时间处部分为Warmup和Cooldown两项,一般可以设置为两三分钟为宜,这样做的目的是避免测试开始和结束时数据的变形,影响测试的准确性。

指定带宽瓶颈

“Bandwith”是指定带宽瓶颈的,即选择访问该网站大多数用户所使用的带宽。例如访问该网站的绝大部分用户是拨号,那么可以选择56K。

四、开始测试

做好基本的设置工作后,就可以在左侧选中新建的脚本“New Recorded Script”项,然后单击工具栏上的“Run Script”按钮,或者打开“Scripts”菜单下的“Run”命令,这样就开始测试了。测试过程中会以进度条的方式实时显示,待进度条结束我们即可进行测试结果分析了。

五、数据分析

现在我们就可以打开测试报告来查看测试结果了。单击“View”菜单,选择“Reports”,在打开的窗口左侧会按时间显示所有测试报告。根据时间选择本次测试报告,在窗口右侧即可查看具体内容。

在测试报告中最重要的部分就是“Socket Errors”部分和“Result Codes”部分。其中Socket Errors部分共分为Connect、Send 、Recv和Timeouts。其中Connect表示客户端不能与服务器取得连接的次数;Send表示客户端不能正确发送数据到服务器的次数;Recv表示客户端不能正确从服务器接次的次数;Timeouts表示超时的线程数目。由此我们可以如果这四个数值都比较小,甚至为0则说明我们的服务器是经得起考验的;如果数值居高不下,甚至接近设置的并发数,那么则要好好的检查你的服务器了(图6)。

M​i​c​r​o​s​o​f​t​ ​w​e​b​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​t​r​e​s​s​ ​t​o​o​l​ 测试

另外在“Result Codes”部分,如果Code列表下的数值都为200,那么表示所有请求都经服务器成功返回,如果数值出现400或大于400,例如404,那么则需要在左侧找到“Page Data”节点,查看具体的错误项目,然后作出改正了。

其实要完整的反映出一个网站在服务器上的运行情况,需要不断增减其并发数,并且进行多次测试,才能了解服务器所能承受的限度,然后才可以在IIS中设置允许连接的最大数目,从而保证网站正常运行。

部分测试数据解析

下面用其进行一次简单的压力测试。

  1. 打开主程序,点击"Record"按钮
  2. 选择"Record Delay between request"
  3. 然后"next",再"finish"
  4. 接下来会弹出一个浏览器,输入所要测试的WEB服务器地址,随便浏览一些页面,然后将其关闭,返回到Web Application Stress中
  5. 点击"stop recording"按钮。点击"Settings",就可以进入设置界面,填入一些参数。在此例中,threads我填入了50,run time我填入了2分钟,其它默认。然后选择"Scripts"菜单项中的"Run",对服务器进行压力测试,等待2分钟。

6.结束后,选择"Window"下的"Reports",可以看到类似于下面的压力测试结果(我已经将其简化了)。

Overview

================================================================================

Report name:                  2014/7/22 17:07:04

Run on:                       2014/7/22 17:07:04

Run length:                   00:03:48

Web Application Stress Tool Version:1.1.293.1

Number of test clients:       1

Number of hits:               2988       虚拟的用户点击页面2988

Requests per Second:          14.40   平均每秒14个请求

Socket Statistics

--------------------------------------------------------------------------------

Socket Connects:              3227       Socket连接数3227

Total Bytes Sent (in KB):     1675.02

Bytes Sent Rate (in KB/s):    8.07

Total Bytes Recv (in KB):     43039.27

Bytes Recv Rate (in KB/s):    207.40

Socket Errors

--------------------------------------------------------------------------------

Connect:                      7     连接错误7

Send:                         0      发送错误0

Recv:                         0       接收错误0

Timeouts:                     0     超时错误0

RDS Results

--------------------------------------------------------------------------------

Successful Queries:           0

Script Settings

================================================================================

Server:                       nlb.xxx.com

Number of threads:            300

Test length:                  00:10:00

Warmup:                       00:00:00

Cooldown:                     00:00:00

Use Random Delay:             No

Follow Redirects:             Yes

Max Redirect Depth:           15

Clients used in test

================================================================================

localhost

Clients not used in test

================================================================================

Result Codes

Code      Description                   Count

================================================================================

200       OK                               1047

404       Not Found                     1941       出现400或大于400,例如404,那么则需要在左侧找到“Page Data”节点,查看具体的错误项目

Page Summary

Page                                             Hits       TTFB Avg  TTLB Avg  Auth      Query

================================================================================

GET /State/isMpjAccount?callba       600       6327.99   6382.70      No        No

GET /Article/ArticleInfo/14071         447       16598.97  37119.85   No        No

GET /State                                     384         4212.94   4261.95   No        No

GET /State/isMpjAccount?callba       341       4189.14   4243.56     No        No

GET /query_auth_status/?callba      316       4313.78   4339.77      No        No

GET /Article/ArticleInfo?id=14         300       10502.16  39707.15   No        No

POST /msvquery                            300       13957.84  13984.36   No        No

下面对其进行简单解释。测试时间内,虚拟的用户点击页面2981次,平均每秒14个请求,Socket连接数3227,其中没有连接、发送、接收、超时错误。从这个压力测试报告来看,服务器对于300个用户同时操作,应该没有任何问题。需要特别说明的是,这个只是简化的部分结果。