什麼是軟體測試中的壓力測試?
在本文中,我們將介紹壓力測試,包括其需求和目標,它與負載測試的不同之處,不同型別的壓力測試,其流程、工具和指標。
壓力測試
壓力測試用於透過測試超出其正常執行限制來確定軟體產品的健壯性和可擴充套件性。它適用於所有型別的軟體,但對於關鍵軟體尤其重要。壓力測試旨在評估在高負載下的健壯性、可用性和錯誤處理能力,以確保軟體在緊急情況下不會崩潰。
壓力測試是一種軟體測試型別,用於驗證被測系統的穩定性和可靠性。壓力測試甚至會測試超出正常執行點,並分析系統在極端條件下的效能。
壓力測試也稱為耐力測試。在壓力測試中,被測系統或應用程式會在短時間內承受壓力,以確定其容量。
壓力測試主要用於確定崩潰極限;即系統崩潰的極限。
壓力測試的特點
壓力測試評估系統崩潰後的行為。
壓力測試確保系統在故障後恢復。
壓力測試確定系統在異常條件下工作的能力。
壓力測試確保意外故障不會造成任何安全問題。
壓力測試確保在系統處於壓力下時顯示正確的錯誤訊息。
壓力測試驗證系統是否在崩潰前儲存了所有資料。
壓力測試的重要性
考慮以下場景:在節日或促銷期間,電子購物網站可能會面臨流量激增。因此,進行壓力測試以應對此類異常情況非常重要,因為如果處理不當,可能會導致收入和聲譽損失。以下是壓力測試極其有價值的原因:
壓力測試有助於檢查系統在異常條件下的效能。
它有助於確保在系統發生故障或崩潰時顯示正確的訊息。
它避免了由於故障造成的巨大收入和其他損失。
它有助於為極端情況做好準備。
壓力測試的目標
壓力測試的目的是分析被測系統在其失敗或崩潰後的行為。為了確保壓力測試的成功,它應該在極端條件下顯示正確的錯誤訊息。在某些情況下,可能會使用海量資料集進行壓力測試,這些資料隨時可能丟失。測試人員應確保在壓力測試期間不會丟失任何資料。壓力測試的主要目標是確保系統的可恢復性,即系統能夠從故障或崩潰中成功恢復。
負載測試與壓力測試
負載測試 | 壓力測試 |
---|---|
它用於評估系統在正常工作負載條件下的效能。 | 它用於測試系統在極端負載下的健壯性。 |
負載限制與崩潰閾值相同。 | 負載限制超過崩潰閾值。 |
在多個使用者下測量系統的效能。 | 在不同數量的資料下測量系統的效能。 |
它涉及大量使用者。 | 它涉及大量使用者和資料。 |
它用於確定系統的上限。 | 它用於確定系統在壓力或重負載下的行為。 |
被測試的因素是效能。 | 被測試的因素是健壯性和穩定性。 |
它確定系統的執行能力。 | 它確保系統安全。 |
它不會破壞系統。 | 它試圖透過使用大量資料或資源來破壞系統。 |
壓力測試型別
**伺服器-客戶端壓力測試 -** 此型別的測試在伺服器上的所有客戶端之間進行。它也稱為分散式壓力測試。伺服器的職責是將一組壓力測試分發到每個客戶端並跟蹤其狀態。
**產品測試 -** 此測試側重於發現系統中的缺陷、網路問題、資料阻塞和鎖定以及效能擁塞。它也稱為應用程式壓力測試。
**事務壓力測試 -** 此型別的測試在一個或多個兩個或多個系統或應用程式之間的事務上進行。它用於微調和最佳化系統。
**系統壓力測試 -** 這是一個整合的測試,用於測試在伺服器上執行的多個系統。它用於發現一個系統資料阻塞另一個系統的情況。
**分析壓力測試 -** 此測試用於確定系統在異常和意外情況下的效能。它用於發現異常情況下的缺陷,例如大量使用者同時登入或從網站訪問資料庫時資料庫離線。它也稱為探索性壓力測試。
壓力測試流程
壓力測試遵循以下五個步驟:
**規劃 -** 在此初步階段,收集系統資料、分析系統並定義壓力測試的目標。
**建立自動化指令碼 -** 在此階段,建立測試的自動化指令碼,並生成壓力場景的測試資料。
**指令碼執行 -** 在此階段,執行先前階段生成的指令碼並將壓力結果儲存起來。
**分析結果 -** 在此階段,分析先前階段儲存的結果以發現瓶頸。
**最佳化和調整 -** 在此階段,對被測系統進行微調,進行配置更改,並最佳化程式碼以達到指定的標準或基準。
壓力測試示例
為了進行電子商務應用程式的壓力測試,模擬大量使用者訪問該應用程式。
模擬測試的使用者數量將遠高於每天訪問該應用程式的平均使用者數量。
這些使用者是虛擬的,並且被程式設計為執行常見的活動,例如檢視產品、向購物車中新增和刪除商品、購買產品等。
使用者數量不斷增加,直到應用程式崩潰或失敗,無法再處理流量。
檢查測試結果以發現系統中的瓶頸或缺點、效能改進或最佳化領域、恢復機制等。
壓力測試工具
**LoadRunner -** 惠普企業 (HP) 的此工具廣泛用於負載測試。LoadRunner 生成的結果用作基準。它基於記錄和回放使用者活動的理念,然後在伺服器上生成所需的負載。它模擬現實世界中的操作,並透過生成虛擬負載來確定系統或應用程式的效能。
**Jmeter -** 這是一款用於壓力和效能測試的開源工具。它完全是用 Java 編寫的。它涵蓋了負載測試、功能測試、壓力測試等型別的測試。Jmeter 需要 JDK 5 或更高版本才能執行。它主要用於測試 Web 和 Web 服務應用程式。它由 Apache 軟體基金會開發,用於測試功能行為和測量效能。它還用於測量各種服務的效能。它最初用於測試 Web 應用程式和檔案傳輸協議 (FTP) 應用程式。現在,它還用於功能測試、資料庫伺服器測試等。它非常易於使用,可以快速上手。作為純 Java 應用程式,Jmeter 是平臺無關的。測試結果可以以不同的格式檢視,例如圖表、表格、樹等。它支援所有基本協議,包括 HTTP、JDBC、LDAP、SOAP 和 JMS。
壓力測試工具 − 此工具有助於對 Web 應用程式的效能進行廣泛分析。它易於使用,結果可以以圖形格式檢視。它具有良好的投資回報率,甚至不需要高階指令碼。
Neo Load − 這是最流行的 Web 和移動應用程式測試工具之一。它模擬數千個使用者來評估應用程式在負載下的效能並分析響應時間。此工具支援雲集成的效能、負載和壓力測試。Neo Load 簡單易用、經濟高效且具有良好的可擴充套件性。此外,它還可以準確指出網際網路、內聯網或移動應用程式可以管理的同時使用者數量。它支援自動化測試設計,從而加快測試建立速度。它支援各種協議,例如 HTTP、HTTPS、SOAP、REST、Flex Push、AJAX Push 等。
壓力測試指標
指標評估系統的效能,通常在壓力測試結束時進行研究。壓力測試中一些常用的指標包括:
可擴充套件性和效能
每秒頁面數 − 每秒請求的頁面數。
吞吐量 − 每秒響應資料大小。
輪次 − 測試條件計劃執行的次數與客戶端實際執行的次數。
應用程式響應
命中時間 − 獲取頁面或影像的平均時間。
首位元組時間 − 返回第一位元組資訊所需的時間。
頁面時間 − 獲取頁面中所有資訊所需的時間。
失敗
連線失敗 − 客戶端拒絕的連線失敗次數。
輪次失敗 − 失敗的輪次數量。
命中失敗 − 系統嘗試失敗的次數。
結論
壓力測試的唯一目標是確定系統在極端條件或負載下的效能。它評估系統資源,例如記憶體、處理器、網路等。它還檢查系統從故障或崩潰中恢復的能力。它檢查系統在面臨壓力時是否顯示正確的錯誤訊息。