性能測試vs負載測試vs壓力測試
下面我們主要介紹性能測試、負載測試和壓力測試。
效率作為ISO 9126內(nèi)部和外部質(zhì)量的重要質(zhì)量屬性之一,其含義是在規(guī)定條件下,相對于所用的資源的數(shù)量,軟件產(chǎn)品可提供適當(dāng)性能的能力。資源可能包括其他軟件產(chǎn)品或系統(tǒng)的軟件和硬件配置,以及其他相關(guān)的資源(例如:打印紙、磁盤等)。
效率測試主要關(guān)注產(chǎn)品的時間和資源相關(guān)的特性。時間相關(guān)的特性是指在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時,提供適當(dāng)?shù)捻憫?yīng)和處理時間以及吞吐量的能力,例如:用戶打開某個網(wǎng)頁需要等待的時間;資源相關(guān)的特性是指,在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時,使用合適數(shù)量和類別的資源的能力,例如:用戶在進行相關(guān)操作時,系統(tǒng)的內(nèi)存和CPU的變化情況。
根據(jù)產(chǎn)品的時間特性和資源特性,效率測試可以包括不同的測試類型,例如:性能測試(Performance Test)、負載測試(Load Test)和壓力測試(Stress Test)。這三種效率測試類型,不僅在具體定義上面有不同的側(cè)重點,同時相互之間又是密切關(guān)聯(lián)的。
1)性能測試
性能測試主要評價系統(tǒng)或組件的性能是否和具體的性能需求一致,例如:對訪問速度的性能需求或?qū)?nèi)存使用情況的需求。特定性能測試的關(guān)注點在于組件或系統(tǒng)在規(guī)定的時間內(nèi)和特定的條件下響應(yīng)用戶或系統(tǒng)輸入的能力。
不同的性能的度量方法取決于不同的被測對象。對于一個單獨軟件組件,其性能可以根據(jù)CPU主頻來判定。而帶客戶端的系統(tǒng),其性能則要根據(jù)系統(tǒng)處理特定用戶請求的響應(yīng)時間來判定。對于那些由多種組件(如客戶端、服務(wù)器、數(shù)據(jù)庫)構(gòu)成的系統(tǒng),則要進行各組件之間的性能測試。
產(chǎn)品的性能對用戶是否會持續(xù)使用該產(chǎn)品影響很大。表1所示是一個用戶對訪問一個獨立頁面時等待不同時間的態(tài)度分布??梢钥吹?,當(dāng)頁面加載時間在10秒的時候,有84%的用戶愿意等待;但是當(dāng)頁面加載時間達到30秒的時候,只有5%的用戶愿意等待。
表1 用戶愿意等待時間分布
表1中的數(shù)據(jù)考慮了網(wǎng)絡(luò)的延遲。而如果在測試環(huán)境中,整個網(wǎng)絡(luò)是被測試系統(tǒng)所獨占的時候,對系統(tǒng)性能的要求要高的多。對于愿意等待的時間,每個用戶的承受范圍是不同,而且用戶對不同的應(yīng)用程序愿意接受的等待時間也是不一樣的。下面是一組關(guān)于響應(yīng)時間的性能需求描述:
- 對于多媒體交互系統(tǒng),在90%的時間內(nèi)系統(tǒng)響應(yīng)時間應(yīng)該不超過0.1秒;
- 對于每個用戶同時只有一項任務(wù)的在線系統(tǒng),在90%的時間內(nèi)系統(tǒng)響應(yīng)時間應(yīng)該不超過0.5秒;
- 對于每個用戶同時有多任務(wù)的在線系統(tǒng),在90%的時間內(nèi)系統(tǒng)響應(yīng)時間應(yīng)該不超過1秒。
性能測試關(guān)注的是系統(tǒng)性能是否和具體的性能需求相一致,而當(dāng)系統(tǒng)性能超過性能需求的時候,系統(tǒng)的表現(xiàn)并不是測試人員關(guān)心的重點。
例如:性能需求中要求系統(tǒng)應(yīng)該支持***同時在線用戶為5000個,那么在性能測試過程中重點測試系統(tǒng)是否能支持5000個用戶同時在線;當(dāng)有5000個用戶同時在線后,性能測試需要關(guān)注整個系統(tǒng)的運行是否符合要求;而對于在線用戶超過5000人的時候,系統(tǒng)的表現(xiàn)行為并不是性能測試需要關(guān)注的。
2)負載測試
負載測試是一種通過增加負載來評估組件或系統(tǒng)的性能的測試方法。例如:通過增加并發(fā)用戶數(shù)和(或)事務(wù)數(shù)量來測量組件或系統(tǒng)能夠承受的負載。負載測試和性能測試的主要區(qū)別在于負載測試時,系統(tǒng)負載是逐漸增加的,而不是一步到位,負載測試需要觀察系統(tǒng)在各種不同的負載情況下是否都能夠正常工作。
下圖是某網(wǎng)站隨著用戶數(shù)量的增加,對應(yīng)的響應(yīng)時間也在增加的趨勢圖。具體趨勢如圖1所示。
圖1 某網(wǎng)站負載測試中用戶數(shù)量和響應(yīng)時間關(guān)系圖
通過觀察圖1,可以發(fā)現(xiàn)隨著用戶數(shù)目的增加,系統(tǒng)響應(yīng)時間也跟著增加。當(dāng)在線用戶數(shù)到700以后,系統(tǒng)響應(yīng)時間增速明顯加快。當(dāng)然響應(yīng)時間只是需要觀察的數(shù)據(jù)之一,隨著測試負載的增加還需要觀察系統(tǒng)資源等占有情況。
3)壓力測試
壓力測試是評估系統(tǒng)處于或超過預(yù)期負載時系統(tǒng)的運行情況。壓力測試的關(guān)注點在于系統(tǒng)在峰值負載或超出***載荷情況下的處理能力。在壓力級別逐漸增加時,系統(tǒng)性能應(yīng)該按照預(yù)期緩慢下降,但是不應(yīng)該崩潰。壓力測試還可以發(fā)現(xiàn)系統(tǒng)崩潰的臨界點,從而發(fā)現(xiàn)系統(tǒng)中的薄弱環(huán)節(jié)。
例如:系統(tǒng)***支持的同時在線用戶數(shù)是1000個,壓力測試需要測試在1000個用戶甚至2000個用戶同時在線時系統(tǒng)的表現(xiàn)。雖然測試時負載已經(jīng)超過了系統(tǒng)的設(shè)計能力,但是在這種情況下被測試系統(tǒng)也不應(yīng)該發(fā)生崩潰。壓力測試也可以針對系統(tǒng)資源進行測試,例如:在系統(tǒng)內(nèi)存耗盡情況下,測試系統(tǒng)的運行情況,這種情況下被測試系統(tǒng)也不應(yīng)該崩潰。
前面分別介紹了性能測試、負載測試和壓力測試三種效率測試類型。目前在軟件測試領(lǐng)域,對這三種測試類型的定義并不統(tǒng)一。在實際的測試工作中,性能測試這個詞被廣泛的使用。在很多場合,性能測試是上述三種測試類型的通稱;在有的書籍或者參考資料中,性能測試的范圍甚至更加廣泛。
【編輯推薦】