軟件測試中的性能測試、負載測試、壓力測試 軟件測試
效率作為ISO 9126內部和外部質(zhì)量的重要質(zhì)量屬性之一,其含義是在規定條件下,相對于所用的資源的數量,軟件產(chǎn)品可提供適當性能的能力。資源可能包括其他軟件產(chǎn)品或系統的軟件和硬件配置,以及其他相關(guān)的資源(例如:打印紙、磁盤(pán)等)。
效率測試主要關(guān)注產(chǎn)品的時(shí)間和資源相關(guān)的特性。時(shí)間相關(guān)的特性是指在規定條件下,軟件產(chǎn)品執行其功能時(shí),提供適當的響應和處理時(shí)間以及吞吐量的能力,例如:用戶(hù)打開(kāi)某個(gè)網(wǎng)頁(yè)需要等待的時(shí)間;資源相關(guān)的特性是指,在規定條件下,軟件產(chǎn)品執行其功能時(shí),使用合適數量和類(lèi)別的資源的能力,例如:用戶(hù)在進(jìn)行相關(guān)操作時(shí),系統的內存和CPU的變化情況。
根據產(chǎn)品的時(shí)間特性和資源特性,效率測試可以包括不同的測試類(lèi)型,例如:性能測試(Performance Test)、負載測試(Load Test)和壓力測試(Stress Test)。這三種效率測試類(lèi)型,不僅在具體定義上面有不同的側重點(diǎn),同時(shí)相互之間又是密切關(guān)聯(lián)的。
1)性能測試
性能測試主要評價(jià)系統或組件的性能是否和具體的性能需求一致,例如:對訪(fǎng)問(wèn)速度的性能需求或對內存使用情況的需求。特定性能測試的關(guān)注點(diǎn)在于組件或系統在規定的時(shí)間內和特定的條件下響應用戶(hù)或系統輸入的能力。
不同的性能的度量方法取決于不同的被測對象。對于一個(gè)單獨軟件組件,其性能可以根據CPU主頻來(lái)判定。而帶客戶(hù)端的系統,其性能則要根據系統處理特定用戶(hù)請求的響應時(shí)間來(lái)判定。對于那些由多種組件(如客戶(hù)端、服務(wù)器、數據庫)構成的系統,則要進(jìn)行各組件之間的性能測試。
產(chǎn)品的性能對用戶(hù)是否會(huì )持續使用該產(chǎn)品影響很大。表1所示是一個(gè)用戶(hù)對訪(fǎng)問(wèn)一個(gè)獨立頁(yè)面時(shí)等待不同時(shí)間的態(tài)度分布?梢钥吹,當頁(yè)面加載時(shí)間在10秒的時(shí)候,有84%的用戶(hù)愿意等待;但是當頁(yè)面加載時(shí)間達到30秒的時(shí)候,只有5%的用戶(hù)愿意等待。
表1 用戶(hù)愿意等待時(shí)間分布
頁(yè)面加載時(shí)間 愿意等待的用戶(hù)比例
10秒 84%
15秒 51%
20秒 26%
30秒 5%
表1中的數據考慮了網(wǎng)絡(luò )的延遲。而如果在測試環(huán)境中,整個(gè)網(wǎng)絡(luò )是被測試系統所獨占的時(shí)候,對系統性能的要求要高的多。對于愿意等待的時(shí)間,每個(gè)用戶(hù)的承受范圍是不同,而且用戶(hù)對不同的應用程序愿意接受的等待時(shí)間也是不一樣的。下面是一組關(guān)于響應時(shí)間的性能需求描述:
● 對于多媒體交互系統,在90%的時(shí)間內系統響應時(shí)間應該不超過(guò)0.1秒;
● 對于每個(gè)用戶(hù)同時(shí)只有一項任務(wù)的在線(xiàn)系統,在90%的時(shí)間內系統響應時(shí)間應該不超過(guò)0.5秒;
● 對于每個(gè)用戶(hù)同時(shí)有多任務(wù)的在線(xiàn)系統,在90%的時(shí)間內系統響應時(shí)間應該不超過(guò)1秒。
性能測試關(guān)注的是系統性能是否和具體的性能需求相一致,而當系統性能超過(guò)性能需求的時(shí)候,系統的表現并不是測試人員關(guān)心的重點(diǎn)。例如:性能需求中要求系統應該支持最大同時(shí)在線(xiàn)用戶(hù)為5000個(gè),那么在性能測試過(guò)程中重點(diǎn)測試系統是否能支持5000個(gè)用戶(hù)同時(shí)在線(xiàn);當有5000個(gè)用戶(hù)同時(shí)在線(xiàn)后,性能測試需要關(guān)注整個(gè)系統的運行是否符合要求;而對于在線(xiàn)用戶(hù)超過(guò)5000人的時(shí)候,系統的表現行為并不是性能測試需要關(guān)注的。
2)負載測試
負載測試是一種通過(guò)增加負載來(lái)評估組件或系統的性能的測試方法。例如:通過(guò)增加并發(fā)用戶(hù)數和(或)事務(wù)數量來(lái)測量組件或系統能夠承受的負載。負載測試和性能測試的主要區別在于負載測試時(shí),系統負載是逐漸增加的,而不是一步到位,負載測試需要觀(guān)察系統在各種不同的負載情況下是否都能夠正常工作。
下圖是某網(wǎng)站隨著(zhù)用戶(hù)數量的增加,對應的響應時(shí)間也在增加的趨勢圖。具體趨勢如圖1所示。

圖1 某網(wǎng)站負載測試中用戶(hù)數量和響應時(shí)間關(guān)系圖
通過(guò)觀(guān)察圖1,可以發(fā)現隨著(zhù)用戶(hù)數目的增加,系統響應時(shí)間也跟著(zhù)增加。當在線(xiàn)用戶(hù)數到700以后,系統響應時(shí)間增速明顯加快。當然響應時(shí)間只是需要觀(guān)察的數據之一,隨著(zhù)測試負載的增加還需要觀(guān)察系統資源等占有情況。
3)壓力測試
壓力測試是評估系統處于或超過(guò)預期負載時(shí)系統的運行情況。壓力測試的關(guān)注點(diǎn)在于系統在峰值負載或超出最大載荷情況下的處理能力。在壓力級別逐漸增加時(shí),系統性能應該按照預期緩慢下降,但是不應該崩潰。壓力測試還可以發(fā)現系統崩潰的臨界點(diǎn),從而發(fā)現系統中的薄弱環(huán)節。例如:系統最大支持的同時(shí)在線(xiàn)用戶(hù)數是1000個(gè),壓力測試需要測試在1000個(gè)用戶(hù)甚至2000個(gè)用戶(hù)同時(shí)在線(xiàn)時(shí)系統的表現。雖然測試時(shí)負載已經(jīng)超過(guò)了系統的設計能力,但是在這種情況下被測試系統也不應該發(fā)生崩潰。壓力測試也可以針對系統資源進(jìn)行測試,例如:在系統內存耗盡情況下,測試系統的運行情況,這種情況下被測試系統也不應該崩潰。
前面分別介紹了性能測試、負載測試和壓力測試三種效率測試類(lèi)型。目前在軟件測試領(lǐng)域,對這三種測試類(lèi)型的定義并不統一。在實(shí)際的測試工作中,性能測試這個(gè)詞被廣泛的使用。在很多場(chǎng)合,性能測試是上述三種測試類(lèi)型的通稱(chēng);在有的書(shū)籍或者參考資料中,性能測試的范圍甚至更加廣泛。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/