隨著Internet的日益普及,現在基于B/S結構的大型應用越來越多,可如何對這些應用進行測試成為日益迫切的問題。有許多測試人員來信問我B/S的測試如何做,由于工作較繁忙,對大家提出的問題也是頭痛醫頭腳痛醫腳,沒有對WEB的測試過程做一個整體的概述。希望通過本篇能夠讓大家了解大型Web應用是如何來進行測試的。
B/S下的功能測試比較簡單,關鍵是如何做好性能測試。目前大多數的測試人員認為只要跑一些測試工具證明我的產品是可以達到性能的就ok了,為了證明而去測試是沒有任何價值的,關鍵是要發現產品性能上的缺陷,定位問題,解決問題,這才是測試要做的。
首先我們從兩個方面分析如何進行WEB測試,從技術實現上來講一般的B/S結構,無論是.NET還是J2EE,都是多層構架,有界面層、業務邏輯層、數據層。而從測試的流程上來說,首先是發現問題、分析問題、定位問題,再由開發人員解決問題。那么B/S的結構的測試如何來做?
如何發現問題是我首先要介紹的,在做WEB測試之前你需要一些資料,比如產品功能說明書,性能需求說明書,不一定很完善,但一定要有,明確測試目標,這是基本的常識,可是我往往看到的是已經開始動手測了,但還不知自己的系統要達到的性能指標是什么。這里我簡單講一下測試的性能指標:
1、通用指標(指Web應用服務器、數據庫服務器必需測試項):
* ProcessorTime: 指服務器CPU占用率,一般平均達到70%時,服務就接近飽和;
* Memory Available Mbyte : 可用內存數,如果測試時發現內存有變化情況也要注意,如果是內存泄露則比較嚴重;
* Physicsdisk Time : 物理磁盤讀寫時間情況;
2、Web服務器指標:
* Avg Rps: 平均每秒鐘響應次數=總請求時間 / 秒數;
* Avg time to last byte per terstion (mstes):平均每秒業務角本的迭代次數,有人會把這兩者混淆;
* Successful Rounds:成功的請求;
* Failed Rounds :失敗的請求;
* Successful Hits :成功的點擊次數;
* Failed Hits :失敗的點擊次數;
* Hits Per Second :每秒點擊次數;
* Successful Hits Per Second :每秒成功的點擊次數;
* Failed Hits Per Second :每秒失敗的點擊次數;
* Attempted Connections :嘗試鏈接數;
3、數據庫服務器指標:
* User 0 Connections :用戶連接數,也就是數據庫的連接數量;
* Number of deadlocks:數據庫死鎖;
* Butter Cache hit :數據庫Cache的命中情況;
上面的指標只是一些通用的指標,起到拋磚引玉的作用,對于不同的應用你還必需作相應的調整,比如程序使用的是.NET技術的,則必需加入一些針對性的測試指標。對于這些指標的詳細了解,你可以參考Windows 下面的 SystemMonitor的幫助與LoadRunner、ACT的幫助。對于發現問題,指標的設置非常重要,它會幫你定性的發現一些錯誤。對于定性的壓力測試我就不做過多的分析,工具很多,流行的主要有LoadRunner、ACT、WAS、WebLoad,各個工具有它的使用范圍,其中我各個認為 LoadRunner最全面,它提供了多種協議的支持,對復雜的壓力測試都可以勝任,WAS與ACT則對微軟的技術支持的比較好,其中WAS支持分布式機群測試,ACT則是與.NET集成比較好,支持ViewState (.NET 下控件緩存的支持) 的測試,當時我用時,其它測試工具還不支持,現在應該支持了吧。
在這一階段測試你要不斷的跟據系數的測試目標進行變化,一開始由于系統過于龐大,所以我們要分成若干個子系統,各個子系統的性能目標必需明確,主要是并發指標定一個閥值,同時設定一些與系統相關的測試參數,應用服務器,數據庫服務器都要有,對達不到閥值的與一些通用參數有問題的子系統進行深入分析。比如它的并發達不到你的要求,證明子系統性能有問題,或是數據庫用戶連接過高,程序沒有釋放用戶連接等等。
這個我們要對子系統進行詳細測試,由于B/S 結構下,圖片的請求對性能的影響較大,所以我們對子系統測試時要分兩個部分進行:一、非程序部分,即圖片等等;二、應用程序本身。通過事務或函數的分離,可以把這兩塊實現單獨的測試,具體做法參考各個工具的手冊,我這里就不做說明。
對子系統的測試參數的設置要求則更高,它有助你后面精確的定位問題,比如對異常、死鎖、網絡流量等等前面沒有注意到的情況的增加,同時你要注意增加測試參數的收集對系統的性能影響比較大,所以一般不要超過10個,剛剛介紹的整體的性能測試指標也不要增加很多,這樣影響會小一點。最后在這一階段要說明的是數據庫的數據量會很大程度的影響性能,所以要根據前面的性能需求說明書向數據庫中模擬相應的數據量,來進行測試,這樣才有更高的可信度。
原文轉自:http://www.uml.org.cn/WebService/200508224.htm