負載測試教程(定義、方法、示例)
負載測試
負載測試是一種非功能性軟體測試,它評估軟體應用程式在特定負載下的執行情況。它測試當大量使用者同時使用軟體應用程式時的執行情況。負載測試在部署之前進行,以檢測效能瓶頸並確保軟體程式穩定且執行流暢。
此分析通常確定:
應用程式的最大執行能力
檢查當前基礎設施是否能夠處理該應用程式。
應用程式在峰值使用者負載下的可行性存疑。
應用程式支援的最大併發使用者數及其可擴充套件性,允許更多使用者訪問它。
這是一種非功能性測試。負載測試廣泛應用於軟體工程中,用於客戶端/伺服器和基於Web的應用程式,無論是在Intranet還是Internet上。
負載測試的目的何在?
負載測試建立對系統可靠性和效能的信任。
負載測試在高使用者壓力情況下識別系統瓶頸,防止其在生產環境中出現。
負載測試提供良好的效能保護,並可與生產環境中的其他效能管理和監控策略結合使用。
為什麼需要負載測試?
需要進行負載測試是因為一些最受歡迎的網站在收到大量流量時都曾出現過嚴重的停機時間。在營銷吸引訪問者時,電子商務網站大量投資廣告活動,但沒有投資負載測試以確保最佳系統性能。
請考慮以下示例:
熱門玩具零售商Toysrus.com無法處理其廣告宣傳帶來的增加的流量,導致營銷成本損失以及潛在的產品銷售損失。
在節日促銷期間,一家航空公司的網站無法容納10,000多名客戶。作為促銷活動,大英百科全書免費開放了其線上資料庫的訪問許可權。數週以來,他們都無法應對湧入的流量。
當網站收到大量流量時,載入時間會變長。
事實:
頁面載入延遲超過8秒後,大多數人會點選離開。
每年因效能不足而損失44億美元。
負載測試的目標
在將應用程式釋出到市場或投入生產之前,負載測試會識別以下問題:
每個事務的響應時間
不同負載下系統元件的效能
不同負載下資料庫元件的效能
客戶端和伺服器之間的網路延遲。
軟體設計問題
Web伺服器、應用程式伺服器、資料庫伺服器和其他伺服器配置問題。
硬體限制問題,例如CPU最大化、記憶體限制、網路瓶頸等。
負載測試將表明系統是否需要微調,或者是否需要硬體和軟體修改以提高效能。
負載測試的先決條件
負載測試最重要的指標是響應時間。在開始負載測試之前,您必須首先確定:
當前是否正在測量和比較響應時間?——定量分析
響應時間是否與業務流程相關——
響應時間是否合理——現實的
是否可以滿足響應時間——是的,可以滿足。
是否可以使用工具或使用秒錶測量響應時間——必須可測量。
在開始負載測試之前,您必須首先建立以下環境:
| 硬體平臺 | 軟體配置 |
|---|---|
| |
| |
|
|
|
|
| |
|
負載測試策略
負載測試可以透過多種方法完成。下面列出了一些負載測試方法:
**手動負載測試**——這是一種負載測試方法,但是它不能提供可重複的結果,無法對應用程式施加測量的壓力級別,並且難以組織。
**內部開發的負載測試工具**——認識到負載測試價值的組織可以開發自己的負載測試工具。
**開源免費的負載測試工具**——有許多開源免費的負載測試工具。它們可能不如付費工具那樣複雜,但如果您預算有限,它們是最佳選擇。
**企業級負載測試軟體**——它們通常具有捕獲/回放功能。它們能夠支援各種協議。它們能夠模擬大量使用者。
負載測試:分步指南
負載測試過程可以概括如下:
建立專門的負載測試環境。
找出以下內容:
負載測試場景
確定應用程式的負載測試事務。
準備每個事務的資料。
必須估計將使用該系統的使用者數量。
找出您的連線速度。有些使用者可能有專線,而另一些使用者可能只有撥號接入。
確定使用者首選的瀏覽器和作業系統。
所有伺服器(例如Web伺服器、應用程式伺服器和資料庫伺服器)都已配置。
執行和監控測試場景。正在收集各種指標。
檢查結果。請提供建議。
在系統經過微調後重新測試。
負載測試指南
應用程式在功能上穩定後,應安排負載測試。
資料池中應有大量唯一資料。
應為每個場景或指令碼確定使用者數量。
為節省磁碟空間,避免建立冗長的日誌。I/O記憶體
儘量避免從網站下載圖片。
應記錄響應時間隨時間的變化情況,並將結果與其他測試執行進行比較。
最佳實踐指南
下面描述了一些負載測試的最佳實踐:
在開始負載測試之前,請確保程式穩定。在將構建移動到負載測試環境之前,功能測試團隊應簽署應用程式的功能穩定性,並且所有主要缺陷都應得到解決和測試。
檢查負載測試環境,包括伺服器數量、負載均衡器、伺服器配置和防火牆,是否與生產環境相同或接近。
在執行負載測試之前,請仔細檢查測試資料是否唯一,並且所有測試資料都已移動到負載環境。
建立與生產環境中即時使用者行為非常相似的測試場景。
生成基於製造的使用者負載和業務流程的工作負載;如果是舊應用程式,請檢查它是否是新應用程式,並與業務團隊討論業務流程和使用者負載。
收集所有相關資訊,例如響應時間、每秒點選率、吞吐量、CPU、記憶體、網路和正在執行的虛擬使用者。
負載測試和壓力測試:有什麼區別?
**負載測試**——負載測試在各種工作負載下發現系統瓶頸,並評估系統在負載逐漸增加時的響應情況。
**負載測試**——壓力測試:壓力測試確定系統的斷點或其將失敗的最大點。
功能測試和負載測試的區別
功能測試和負載測試的區別如下:
功能測試
因為我們定義了正確的步驟和前提條件,所以功能測試的結果很容易預測。
功能測試的結果略有不同。
功能測試將定期進行。
測試資料決定了功能測試的結果。
負載測試
負載測試結果是不可預測的。
負載測試的結果差異很大。
進行負載測試的頻率將很低。
使用者數量會影響負載測試。
用於測試的工具
**LoadNinja**——LoadNinja正在改變人們進行負載測試的方式。這個基於雲的負載測試工具使團隊能夠在真實瀏覽器中大規模記錄和回放全面的負載測試,無需複雜的動態關聯。團隊已經能夠將測試覆蓋率提高,並將負載測試時間縮短超過60%。
**Eggplant**——所有頂級分析師,包括Gartner和Forrester,都將Eggplant(現在是Keysight Technologies的一部分)認定為負載測試解決方案的領導者。不要使用昨天的技術來應對今天的測試戰爭。
LoadRunner − HP的LoadRunner工具用於在常規和峰值負載情況下測試應用程式。LoadRunner建立虛擬使用者來模擬網路活動以產生負載。它在模擬生產環境中的即時使用情況下生成圖形結果。
負載測試的優點和缺點
以下是負載測試的一些優點:
在生產之前識別效能瓶頸
透過提高系統的可擴充套件性來降低系統停機的風險。
故障成本更低。
客戶滿意度應該提高。
負載測試的缺點包括:
要使用負載測試工具,您需要了解如何程式設計。
由於價格基於支援的虛擬使用者數量,因此工具可能成本高昂。
總結
負載測試是一種軟體測試,它檢查系統在真實負載條件下的執行情況。
負載測試通常在應用程式投入生產之前改進應用程式的效能瓶頸、可擴充套件性和穩定性。
此測試有助於確定應用程式的最大工作能力以及系統瓶頸。
負載測試至關重要,因為未能進行負載測試可能會導致經濟損失。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP