Microsoft Web Application Stress Tool
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。
Microsoft Web Application Stress具有以下几个特性:
* 可以数种不同的方式建立测试指令:包含以手动、录制浏览器操作步骤、或直接录入IIS的记录文件、录入网站的内容及录入其它测试程序的指令等方式。
* 支持多种客户端接口:标准的网站应用程序C++的客户端,使用Active Server Page 客户端,或是使用Web Application Stress对象模型建立您自定的接口。.
* 支持多用户利用多种不同的认证方式仿真实际的情况,包含了DPA, NTLM 及 SSL等。
* 支持使用动态的cookie仿真定制网站实际运作场景及对话(session)的支持。
* 在客户端的计算机以NT 服务的方式执行仿真的工作,可在不中断测试的情况下将某些客户端的测试计算机删除。
* 透过集中式的Microsoft Web Application Stress 管理员,您可以使用任意数目的客户端计算机同时进行测式的工作。
* 具有Bandwidth throttling (带宽遏流)的功能以仿真用户使用调制解调器上线的效果。
* 内建的query-string 编辑器可帮助您建立name-value pair组合的模板,并可在不同的场景测试中重复使用。
* 可程序化的对象模式让您可以建立您自己的测试客户端。
* 汇总的测试报告及丰富的性能测试资料。
* 支持域名系统(DNS)让您可以测试整个群集(Cluster)的机器。
* 使用Page group的方式来控制文件的组及测试指令的执行程序。
* 可自定的header让您可以仿真各种不同种类的浏览器。
* 可自定的指令延迟让您以更接近真实环境的方式进行测试。
网站测试概述
为了正确使用WAS进行网站的压力测试,您需要对于网站测试的方法有一初步的了解。以下的讨论将包含一些基本的概念以供参考。
网站的测试可大略分成三个主要的类别:
* 网站性能测试 (Performance testing)
* 压力测试下的网站稳定性 (Stability or stress testing)
* 网站承受能力评估 (Capacity planning)
网站性能测试的第一件工作就是使用测试工具对网站加压以测量网站服务器每秒可以承受的请求(Request Per Second) 的最大值。第二件工作就是找出系统性能限制的原因所在,举例来说,CPU、内存、或是后端系统所造成的反应延迟等。
在许多状况下,网站服务器的CPU是主要的性能瓶颈。测试时您可以持续加压直到性能表现开始下降,再慢慢的降低压力的程度。此时您所测试出来的最大性能即为该网站所能达到的最高值。在实际测试时,您可以通过增加压力线程(thread),或是增加执行WAS测试程序的客户端来加压。
在网站服务器端,您可以使用性能监视工具如Performance Monitor来监视如 "System: % Total Processor Time" 及 "Web Service: Connection Attempts/sec" 或 "Active Server Pages: Requests Queued"等指针。如果CPU的资源指针已达到80%到85%,则CPU的处理能力最有可能就是整个系统的瓶颈所在。若是在压力测试的过程中CPU所被使用的比例不高而”Requests Queued”的指针一直居高不下,可能是程序正在调用服务器上的COM组件而这个组件无法有效的执行完所有的命令,因而造成了系统性能的降低。在这种情形下,服务器上的COM组件才是真正的瓶颈。
目前市场上最热门的定制网站应用程序也会对网站的性能表现有重大的影响。WAS包含了数种特性可有效的帮助您测试定制的网站应用程序。例如,您可以建立用户,让WAS可以设置并储存每一个用户的cookie。您也可以使用QueryString 编辑器帮助您建立并储存数个不同的name-value pair以便在每一次执行request时进行测试。
一般的网站测试问题
* 错误的测试平台,和实际上线的 production server(生产环境服务器)不同,无法测出实际的问题。
* 错误的测试指令,无法正确的仿真出实际上线系统真正的反应。
* 线程安全性问题以及不稳定的服务器COM组件。
* Active Server Page 的错误及GLOBAL.ASA 设置的问题。