在這篇文章中,我將探討《軟體測試實務Ⅱ》的第一章——Web Service系統容量量測的實務方法論。這一章節深入分析了如何有效地進行Web Service系統的容量量測,並提供了實用的方法和策略,幫助讀者更好地理解和應用這些技術。
系統上線後為了符合客戶需求,通常會進行壓力測試、負載測試,其他也可能是效能測試、可靠度測試,這些統稱非功能效能議題。
*非功能效能議題:這些並非系統功能,而是為了滿足客戶需求所做的事情。
在做系統測試前,先了解四個關鍵因子,了解這些因子後,我們可以進行更詳細的討論。
系統容量量測關鍵因子
在進行測試時,需要輸入什麼、在什麼樣的環境下進行測試、測試的目標是什麼,以及預期會產生什麼樣的結果。這些行為需要在一個連貫的過程中進行。
在取樣過程中,會收集到的資訊包括 CPU、記憶體、I/O、Logging和Raw Data。分析結果通常會用百分位統計(如 P95、P90)來表示數據分布。
這四個因子在不同需求下會有不同的變動,因此在規劃時需要在可控的關係下找到它們之間的線性關係。這個關係隱含著在特定時間範圍內,系統是穩定且可預測的。
執行策略:
目的導向來看壓力測試常見的三種策略:
一、業務目標導向:(最常見)
依據目標找到系統需要多少資源與成本。
主要以業務需求為優先,經過測試找到整體系統需要多少資源,過程同時改善系統架構,也就是減少資訊需求。
二、用固定資源找到理想值(容量基準單位):
在固定資源下不斷輸入,找到在系統穩定的狀況下,系統可以處理多少交易。
三、固定資源的條件下,為應用程式設定目標效能值、目標值:(最難、最高規格)
目標就是把應用程式最佳化。
Web Service 效能的執行策略
效能種類:
常見的兩種導向:
效能:
定義:時間單位能處裡的目標吞吐量。
通常系統資源都是固定、有限的,透過調整Target Program,滿足設定的Output值。(效能最重要的動機就是滿足Output)
*吞吐量(Throughput):Input/Output的比經常稱作吞吐量,吞吐量的反應速度則是延遲(Latency),當Input/Output比為1,Latency為則是理論上的理想值。
壓力、負載:
定義:當輸入超過容量或效能上線值,系統能否正常運作,或者具備治癒能力。
系統超出乘載的目標,通常會出現兩種反應:
壓力測試目的為找出極端流量進入系統時,要怎麼設計系統架構,讓系統可以保持正常運作使用者體驗不會變差。
可靠度:
定義:系統發生非預期事件時「湊巧」可以繼續正常運作。
以內外事件角度舉例:
外在事件:系統爆量使用,能可正常運作,這部分可以透過壓力測試模擬。
內在事件:硬碟故障、磁碟沒反應,系統會自動切換備援機制讓系統繼續運作。
可靠度是工程問題,包含找出系統中可能造成崩潰的因子、互動的過程中資料是可靠的。
容量:
定義:不改變系統資源與程式,找到系統Input/Output比例的理想值。
也就是找到容量基準單位。知道系統可以同時多少人上線、同時可以處裡多少交易數。
四種效能的目的導向
理想的次序與種類:
作者有建議前面所講的三種策略(業務導向、基準值、效能值),在什麼背景下可以做出怎麼樣的選擇。
理想次序:
有時間+資源充裕:
有業務目標+時間充裕:
有業務目標+時間不充裕:(實務上最常見)
讀者心得:
這篇文章是分享基礎概念篇,旨在幫助讀者從理論上更好地理解效能的定義,並確定在不同情境下適合使用的策略方式。這樣一來,當我們進行效能測試時,就不會在定義資源、輸入輸出和待測目標上遇到困難。有了一定的基礎了解後,執行效能測試將會更加順利。