OA應用程序的性能測試包括了benchmarking test(基準測試),capacity test(容量測試)和soak test(浸泡測試)三個主要測試階段。
基準測試(Benchmarking Test)
基于SOA的性能測試第一階段是基準測試,基準測試是用來確定被測應用程序是否存在性能衰退,并且收集可重復性能測試結果以作為性能基準。基準測試的最好方法是每次測試只改變一個參數。基準測試包括了相應時間驅動的測試和吞吐量驅動的測試。
響應時間驅動測試
對于web service的應用程序,其中響應時間定義為發送一個服務請求到收到服務響應的時間間隔。響應時間驅動的測試主要用來測試單個service的性能。首先加一個虛擬用戶作為負載量,然后對同一測試用例按照比例的增加并發虛擬用戶數,并分別記錄下測試結果,最后計算出這些測試結果的平均值作為平均響應時間。
下圖為某個web服務在不同并發虛擬用戶數下平均響應時間曲線圖,由圖可看出,平均響應時間隨著并發虛擬用戶數的增加而增加。在用戶數從50到100,平均響應時間開始比較大幅度地增長,此時很有可能某個系統資源出現了瓶頸,當然前提條件是在被測應用程序沒有出現錯誤的情況下。此時可以進行調優,但要保證每次只改動一個參數值,然后再次執行相同測試用例,并與之前的結果進行對比,選取結果最優的參數配置。(圖略)
吞吐量驅動測試
吞吐量被定義為在單元時間內能夠成功處理的服務請求的數量。吞吐量驅動的測試主要是基于一組連續web服務形成一個或多個測試場景,來測量應用在單位時間內能夠處理的事務數量。
這是針對一個業務場景進行的性能測試用例,同樣首先加一個虛擬用戶作為負載量,然后對同一測試用例按比例的增加并發虛擬用戶數,最后記錄下不同虛擬用戶數下的吞吐量。
下圖為不同并發虛擬用戶數下吞吐量的曲線圖,與響應時間一樣,吞吐量也隨著并發虛擬用戶數的增長而增長,但不同的是吞吐量在達到某一最高點后,再增加并發虛擬用戶時吞吐量則保持與最高值接近。這是由于當用戶數較少時,單位時間內發出的服務請求較少,所以測出的吞吐量較小,當用戶數增加,發出的服務請求增加,所以吞吐量也隨之增加,當吞吐量達到最高值表明被測應用在測試的硬件環境下達到處理事務的最高能力。最后同樣要做性能調優,以選取最優的吞吐量最大值時的配置情況。(圖略)
容量測試(Capacity Test)
容量測試的目標是要看被測應用在一定測試環境下能夠達到的最大處理能力。容量測試將模擬更加接近真實用戶使用的環境,并且用更為真實的用戶負載來測試 SOA應用程序的capacity scale。具體地說,一般容量測試是為了檢測在達到一定響應時間或吞吐量的前提下被測應用能夠支持的并發用戶數。其中容量測試包括了以下幾方面內容:
- 定義訪問系統的并發虛擬用戶數
- 定義虛擬用戶的think time,也就是發出兩個連續請求之間的時間間隔。
- 用ramp-up run的方式增加負載量進行測試,得到被測應用能夠支持的虛擬用戶數的范圍。
- 在應用支持的用戶數地范圍內,采用flat run的方式進行測試,以得到更為精確性能結果。
浸泡測試(Soak Test)
Soak test是在一個穩定的并發用戶上進行的long run測試,用來測試SOA應用程序的健壯性。通過soak test往往可以發現內存泄露,頻繁 GC 等嚴重性能問題。進行soak test需要注意以下兩點:
- Soak test需要在一定適中的用戶負載量下進行,最好低于應用支持最大的負載量。
- 在執行long run測試時,采用幾種不同用戶組,并且每個用戶組織性不同的業務流程。
Soak test實際上比較簡單的性能測試,測試最好能夠運行幾天,以真正得到一個健壯的應用。確保應用測試是貼近真實世界,盡量與實際使用情況接近。
|