軟體壓力測試

軟體壓力測試

軟體壓力測試是一種基本的質量保證行為,它是每個重要軟體測試工作的一部分。軟體壓力測試的基本思路很簡單:不是在常規條件下運行手動或自動測試,而是在計算機數量較少或系統資源匱乏的條件下運行測試。通常要進行軟體壓力測試的資源包括內部記憶體、CPU 可用性、磁碟空間和網路頻寬。

目的

在最近的一次測試中定義了測試的目的是:需要了解AUT(被測應用程式)一般能夠承受的壓力,同時能夠承受的用戶訪問量(容量),最多支持有多少用戶同時訪問某個功能。在AUT中選擇了用戶最常用的五個功能作為本次測試的內容,包括登錄。大概的需求就是這樣。

接下來AUT的登錄說一說怎么用LoadRunner和Jmeter來實現場景的設定達到測試的目的。(註:對伺服器的檢測不是本次測試的重點,本次測試主要收集並發訪問用戶數和發生錯誤用戶數)。

要求

首先是對腳本的要求:

1、錄製腳本(注意所有的腳本都應錄製到Action中),自定義事務,事務從提交用戶名和口令的腳本之前開始;

2、在定義事務開始的腳本前加入集合點;

3、在腳本中加入檢查點,以登錄成功的頁面出現登錄用戶的ID即可;

4、參數化登錄用戶的身份;

其次是對場景設定的要求:

1、因為事先我們不知道將有多少用戶訪問是臨界點,所以在測試過程中需要多次改變用戶數來確定;

2、建議修改運行時設定,最佳化對伺服器的訪問; [Page]

3、計畫的設定,每x時間後載入10用戶(根據總用戶數設定),完全載入後持續運行不超過5分鐘(根據需要設定);

4、集合策略,當運行中的用戶數100%達到集合點時釋放;

5、注意事項,需要注意幾個時間:1)伺服器回響逾時時間;2)登錄事務疊代一次所使用的時間;3)集合點等待逾時時間;4)計畫中設定的間隔時間。在我的測試中事務運行一次的時間不超過30秒,通過修改腳本使它的運行時間達到一分鐘左右, 伺服器回響逾時時間、結合點等待逾時時間、計畫中設定的間隔時間都設定為了2分鐘。

這樣場景開始運行後運行用戶數呈階梯增長,另外在每個上升點新增的用戶都會隨原來已經運行的用戶並發訪問伺服器。

通過多次的運行和對測試結果中正在運行用戶數與錯誤用戶的對比,然後根據定義可接受錯誤率就可得到該功能的最大並發訪問的用戶數。

以上測試中排除了對網路、客戶端等的要求。在實際測試中首先要保證這些資源是足夠的。

使用Jmeter也能夠達到上述描述的場景的測試,並且更加的便捷。

實例

利用現代的設計技術和正式的技術複審可以減少代碼中存在的初始錯誤,但是錯誤總是存在的,如果開發者找不到錯誤,那么,客戶就會找到它們。越來越多的軟體組織認識到軟體測試是軟體質量保證的重要元素之一,很多軟體開發組織將30%—40%甚至更多的項目資源用在測試上,軟體測試技術和軟體測試策略受到了高度的重視和廣泛的套用。

本文不想就軟體測試技術和軟體測試策略作深入的理論分析,而是列舉一個在軟體系統測試階段進行的軟體壓力測試實例,希望能通過這個實例與從事軟體測試相關工作的朋友進行交流。

首先介紹一下實例中軟體的項目背景,該軟體是一個典型的三層C/S架構的MIS系統(客戶端/套用伺服器/資料庫管),中間層是業務邏輯層,套用伺服器處理所有的業務邏輯,但套用伺服器本身不提供負載均衡的能力,而是利用開發工具提供的ORB(對象請求代理)軟體保證多個套用伺服器間的負載均衡。本次測試的目的是:進行單個套用伺服器的軟體壓力測試,找出單個套用伺服器能夠支持的最大客戶端數。測試壓力估算的依據是:假定在實際環中,用戶只啟用一個套用伺服器進行所有的業務處理。方法是:按照正常業務壓力估算值的1~10倍進行測試,考察套用伺服器的運行情況。

區別注意

軟體性能測試就是用來測試軟體在系統中的運行性能的。軟體性能測試可以發生在各個測試階段中,即使是在單元層,一個單獨模組的性能也可以使用白盒測試來進行評估,然而,只有當整個系統的所有成分都集成到一起之後,才能檢查一個系統的真正性能。

軟體性能測試經常和軟體壓力測試一起進行,而且常常需要硬體和軟體測試設備,這就是說,常常有必要的在一種苛刻的環境中衡量資源的使用(比如,處理器周期)。外部的測試設備可以監測測試執行,當出現情況(如中斷)時記錄下來。通過對系統的檢測,測試者可以發現導致效率降低和系統故障的原因。

軟體壓力測試:對系統不斷施加壓力的測試,是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試。例如測試一個 Web 站點在大量的負荷下,何時系統的回響會退化或失敗。

軟體性能測試:在交替進行負荷和強迫測試時常用的術語。軟體性能測試關注的是系統的整體。它和通常所說的強度、壓力/負載測試測試有密切關係。所以壓力和強度測試應該於軟體性能測試一同進行。

舉例說明:針對一個網站進行測試,模擬10到50個用戶就是在進行常規軟體性能測試,用戶增加到1000乃至上萬就變成了壓力/負載測試。如果同時對系統進行大量的數據查詢操作,就包含了強度測試。

軟體性能測試(Performance) 正常使用的時間內系統完成一個任務需要的時間,多人同時使用的時候回響時間,在可以接受範圍內.J2EE技術實現的系統在性能方面更是需要照顧的,一般原則是3秒以下接受,3-5秒可以接受,5秒以上就影響易用性了. 如果在測試過程中發現性能問題,修復起來是非常艱難的,因為這常常意味著程式的算法不好,結構不好,或者設計有問題。因此在產品開發的開始階段,就要考慮到軟體的性能問題

軟體壓力測試 (Stress) 多用戶情況可以考慮使用軟體壓力測試工具,建議將壓力和軟體性能測試結合起來進行.如果有負載平衡的話還要在伺服器端打開監測工具,查看伺服器CPU使用率,記憶體占用情況,如果有必要可以模擬大量數據輸入,對硬碟的影響等等信息.如果有必要的話必須進行性能最佳化(軟硬體都可以).

軟體壓力測試和軟體性能測試的區別是在於他們不同的測試目的

軟體壓力測試是為了發現系統能支持的最大負載,他的前提是要求系統性能處在可以接受的範圍內,比如經常規定的頁面3秒鐘內回響;

所以一句話概括就是:在性能可以接受的前提下,測試系統可以支持的最大負載。

軟體性能測試是為了檢查系統的反映,運行速度等性能指標,他的前提是要求在一定負載下,如檢查一個網站在100人同時線上的情況下的性能指標,每個用戶是否都還可以正常的完成操作等。

概括就是:在不同負載下(負載一定)時,通過一些系統參數(如反應時間等)檢查系統的運行情況;

比如我們說某個網站的性能差,嚴格上應該說‘在N人同時線上情況下,這個站點性能很差)

總之,就像一個方程式:綜合性能=壓力數*性能指數,

綜合性能是固定的:

軟體壓力測試是為了得到性能指數最小時候(可以接受的最小指數)最大的壓力數軟體性能測試是為了得到壓力數確定下的性能指數。

相關詞條

相關搜尋

熱門詞條

聯絡我們