性能測試是一種廣義上的說法,包括了以下各種不同的性能測試類型,每種測試類型都帶著明確的測試目的。
1.性能測試(Performance Testing)
性能測試的方法是通過模擬生產運行的業務壓力量和使用場景組合,測試系統的性能是否滿足生產的性能要求。即在特定的運行條件下驗證系統的能力狀況。
主要強調在特定的軟硬件環境、特定的測試業務場景下,獲得系統的各個性能指標。
2.負載測試(Load Testing)
在給定的測試環境下,通過在被測系統上不斷增加壓力,直到性能指標超過預定指標或某種資源使用已經達到飽和狀態,目的是了解系統性能容量和處理能力極限。負載測試的主要用途是發現系統性能的拐點,尋找系統能夠支持的最大用戶、業務等處理能力的約束。
負載測試是在固定測試環境,在其它測試角度(負載方面)不變的情況下,變化一個測試角度并持續增加壓力,查看系統的性能曲線和處理極限,以及是否有性能瓶頸存在(拐點)。主要意義是從多個不同的測試角度去探測分析系統的性能變化情況,配合性能調優。測試角度可以是并發用戶數、業務量、數據量等不同方面的負載。
3.壓力測試(Stress Testing)
測試系統在一定飽和狀態下系統能夠處理的會話能力,以及是否出現錯誤,一般用于穩定性測試。
可以理解為資源的極限測試。測試關注在資源處于飽和或超負荷的情況下,系統能否正常運行,是一種在極端壓力下的穩定性測試。其主要意義是通過測試、調優保證系統即使在用戶的極端壓力下也不會出錯甚至系統崩潰。
壓力測試的目的是調查系統在其資源超負荷的情況下的表現,尤其是對系統的處理時間有什么影響。這類測試在一種需要在反常數量、頻率或資源的方式下執行系統。目標是通過極限測試方法,發現系統在極限或惡劣環境中自我保護能力。主要驗證系統的可靠性。
4.配置測試(Configuration Testing)
通過對被測系統的軟硬件環境的調整,了解各種不同環境對性能影響的程度,從而找到系統各項資源的最有分配原則。
主要用于性能調優,在經過測試獲得了基準測試數據后,進行環境調整(包括硬件配置、網絡、操作系統、應用服務器、數據庫等),再將測試結果與基準數據進行對比,判斷調整是否達到最佳狀態。
5.并發測試(Concurrency Testing)
模擬并發訪問,測試多用戶并發訪問同一個應用、模塊、數據時是否產生隱藏的并發問題,如內存泄漏、線程鎖、資源爭用問題。
6.可靠性測試(Reliability Testing)
通過給系統加載一定的業務壓力的情況下,讓應用持續運行一段時間,測試系統在這種條件下是否能夠穩定運行。
需要和壓力測試區分開,兩者的測試環境和測試目的不一樣。壓力測試強調在資源極限情況下系統是否出錯,可靠性測試強調在 一定的業務壓力下長時間(如24×7)運行系統,關注系統的運行情況(如資源使用率是否逐漸增加、響應時間是否越來越慢),是否有不穩定征兆。
二、如何有效開展性能測試
1.引言
作為評價產品性能的重要手段,性能測試在軟件測試工作中占的比重一直很大,要最終提供一份準確,權威的測試報告,測試人員的努力工作自然不可或缺,但更重要的是測試人員清晰的工作思路,簡潔的測試流程和良好的測試方法。
2.目前性能測試存在的問題
總結以往進行的性能測試,雖然測試人員自始至終對測試工作都做到了認真負責,但測試報告出爐后,大家總覺得美中不足,對測試結果都心存疑慮,尤其在那些時間跨度較長、針對不同的測試對象的性能對比測試中,或多或少都存在以下幾個方面的問題:
?、?測試準備不充分,測試目標不明確,測試計劃不詳細;
?、?缺乏測試以及針對測試對象的技術儲備;
?、?測試環境的穩定性及前后一致性不足;
?、?測試數據精確性和代表性不足;
?、?測試描述不精練;
下面,我們就剖析以上問題的同時,探討一下如何解決這些問題。
三. 性能測試準備
這是一個經常被忽略的環節,在接到測壓任務后,基于種種其它因素的考慮,測試人員往往急于進度,立即投入到具體的測試工作去了,測試、記錄、分析,忙的不亦樂乎,工作進行了一半才發現,或是硬件配置不符合要求,或是網絡環境不理想,甚至軟件版本不對,一時弄得騎虎難下,這都是沒有做好測試準備惹的禍。
原文轉自:http://www.uml.org.cn/Test/200812256.asp