淺談有效的性能測試 性能測試工具
“為什么我上線系統的性能和性能測試的結果相差很大呢?”這是一些用戶會經常碰到的問題。當然產生這個問題的原因很多,下面我用一個很典型的例子來說明一下。一個用戶登錄界面,要求用戶輸入用戶名、密碼點擊登錄,登錄系統。程序的處理流程如下:
根據輸入的用戶名、密碼生成SQL語句,select roleID from usertable where username='用戶名' and password='密碼',把這條語句發給ORACLE數據庫,從數據庫中查詢數據,如果查詢的roleID不為空則是合法用戶允許登錄,否則不允許登錄系統。這是一個非常簡單的系統。性能測試人員用LOADRUNNER錄制腳本,然后用逐步加壓的方式來運行腳本,TPS、ORACLE的命中率、資源占用都很理想。性能測試人員就陷入了一種盲目的樂觀情緒中,就認為系統性能沒有問題,結果在實際運行中系統性能與性能測試中的性能相差很大,為什么會出現這種情況呢,下面我們來分析一下:
首先我們來了解一下ORACLE的運行機制:從客戶端發送一條SQL語句到ORACLE服務端,ORACLE要對SQL語句進行解析、執行、返回結果。并且ORACLE有一個LRU(最近最常使用的語句)機制,把最近最常使用的SQL語句保存到共享內存SGA中的libary cache中,下一次再有這樣的請求它就不解析了,直接從共享內存中使用。假如我們使用的SQL語句是select roleID from usertable where username='AAA' and password='123',在我們加壓的時候它就解析一次或很少的幾次,其他的請求就會從共享內存中取得,并且返回的結果也會保存到BUFFER CACHE中,這樣系統的測試結果當然就是很好的。但在實際工作中,用戶名和密碼是各種各樣的,而ORACLE解析的條件又要求非?量,SQL語句有一點不同它就認為是不同的SQL語句就要重新進行解析,而解析非常耗費系統資源,所以在實際運行中系統的性能和性能測試的結果相差很大。通過這個例子我們可以看出我們沒有把真正的壓力壓到點上,也就是進行的不是有效性能測試。
如何進行有效性能測試呢?一定要仔細地分析你要進行測試系統的架構、技術體系,LOADRUNNER只是一個加壓工具,它對 ORACLE的監控也非常的不好,不要盲目的相信LOADRUNNER。一定要充分重視測試的調研和設計工作,如果能在測試前拿到系統開發的各種文檔是最好的,如果沒有也要充分調研業務人員、開發人員、系統運維人員,了解系統的技術架構、業務組成、業務流程、業務頻度、數據量等要素,這樣才能進行有效性能測試。性能測試是非常有挑戰性的工作,不是簡單的幾天就能搞好的,要多積累,多學習,沒有捷徑可言,特別是剛做性能測試或做了一段時間的性能測試人員一定要充分注意。
文章來源于領測軟件測試網 http://www.kjueaiud.com/