複製鏈接
請複製以下鏈接發送給好友

軟件壓力測試

鎖定
軟件壓力測試是一種基本的質量保證行為,它是每個重要軟件測試工作的一部分。軟件壓力測試的基本思路很簡單:不是在常規條件下運行手動或自動測試,而是在計算機數量較少或系統資源匱乏的條件下運行測試。通常要進行軟件壓力測試的資源包括內部內存、CPU 可用性、磁盤空間和網絡帶寬。
中文名
軟件壓力測試
外文名
Softwaretesting pressure
釋    義
測試軟件可靠性
目    的
測試軟件能夠承受的用户訪問量
要    求
參數化登錄用户的身份;

軟件壓力測試定義

壓力測試是給軟件不斷加壓,強制其在極限的情況下運行,觀察它可以運行到何種程度,從而發現性能缺陷,是通過搭建與實際環境相似的測試環境,通過測試程序在同一時間內或某一段時間內,向系統發送預期數量的交易請求、測試系統在不同壓力情況下的效率狀況,以及系統可以承受的壓力情況。然後做針對性的測試與分析,找到影響系統性能的瓶頸,評估系統在實際使用環境下的效率情況,評價系統性能以及判斷是否需要對應用系統進行優化處理或結構調整。並對系統資源進行優化。
軟件系統的負載壓力是指系統在某種指定軟件、硬件及網絡環境下承受的流量,例如併發用户數、持續運行時間、數據量等。其中併發用户數是負載壓力的重要指標。
負載測試是通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試。其中還有一種特定類型的負載測試,它是通過逐步增加軟件系統的負載,測試系統性能的變化,並最終確定在什麼負載條件下系統性能處於失效狀態,以此來獲得系統提供的最大服務級別。
併發性能測試通過逐漸增加併發用户數負載,直到系統的瓶頸或者不能接收的狀態,綜合分析交易執行指標、資源監控指標等來確定系統併發性能的過程。併發性能測試是負載壓力測試的重要內容。
疲勞強度測試是指構建系統穩定運行情況下能夠支持的最大併發用户數或者日常運行用户數,使其在持續一段時間內執行業務,保證到達系統疲勞強度需求的業務量,通過綜合分析交易執行指標和資源監控指標,來確定系統在處理業務上的最大工作強度的過程。大數據量測試包括針對系統存儲、傳輸、統計、查詢等業務進行的獨立數據量測試,以及結合壓力性能測試、負載性能測試、疲勞性能測試相結合的綜合數據量測試。 [1]  [2] 

軟件壓力測試軟件性能

軟件的性能可以通過響應時間、併發用户數、吞吐量、資源利用率等性能指標來衡量。
(1)響應時間:
是指用户從客户端發出請求到接收完服務器返回結果的整個過程所需花費的時間,包含網絡傳輸時間以及服務器處理時間。從用户角度來看,響應時間應該從客户端計算機處理用户操作併發出請求到客户端程序收到服務器端返回結果並顯示出來的時間。
(2)併發用户數:
是指在一定時間內,某一時刻同時與服務器進行會話操作的用户數,併發用户數的類型包括:系統用户數、同時在線用户數,業務併發用户數。
(3)吞吐量:
是指單位時間內,系統處理用户的請求數或頁面數量,可以直接反映出軟件的承載能力。一般來説,利用每秒鐘的請求數或頁面數量衡量吞吐量;從業務的角度來看,也可以用每天的訪問人數或每小時處理的業務數來衡量。
(4)資源利用率:
是指系統資源(CPU、內存)的利用率,通常用資源的實際使用量與總的資源可用量比值來衡量,包括網絡、操作系統、數據庫等方面。
以上四種性能指標主要可分為系統資源利用率和系統行為(響應時間、吞吐量等)兩個方面。它們之間存在一定的相關性,共同反映出性能的不同方面。比如,響應時間、最大併發用户數、吞吐量和資源利用率可以分別用來衡量軟件的及時性、擴充能力和容量、處理能力、運行狀態。響應時間越短、承受的併發數越多、吞吐量越大、佔用的資源越少,表明系統性能越好,反之性能越差。 [2] 

軟件壓力測試測試流程

★編寫壓力測試計劃
編寫壓力測試計劃分為三個階段:分析數據庫應用系統、定義壓力測試對象與目標、評審修改壓力測試計劃。
分析應用系統:一要搞清系統對各個資源的分佈和使用情況,它將幫助確定可能系統性能的瓶頸;二是用户在事務中的分佈,它將確定壓力測試的針對點。定義壓力測試目標:測定終端用户事務的響應時間、定義主機最優配置(如內存、CPU、緩存、適配等)、尋找瓶頸(通過壓力測試,要找到降低系統響應時間的因素。是資源競爭導致死鎖,還是數據庫服務器數據鎖設置不好,還是網絡傳輸問題?)。評審修改壓力測試計劃:壓力測試計劃完成後,要對其進行評審。壓力測試計劃書的評審人員應包括有經驗的用户,軟件需求分析員,系統設計員,系統開發員,軟件測試員,然後根據評審意見修訂並完成測試壓力計劃書。
★編寫壓力測試案例
壓力測試案例是完成一個測試目的的一組測試時間的序列,測試案例要包括以下幾個要素:測試目的,測試環境,測試數據,測試運行程序(可以是腳本),預期結果等。
★多進程模擬多用户
壓力測試的執行通常是通過自動化工具執行腳本語言,或通過發包程序發送數據包實現的。前者是通過多進為程運行相同或不同的測試腳本,來模擬多個用户執行相同或不同的任務,實現壓力測試。後者要求熟悉數據包的格式,並進行設置。
★設置併發
一個測試腳本常常包含多個事務,即使多個進程同時運行一個腳本,也難以保證腳本內的某個事務同時運行,這將影響對這個事務的響應時間的測試。為了解決這個問題,需要沒置併發點,先運行到併發點的進程將等待,當所有進程都運行到併發點時,進行釋放,使所有的進程同時運行同一個事務,這樣就可以測定與實際比較接近的響應時間。
★運行測試程序並監測系統資源
運行壓力測試時還需監測系統資源,監測的對象有:網絡阻塞情況、主機CPU使用情況、內存使用情況、緩存使用情況、數據庫系統中的數據鎖、回滾段、重做日誌緩衝區等。監測的結果包括圖像與數據文件,並且圖像可以實時顯示,也可運行結束後分析。
★分析結果
壓力測試運行結束後,把所有記錄的數據彙總並記錄劍文什中。必須對測試的結果進行分析,才能得到結論。可以使用一些圖形來比較、觀察測試結果。
★優化調整設置
CPU問題:在CPU受到限制的系統中,CPU資源全被使用,並且服務響應時間會很長。這種情況下,必須提高系統的處理能力;
內存與高速緩存問題:內存的優化包括操作系統,數據庫,應用程序的內存優化;磁盤(I/O)資源問題:磁盤讀寫速度對數據庫系統是至關重要的,數據庫對象在物理設備上的合理分佈能改善性能。
調整配置參數:參數配置包括操作系統和數據庫的參數配置:優化應用系統網絡設置。
★提交測試報告
當壓力測試結果可以滿足預期需求,或優化和調整已無法改善結果時,最後提交測試報告。在報告中要包括測試提要、測試環境和測試結果,提要應該簡單説明測試方法策略範圍內容;測試環境應包括資源開銷,環境配置等。結果測試必須包括測試是否通過或拒絕,及對測試的結論應進行説明,對系統的性能做出評價。 [3] 

軟件壓力測試測試自動化

壓力測試可以採取手工測試和利用自動化工具測試兩種方式。採用手工測試不僅需要大量的測試人員和機器設備,還要考慮同步操作和對被測系統的同步監控的問題,所以執行起來有一定的侷限性,測試結果不一定能夠有效地為系統調優提供服務,而且還會耗費巨大的人力和物力。
相比之下,在壓力測試中採用自動化測試工具能更快捷地解決問題。自動化測試工具可以在一台或多台機器上模擬成百上千的用户同時執行業務操作的場景,並可以很好地同步用户的執行時間,進行有效的實時監測。因此越來越多的壓力測試項目中都用到了自動化的測試工具,自動化測試工具也在壓力測試多方面的要求中得到了發展和改良。
利用自動化測試工具進行壓力測試是壓力測試發展的主流趨勢。在實際的測試項目實施中,大都使用三類自動化測試工具,它們分別是商業化壓力測試工具、開源壓力測試工具和自主研發的壓力測試工具。 [1] 
參考資料
  • 1.    呂永智.軟件壓力測試技術概述[J].信息與電腦(理論版) ,2012 ,(002 ):51,53.
  • 2.    張紅美. 基於約束優化的實時軟件壓力測試用例生成方法研究[D].蘇州大學,2016.
  • 3.    肖俊.軟件壓力測試及測試工具的研究與實現[D].北京:北京交通大學,2009.