軟體壓力測試是一種基本的質量保證行為,它是每個重要軟體測試工作的一部分。軟體壓力測試的基本思路很簡單:不是在常規條件下運行手動或自動測試,而是在計算機數量較少或系統資源匱乏的條件下運行測試。通常要進行軟體壓力測試的資源包括內部記憶體、CPU 可用性、磁碟空間和網路頻寬。
基本介紹
- 中文名:軟體壓力測試
- 外文名:Software testing pressure
- 釋義:測試軟體可靠性
- 目的:測試軟體能夠承受的用戶訪問量
- 要求:參數化登錄用戶的身份;
定義,軟體性能,測試流程,測試自動化,
定義
壓力測試是給軟體不斷加壓,強制其在極限的情況下運行,觀察它可以運行到何種程度,從而發現性能缺陷,是通過搭建與實際環境相似的測試環境,通過測試程式在同一時間內或某一段時間內,向系統傳送預期數量的交易請求、測試系統在不同壓力情況下的效率狀況,以及系統可以承受的壓力情況。然後做針對性的測試與分析,找到影響系統性能的瓶頸,評估系統在實際使用環境下的效率情況,評價系統性能以及判斷是否需要對套用系統進行最佳化處理或結構調整。並對系統資源進行最佳化。
軟體系統的負載壓力是指系統在某種指定軟體、硬體及網路環境下承受的流量,例如並發用戶數、持續運行時間、數據量等。其中並發用戶數是負載壓力的重要指標。
負載測試是通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試。其中還有一種特定類型的負載測試,它是通過逐步增加軟體系統的負載,測試系統性能的變化,並最終確定在什麼負載條件下系統性能處於失效狀態,以此來獲得系統提供的最大服務級別。
並發性能測試通過逐漸增加並發用戶數負載,直到系統的瓶頸或者不能接收的狀態,綜合分析交易執行指標、資源監控指標等來確定系統並發性能的過程。並發性能測試是負載壓力測試的重要內容。
疲勞強度測試是指構建系統穩定運行情況下能夠支持的最大並發用戶數或者日常運行用戶數,使其在持續一段時間內執行業務,保證到達系統疲勞強度需求的業務量,通過綜合分析交易執行指標和資源監控指標,來確定系統在處理業務上的最大工作強度的過程。大數據量測試包括針對系統存儲、傳輸、統計、查詢等業務進行的獨立數據量測試,以及結合壓力性能測試、負載性能測試、疲勞性能測試相結合的綜合數據量測試。
軟體性能
軟體的性能可以通過回響時間、並發用戶數、吞吐量、資源利用率等性能指標來衡量。
(1)回響時間:
是指用戶從客戶端發出請求到接收完伺服器返回結果的整個過程所需花費的時間,包含網路傳輸時間以及伺服器處理時間。從用戶角度來看,回響時間應該從客戶端計算機處理用戶操作並發出請求到客戶端程式收到伺服器端返回結果並顯示出來的時間。
(2)並發用戶數:
是指在一定時間內,某一時刻同時與伺服器進行會話操作的用戶數,並發用戶數的類型包括:系統用戶數、同時線上用戶數,業務並發用戶數。
(3)吞吐量:
是指單位時間內,系統處理用戶的請求數或頁面數量,可以直接反映出軟體的承載能力。一般來說,利用每秒鐘的請求數或頁面數量衡量吞吐量;從業務的角度來看,也可以用每天的訪問人數或每小時處理的業務數來衡量。
(4)資源利用率:
是指系統資源(CPU、記憶體)的利用率,通常用資源的實際使用量與總的資源可用量比值來衡量,包括網路、作業系統、資料庫等方面。
以上四種性能指標主要可分為系統資源利用率和系統行為(回響時間、吞吐量等)兩個方面。它們之間存在一定的相關性,共同反映出性能的不同方面。比如,回響時間、最大並發用戶數、吞吐量和資源利用率可以分別用來衡量軟體的及時性、擴充能力和容量、處理能力、運行狀態。回響時間越短、承受的並發數越多、吞吐量越大、占用的資源越少,表明系統性能越好,反之性能越差。
測試流程
★編寫壓力測試計畫
編寫壓力測試計畫分為三個階段:分析資料庫套用系統、定義壓力測試對象與目標、評審修改壓力測試計畫。
分析套用系統:一要搞清系統對各個資源的分布和使川情況,它將幫助確定可能系統性能的瓶頸;二是用戶在事務中的分布,它將確定壓力測試的針對點。定義壓力測試目標:測定終端用戶事務的回響時間、定義主機最優配置(如記憶體、CPU、快取、適配等)、尋找瓶頸(通過壓力測試,要找到降低系統回響時間的因素。是資源競爭到導致死鎖?還是資料庫伺服器數據鎖設定不好?還是網路傳輸問題?)。評審修改壓力測試計畫:壓力測試計畫完成後,要對其進行評審。壓力測試計畫書的評審人員應包括有經驗的用戶,軟體需求分析員,系統設計員,系統開發員,軟體測試員,然後根據評審意見修訂並完成測試壓力計畫書。
★編寫壓力測試案例
壓力測試案例是完成一個測試目的的一組測試時間的序列,測試案例要包括以下兒個要素:測試目的,測試環境,測試數據,測試運行程式(可以是腳本),預期結果等。
★多進程模擬多用戶
壓力測試的執行通常是通過自動化工具執行腳本語言,或通過發包程式傳送數據包實現的。前者是通過多進為程運行相同或不同的測試腳本,來模擬多個用戶執行相同或不同的任務,實現壓力測試。後者要求熟悉數據包的格式,並進行設定。
★設定並發點
一個測試腳本常常包含多個事務,即使多個進程同時運行一個腳本,也難以保證腳本內的某個事務同時運行,這將影響對這個事務的回響時間的測試。為了解決這個問題,需要沒置並發點,先運行到並發點的進程將等待,當所有進程都運行到並發點時,進行釋放,使所有的進程同時運行同一個事務,這樣就可以測定與實際比較接近的回響時間。
★運行測試程式並監測系統資源
運行壓力測試時還需監測系統資源,監測的對象有:網路阻塞情況、主機CPU使用情況、記憶體使用情況、快取使用情況、資料庫系統中的數據鎖、回滾段、重做日誌緩衝區等。監測的結果包括圖像與數據檔案,並且圖像可以實時顯示,也可運行結束後分析。
★分析結果
壓力測試運行結束後,把所有記錄的數據匯總並記錄劍文什中。必須對測試的結果進行分析,才能得到結論。可以使用一些圖形來比較、觀察測試結果。
★最佳化調整設定
CPU問題:在CPU受到限制的系統中,CPU資源全被使用,並且服務回響時間會很長。這種情況下,必須提高系統的處理能力;
記憶體與高速快取問題:記憶體的最佳化包括作業系統,資料庫,應用程式的記憶體最佳化;磁碟(I/O)資源問題:磁碟讀寫速度對資料庫系統是至關重要的,資料庫對象在物理設備上的合理分布能改善性能。
調整配置參數:參數配置包括作業系統和資料庫的參數配置:最佳化套用系統網路設定。
★提交測試報告
當壓力測試結果可以滿足預期需求,或最佳化和調整已無法改善結果時,最後提交測試報告。在報告中要包括測試提要、測試環境和測試結果,提要應該簡單說明測試方法策略範圍內容;測試環境應包括資源開銷,環境配置等。結果測試必須包括測試是否通過或拒絕,及對測試的結論應進行說明,對系統的性能做出評價。
測試自動化
壓力測試可以採取手工測試和利用自動化工具測試兩種方式。採用手工測試不僅需要大量的測試人員和機器設備,還要考慮同步操作和對被測系統的同步監控的問題,所以執行起來有一定的局限性,測試結果不一定能夠有效地為系統調優提供服務,而且還會耗費巨大的人力和物力。
相比之下,在壓力測試中採用自動化測試工具能更快捷地解決問題。自動化測試工具可以在一台或多台機器上模擬成百上千的用戶同時執行業務操作的場景,並可以很好地同步用戶的執行時間,進行有效的實時監測。因此越來越多的壓力測試項目中都用到了自動化的測試工具,自動化測試工具也在壓力測試多方面的要求中得到了發展和改良。
目前,利用自動化測試工具進行壓力測試是壓力測試發展的主流趨勢。在實際的測試項目實施中,大都使用三類自動化測試工具,它們分別是商業化壓力測試工具、開源壓力測試工具和自主研發的壓力測試工具。