网站压力测试(转)
对于直接面对互联网用户的WEB应用,在开发设计的时候必须格外小心,因为谁也不知道在单位时间内WEB程序访问和运行的速度。所以,在程序设计完成以后,最后针对程序进行一些严格的甚至是苛刻的测试,以确定程序在复杂的网络环境和服务器高压负荷下是否可以保持正常和相对稳定的效率。
什么是负压测试
负压测试一般针对WEB应用进行,比如网站等。进行负压测试的目的是为了确定WEB应用在现实的网络环境中是否可以正确而安全的处理各种用户提交的不确定请求,检验程序的健壮性。负压测试的另外一个目的在于故意提供足够多的请求,观察程序在这种情况下的反应能力。
为什么要负压测试
可能大家现在都已经很熟悉一个很著名的搜索引擎Google,我们知道,这个搜索引擎不但搜索结果准确,而且,搜索速度更是奇快无比。搜索结果准确,那是程序算法在一个方面的表现,搜索速度快,则关系到整个系统的构件和程序的健壮行。如果希望自己编写的程序也可以在大访问量的情况下“从容不迫”,就有必要对程序进行负压测试。
对于访问量较大的网站或者程序,特别是提供一些比较热门话题程序,最好在正式将网站或者程序公布以前进行比较完备的负压测试,并且根据测试即使优化程序或者合理配置服务器硬件,这样网站不至于在用户量急剧增加的情况下出丑甚至崩溃。
使用ACT进行测试
ACT简介:
ACT(或者MSACT)是微软的Visual Studio 和Visual Studio.NET带的一套进行程序测试的工具,也正是我们的负压测试需要用到的。ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行状况,而且安装和使用都比较简单,结果阅读也很方便,是一套较理想的测试工具。
安装ACT
最起码,当然我们需要Visual Studio,ACT似乎还没有单独的版本出现。在这里,我们测试一个WEB Service的在高负荷情况下的运行性能。首先,在Visual Studio中打开ACT(如图)
程序会提示是否建立一个新的工程,点击“是”,然后输入一个文字说明,出现以下界面(图二):
打开ACT以后,我们可以开始测试了。
建立一个新的测试
点击菜单【Action】->【New Test】(如图三)
会出现一个向导界面(图四)
向导我们太熟悉了,仔细阅读每个界面的说明文字, 选择就可以了。
编辑测试
经过以上的设置,会出现以下界面(图五):
很明显,以上界面我们人为的将它分为了三个部分,而且每个部分颜色各不相同。以上不同颜色的三个部分分别为:
左边蓝色部分:导航栏,测试入口和结果人口;
右上绿色:提示信息栏;
右下红色:VBS代码栏,在这里编辑测试需要的一些VBS代码,测试成功有效与否,全部依靠这些代码的执行情况。所以,这些代码最好仔细考虑并且多次测试;
在进行测试之前,首先设置测试的一些选项(菜单【Action】—>【Properties】)如图六
在以上界面,主要设置两个参数:
(1) Test duration设置,这里设置测试进行时间,默认为5分钟;
(2) 在Counters标签页设置一些测试性能数据;
以上设置完成以后,就可以开始修改VBS代码了,我们没必要遍历整个VBS代码,只看一些主要的:
Test.SendRequest("http://localhost/")
以上是默认代码,我们可以修改为以下代码:
Test.SendRequest("http://localhost/philipq/wsmessages/wsmsg.asmx/MPost?webKey=w2k&UName=Ad&UPassword=pwd&UTo=Admin&UMessage=ACT+Test")
以上代码的编写应该根据自身程序的特点来修改,以达到最好测试效果。
执行测试
点击工具栏的【Start】按钮开始测试如图):
测试进行的时候,会出现以下窗口提示(如图):
以上界面显示程序测试的时间、剩余时间、每秒提交的Request数量、提交的Request总量、错误数量等。点击按钮【Show details】可以查看详细数据。
测试结束以后,就可以查看测试的结果了。
阅读测试结果
测试完成以后,可以在图二左边的Result分支点击查看测试结果,在右方的报表栏我们可以查看到以下数据:OverView、Graphs、Requests等,下图是一个OverView的数据举例:
从以上报告可以看到,测试的程序每秒提交request23次,总共1400次。
测试结果的使用
根据测试的结果,我们可以知道程序运行的情况、在高负荷下服务器的承受能力。根据这些数据,我们来确定程序的性能和服务器的性能,以此来预测在程序正式使用以后可能遇到的情况和服务器需要的改进。
其他选择
上面介绍的ACT虽然很不错,但是,毕竟不是每一个用户都使用Visual Studio,这时候,我们可以考虑其他工具来进行测试。
Microsoft Web Application Stress Tool (WAS)
这个工具和ACT一样是微软的产品,但是,这个工具没有和Visual Studio集成,可以单独使用。感觉这个程序现在还在测试,但是一些基本的功能已经很完备,可以完成ACT几乎所有功能,而且,WAS使用更加简单,设置也更加完备明了。这个工具的另外一个特点是,它的报表是纯文本文件,而不是流行的HTML文件格式,但是,内容方面一点也不逊色。关于这个工具的更多信息,可以在这里查阅:
http://homer.rte.microsoft.com/
Open System Testing Architecture (OpenSTA)
OpenSTA的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件,但是,这些设置大部分需要通过Script来完成,因此,在真正的使用这个软件之前,必须学习好它的Script编写。如果需要完成很复杂的功能,Script的要求还比较高,当然,这也是它的优点,一些程序员不会在意这些Script的。 这个软件完全免费而且源代码可以下载,感兴趣的朋友可以自己修改达到要求。 关于这个工具的更多信息,可以在这里查阅:
http://www.opensta.org/
http://opensta.sourceforge.net/
PureLoad
PureLoad是基于Java的测试工具,它的Script代码完全使用XML,所以,这些代码的编写很简单,它的测试报表包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,所以,可以通过Java Beans API来增强软件功能。
关于这个工具的更多信息,可以在这里查阅:
http://www.pureload.com/
QALoad
QALoad不单单测试WEB应用,还可以测试一些后台的东西,比如SQL Server等,只要是它支持的协议,都可以测试;另外一点,QALoad不但可以测试Windows,而且可以测试AIX, HP-UX 和 Solaris等系统。但是,这款软件价格很高。
关于这个工具的更多信息,可以在这里查阅:
http://www.compuware.com/products/qacenter/qaload/
LoadRunner
对于财大气粗的大公司而言,这款软件可能比较适合,它的功能和QALoad相比不相上下,市面上著名的公司如IBM、SUN、Oracle等都用这个软件。但是它的价格也高不可攀,和功能成正比。
关于这个工具的更多信息,可以在这里查阅:
http://www-heva.mercuryinteractive.com/products/loadrunner/