WEB應用程序的測試與優化概述(1 / 2)

WEB應用程序的測試與優化概述

“讓你的WEB應用程序完成你想做的事情是一回事,而讓他們快速、有效的去做常常是另外一回事。”

在這篇文章裏我將初步討論有關“WEB應用程序的性能”的問題,主要是一些基本概念以及工具,算是拋磚引玉吧!注意這些內容同樣適用於J2EE應用。此後,也許我會寫更多關於此方麵的文章。

首先,這裏有兩個性能方麵的重要指標。請注意,下麵的“定義”並不規範,僅供參考。

* Response Time - 響應時間

從初始化請求到完成響應所用的時間。這是一個測試WEB應用程序速度的重要度量。

* Scalability - 伸縮性

一個可伸縮的應用程序的響應時間隨負載的增加而線性增加。

沒有WEB應用程序可以處理無限數目的請求,但是一般我們可以預測一個範圍,並保證我們的WEB應用程序可以在此範圍內“優雅”的伸縮,即始終把響應時間維持在可接受的級別。

如果我們打算優化我們的WEB應用程序,那麼至少我們應該知道它到底該不該優化。壓力測試可以解答這個問題。

* Load Test - 壓力測試

為WEB應用程序模擬用戶請求以測量其伸縮性的過程。它非常有用,雖然開始的時候會覺得有點“變態”。一般我們會模擬大量的用戶請求以獲得在WEB應用程序的速度惡化到無法接受的級別前能夠處理的並發請求數量。

所謂“無法接受的級別”並不是一定要到實例池崩潰、應用服務器癱瘓甚至服務器當機的時候,這要視需求而定。

一般壓力測試包含如下步驟:

* 確定接受請求並完成響應的最大允許的延時。

* 估計WEB應用程序的最大並發用戶數量。

* 模擬用戶請求,以一個比較小的負載開始,逐漸增加模擬用戶的數量,直到WEB應用程序的 相應延時超過最大延時。

* 如果負載比估計的用戶數量小,那麼應該優化這個WEB程序,否則你選擇性的執行優化。

你不會在考慮自己寫一個測試程序吧?算了,何必再重新發明一次輪子?這裏有一些壓力測試工具,它們各有特色,先介紹免費的:

* Web Application Stress Tool, Microsoft, http://www.microsoft.com

* JMeter, Java Apache Project, http://www.apache.org/

* LoadItUp, BroadGun Software, http://www.broadgun.com

如果你或你的公司很有Money,或者需要更加豐富的功能,可以使用以下商業軟件,不過它們都價值$10,000,甚至更多:

* WebLoad, RadView Software, http://www.radview.com/