耐久性測試(定義、型別、示例)
耐久性測試
耐久性測試是一種非功能性測試,其中應用程式或軟體產品在長時間內承受重負載進行測試,以評估其在持續使用下的響應和行為。執行耐久性測試的主要原因是確保正在測試的應用程式或軟體能夠處理擴充套件負載,而不會降低其響應時間。
它在效能執行週期的最後階段執行。這是一個漫長的過程,甚至可能持續一年。它可能包括應用外部負載,如網際網路流量、使用者操作等。這使得耐久性測試區別於負載測試。
耐久性指的是容量。因此,耐久性測試有時也稱為容量測試。
耐久性測試的目標
主要目標是發現記憶體洩漏。
瞭解系統在持續使用下的行為或響應。
確保系統在長時間使用後,其響應時間保持與測試開始時相同或更好。
確定被測系統在滿足所有效能目標的同時能夠承受的使用者/事務數量。
我們還需要管理未來的負載。為此,我們需要了解為了支援未來的使用,我們需要哪些和多少額外的資源。耐久性測試幫助我們實現這一目標。此類資源包括處理器容量、磁碟容量、記憶體使用情況、網路頻寬等。
通常透過過載系統或減少某些系統資源,然後評估結果來執行。
進行耐久性測試是為了確保在指定的正常使用期間不會出現記憶體洩漏和其他錯誤。
在耐久性測試中我們測試什麼?
我們在耐久性測試中測試以下內容:
**測試記憶體洩漏** - 檢查以驗證應用程式或軟體中是否存在任何可能導致系統或作業系統崩潰的記憶體洩漏。
**測試系統層之間連線的關閉** - 如果系統不同層之間的連線未關閉,則系統可能會崩潰。
**測試資料庫連線的關閉** - 同樣,如果測試資料庫連線未關閉,則系統可能會崩潰。
**測試響應時間** - 在長時間使用後,系統的響應時間可能會延遲。因此,測試應用程式或軟體的響應時間變得至關重要。
耐久性測試流程
**測試環境** - 確定執行耐久性測試所需的硬體、軟體作業系統。為團隊成員分配角色和責任。確保在測試執行之前環境已準備就緒。此外,確定常見資料庫生產規模和年度增長。這很重要,因為我們必須測試應用程式或軟體在一年或兩年後將如何響應。
**建立測試計劃和測試場景** - 根據測試的性質,計劃您是否需要手動測試、自動化測試或兩者的組合。此外,設計測試用例、審查和測試執行。確保在測試計劃中包含測試以對系統進行壓力測試、斷點測試等。
**測試估算** - 估算完成測試階段需要多長時間。在考慮所涉及的測試人員數量和所需的測試周期數量的情況下進行分析。
**風險分析** - 分析測試過程中涉及的風險,並採取適當的措施來防止它們。根據風險因素確定測試用例的優先順序,並識別以下提到的風險以及測試團隊在耐久性測試期間可能面臨的問題:
軟體的效能是否會隨著時間的推移保持一致?
是否存在尚未發現的其他問題,即使是次要問題?
是否存在尚未解決的外部干擾?
**測試計劃** - 決定預算,按時交付成果。在耐久性測試中,將大量的自然負載事務應用於系統持續一段時間。
**測試執行** - 在此階段,我們最終開始耐久性測試。
**測試周期結束** - 在此階段,我們根據測試計劃階段指定的退出標準結束測試周期。
耐久性測試示例
壓力測試將軟體或應用程式測試到其極限,但耐久性測試會隨著時間的推移將軟體或應用程式測試到其極限。
例如,大多數複雜的問題,如記憶體洩漏、資料庫伺服器使用、系統無響應等,都發生在軟體執行較長時間時。忽略或跳過耐久性測試不是明智的決定,因為在部署之前發現此類缺陷的機會非常低。
假設在封鎖期間,例如由於 COVID 導致的封鎖,銀行長時間不營業。在此期間,網上銀行業務活動將比其他工作日增加。因此,銀行系統必須準備好處理和管理意外的大規模負載。
耐久性測試工具
**WebLOAD** - 此耐久性測試工具由 RadView 開發。此工具專為 Web 應用程式而設計,也用於負載測試和效能測試。它與從 Web 協議到企業應用程式的多種技術相容。WebLOAD 提供與 Jenkins、Selenium 和其他 DevOps(開發與運營)工具的內建整合。
此工具既可以用作本地產品,也可以用作完全託管的 SaaS 負載測試解決方案。它透過可自定義的 Web 儀表板與各種 Web 協議、移動協議和企業協議相容。WebLOAD 提供了 Web 應用程式效能的清晰檢視,指出了可能阻礙我們實現負載響應要求的問題。
**LoadComplete** - 這是一款易於使用且價格合理的工具,也用於效能測試。它幫助我們為網站和 Web 應用程式建立和執行真實的負載測試。它透過記錄使用者互動並使用數百個虛擬使用者模擬它們來幫助建立自動化的負載測試。
此工具有助於檢查 Web 伺服器在大量負載下的效能。它還有助於確定健壯性和可擴充套件性。它為我們提供了詳細的報告,這些報告提供了對基礎設施、應用程式行為和終端使用者體驗的深入見解。
**Apache JMeter** - 此開源測試工具是 Java 平臺應用程式。它主要用作效能測試工具,可以與測試計劃整合。它可以載入到伺服器或網路中以檢查其效能,並分析其在不同條件下的功能。
最初,它用於測試 Web 應用程式,但現在其範圍已擴大。JMeter 在測試資源(如 Servlet、Perl 指令碼和 JAVA 物件)的功能效能方面非常有用。JMeter 需要 JVM 1.4 及更高版本才能執行,並在 Unix 和 Windows 作業系統上執行。
**LoadRunner** - Micro Focus 的此產品用於效能測試。它在瞭解和確定軟體或應用程式的效能方面非常有用。
LoadRunner 可以同時建立和管理數千個使用者。它還有助於收集有關基礎設施效能的相關資訊。它包含不同的工具,例如虛擬使用者生成器、控制器、負載生成器和分析器。
**Appvance** - 此工具是第一個統一的測試自動化平臺。它消除了傳統 QA 工具建立的冗餘,這些工具會阻礙 DevOps 團隊。它提供與 Jenkins、Hudson、Rally、Bamboo、Jira 等的整合。它也與 Selenium、JMeter、Junit、Jython 等相容。
**LoadUI** - 此開源工具允許我們透過拖動不同的元件來執行復雜的負載測試並檢查效能。使用 LoadUI,我們甚至可以在執行測試用例時建立和更新它們。此工具支援 Windows、Linux 和 Mac OS。它還有助於我們測試 API 的速度和可擴充套件性。
其一些功能包括:
- 基於雲的負載測試
- 並行負載測試
- 伺服器監控
- 重用功能測試
- 分散式負載生成器
- 隔離負載測試
- 端點負載測試
OpenSTA − 此基於GUI的工具用於對Web伺服器進行基準測試。它可以執行HTTP和HTTPS高負載測試,並進行效能測量。它是一個開源工具,可在Windows作業系統上執行。
耐久性測試的優點
它有助於確定系統可以處理多少負載。
它提供準確的資料,可用於驗證和改進基礎設施需求。
它可以發現系統長時間執行後可能出現的效能問題。
它確保在短時間內出現巨大負載時軟體仍然可用。
它還用於檢查長時間使用後是否存在任何效能下降。
耐久性測試的缺點
難以確定值得施加多少負載。
它可能導致網路或軟體故障,如果測試環境未保持隔離,則可能造成嚴重中斷。
過度壓榨系統可能會導致永久性資料丟失或資料損壞。
即使在移除負載後,資源使用率仍然很高。
某些應用程式元素可能無法響應。
如果未處理異常,終端使用者可能會觀察到。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP