效能測試的建議
適用于此 Azure Well-Architected Framework 效能效率檢查清單建議:
PE:06 | 測試效能。 在符合生產環境的環境中執行定期測試。 比較結果與效能目標與效能基準。 |
---|
本指南說明測試的建議。 效能測試可協助您評估各種案例中工作負載的功能。 它牽涉到測試工作負載的回應時間、輸送量、資源使用率和穩定性,以協助確保工作負載符合其效能需求。
測試有助於防止效能問題。 它也有助於確保您的工作負載符合其服務等級協定。 如果沒有效能測試,工作負載可能會遇到通常可避免的效能降低。 工作負載效能可能會從效能目標和已建立的基準漂移。
定義
詞彙 | 定義 |
---|---|
混亂測試 | 效能測試,旨在藉由刻意引進隨機且無法預測的失敗或中斷,來測試系統的復原能力和穩定性。 |
負載測試 | 效能測試,可測量一般和大量負載下的系統效能。 |
效能基準 | 一組計量,代表測試所驗證之正常條件下工作負載的行為。 |
壓力測試 | 在系統中斷之前多載的效能測試。 |
綜合測試 | 模擬應用程式中使用者要求的效能測試。 |
主要設計策略
效能測試可協助您收集工作負載上可測量的資料。 當您提早執行測試時,它們也會協助您將工作負載建置到正確的規格。 您應該儘快在軟體發展生命週期中執行效能測試。 早期測試可讓您在開發之前攔截並修正效能問題。 如果生產程式碼尚未就緒,您可以使用 POC (概念證明) 。
準備測試
準備效能測試是指設定及排列您需要有效執行效能測試的資源、組態和測試案例。
定義接受準則
接受準則會指定工作負載必須符合的效能需求,才能視為可接受的或成功。 定義符合效能目標的準則。
檢閱效能目標。 效能目標會定義工作負載所需的效能層級。 檢閱針對工作負載建立的效能目標。 效能目標是可能涉及回應時間、輸送量、資源使用率或任何其他相關效能指標的計量。 例如,您的回應時間可能低於特定臨界值,例如小於 2 秒。
定義接受準則。 將效能目標轉譯為可用來評估工作負載效能的特定接受準則。 例如,假設回應時間的效能目標為 2 秒或更少。 您的接受準則可能是 工作負載的平均回應時間應小於 2 秒。 使用這些接受準則來判斷工作負載是否符合所需的效能層級。
當您定義接受準則時,請務必專注于使用者及其期望。 接受準則有助於確保交付的工作符合使用者需求和需求。 請記住下列將使用者觀點納入接受準則的考慮:
使用者需求:瞭解工作負載的使用者需求和目標。 請考慮工作負載應如何執行以滿足這些需求。
使用者體驗:定義可擷取所需使用者體驗的接受準則。 包含回應時間、可用性、協助工具,以及整體滿意度等因素。
功能需求:解決使用者預期會在工作負載中看到的特定功能。 定義這些功能需求的接受準則,以協助確保符合這些需求。
使用案例:請考慮使用者可能會遇到的不同案例或使用案例。 根據這些使用案例定義接受準則,以在真實世界的情況下驗證工作負載的效能。
設定接受閾值。 判斷接受準則內的臨界值,指出工作負載是否符合效能目標。 這些臨界值會定義每個計量可接受的效能範圍。 例如,假設回應時間的接受準則小於 2 秒。 您可以設定 2.5 秒的臨界值。 此層級表示任何超過 2.5 秒的回應時間都會被視為效能問題。
定義傳遞準則。 建立準則,以判斷工作負載通過或效能測試失敗。 您可以將傳遞定義為符合所有接受準則,或達到特定百分比。
選取測試類型
若要選取正確的效能測試類型,請務必讓測試符合您的接受準則。 接受準則會定義需要符合的條件,才能將需求或錯誤修正視為完成。 效能測試的目標是要確認工作負載是否符合這些接受準則,並在指定條件下如預期般執行。 將效能測試類型與接受準則對齊有助於確保測試著重于符合準則所定義的效能期望。
瞭解接受準則。 檢閱需求或錯誤修正的接受準則。 準則概述要符合的特定條件和功能。
識別相關的效能計量。 根據接受準則,判斷達到所需結果的關鍵效能計量。 例如,如果接受準則著重于回應時間,則優先順序負載測試可能適當。
選取適當的測試類型。 評估可用的測試類型,並選擇最符合所識別效能計量和接受準則的測試類型。
下表提供測試類型及其使用案例的範例。
測試類型 | 描述 | 使用案例 |
---|---|---|
負載測試 | 模擬實際使用者負載,以測量工作負載在預期的尖峰工作負載下執行的方式。 | 決定負載容錯。 |
壓力測試 | 將您的工作負載推送到超出其一般限制,以識別其中斷點,並測量其復原能力。 | 決定復原能力和強固性。 |
(耐力測試) | 在持續的高負載下執行工作負載一段時間,以識別效能降低、記憶體流失或資源問題。 | 評估一段時間的穩定性和可靠性。 |
尖峰測試 | 模擬使用者負載突然增加,以評估工作負載如何處理需求突然變更。 | 測量在尖峰期間調整和維護效能的能力。 |
相容性測試 | 在各種平臺、瀏覽器或裝置上測試工作負載的效能。 | 協助確保跨各種環境保持一致的效能。 |
根據工作負載的特性和需求,設定所選測試類型的優先順序。 請考慮效能計量、使用者期望、商務優先順序,以及已知問題或弱點等因素。
選取測試控管
根據您想要執行的效能測試類型,選擇適當的工具。 評估測試環境的基礎結構、資源和條件約束。 選擇支援所需測試類型的測試控管,並提供監視、測量、分析和報告的必要功能。
應用程式效能監視 (APM) 工具提供應用程式的深入解析,而且是基本的測試控管。 它可協助您追蹤個別交易,並透過各種工作負載服務對應其路徑。 測試之後,您應該使用 APM 工具來分析和比較測試資料與效能基準。
流量分析工具來識別程式碼中的效能瓶頸。 分析有助於識別耗用最多資源且需要優化之程式碼的區域。 它提供程式碼不同部分執行時間和記憶體使用量的深入解析。
下列步驟可協助您選取適當的測試控管:
識別測試需求。 首先瞭解效能測試的特定需求。 請考慮各種因素:
- 工作負載的類型
- 要測量的效能計量,例如回應時間和輸送量
- 工作負載架構的複雜度
- 測試環境,例如雲端式、內部部署或混合式
研究測試控管。 進行研究以找出符合您需求的效能測試控管。 請考慮市集中可用的商業和開放原始碼工具。 尋找支援所需效能測試類型的工具,例如負載測試或壓力測試,並提供測量效能計量的功能。
評估工具功能。 評估每個測試控管所提供的功能。 尋找模擬實際使用者行為和延展性等功能,以處理大型使用者負載。 請考慮支援各種通訊協定和技術、與其他測試控管或架構整合,以及報告和分析功能。
請考慮相容性和整合。 判斷測試控管與現有基礎結構和技術的相容性。 請確定工具可以輕鬆地整合到您的測試環境中,並可與必要的工作負載通訊以進行監視和分析。
評估成本和授權。 評估與測試控管相關聯的成本結構和授權條款。 請考慮一些因素,例如初始投資、維護成本和支援成本。 也請考慮相依于使用者或虛擬使用者數目的其他授權需求。
進行 POC。 根據您的評估,選取一些看起來最適合的工具。 進行小型 POC,以驗證特定測試案例中工具的可用性、功能和有效性。
請考慮支援和訓練。 評估工具廠商或社群所提供的支援和訓練層級。 判斷檔、教學課程和技術支援通道的可用性,以協助解決在測試程式期間可能發生的任何挑戰或問題。
建立測試案例
建立測試案例是指設計適合測試工作負載效能的特定情況或條件的程式。 系統會建立測試案例,以模擬實際的使用者行為和工作負載模式。 這些案例提供一種方式,讓效能測試人員評估工作負載在各種情況下的執行方式。
測試案例可讓您複寫各種工作負載模式,例如並行使用者存取、尖峰負載期間或特定交易順序。 藉由在不同的工作負載模式下測試工作負載,您可以識別效能瓶頸並優化資源配置。
定義使用者行為。 藉由識別使用者在與工作負載互動時所執行的步驟和動作,來模擬實際的使用者行為和工作負載模式。 請考慮登入、執行搜尋、提交表單或存取特定功能等活動。 將每個案例細分為代表使用者與工作負載互動的特定步驟和動作。 您可以包含流覽頁面、執行交易,或與工作負載的各種元素互動。
判斷資料參與。 識別執行測試案例所需的測試資料。 您可能會包含建立或產生代表各種案例、使用者設定檔或資料磁片區的實際資料集。 請確定測試資料很多元,並涵蓋不同的使用案例,以提供完整的效能評估。
設計測試腳本。 建立測試腳本,以自動執行已定義的測試案例。 測試腳本通常包含一連串的動作、HTTP 要求,或與工作負載 API 或使用者介面的互動。 使用效能測試控管或程式設計語言來撰寫腳本,並考慮參數化、相互關聯和動態資料處理等因素。 驗證測試腳本的正確性和功能。 對任何問題進行偵錯,例如腳本錯誤、遺漏或不正確的動作,或與資料相關的問題。 測試腳本驗證對於協助確保正確且可靠的效能測試執行非常重要。
設定測試變數和參數。 在測試腳本中設定變數和參數,以導入變異性並模擬真實世界案例。 包含參數,例如使用者認證、輸入資料或隨機化,以模擬不同的使用者行為和工作負載回應。
反復精簡腳本。 根據意見反應、測試結果或變更需求,持續精簡和增強測試腳本。 請考慮優化腳本邏輯、參數化和錯誤處理,或新增額外的驗證和檢查點。
設定測試環境
設定測試環境是指設定基礎結構、軟體和網路設定的程式,而您需要建立與生產環境非常類似的環境。
若要以提升效能效率的方式設定測試環境,請在組態程式中納入下列步驟:
鏡像您的生產環境。 將您的測試環境設定為與生產環境非常類似。 請考慮基礎結構組態、網路設定和軟體組態等因素。 目標是確保效能測試結果代表真實世界的條件。
布建足夠的資源。 將適當的資源,例如 CPU、記憶體和磁碟空間配置給測試環境。 請確定可用的資源可以處理預期的工作負載,並提供精確的效能測量。
複寫網路條件。 在測試環境中設定網路設定,以在實際工作負載部署期間複寫預期的網路狀況。 您必須包含頻寬、延遲和網路通訊協定。
安裝和設定相依性。 安裝工作負載正確執行所需的軟體、程式庫、資料庫和其他相依性。 設定這些相依性以符合預期的生產環境。
取捨:有與維護個別測試環境、儲存資料、使用工具及執行測試相關聯的成本。 瞭解效能測試的成本,並尋找優化費用的方法。
風險:生產資料可以包含敏感性資訊。 如果沒有健全的清除和遮罩策略,當您使用生產資料進行測試時,可能會洩漏敏感性資料。
執行測試
使用所選的測試控管來執行效能測試。 測試牽涉到測量和記錄效能計量、監視健康情況,以及擷取任何發生的效能問題。
監視和收集效能計量,例如回應時間、輸送量、CPU 和記憶體使用率,以及其他相關的指標。
使用定義的測試案例,將工作負載置於預期的負載之下。 在這些不同的負載條件下進行測試。 例如,使用標準、尖峰和壓力等級等層級來分析各種案例中工作負載的行為。
分析結果
分析測試結果牽涉到檢查效能測試中收集的資料和計量,以深入瞭解工作負載的效能。 目標是找出效能問題,並使用意見反應來調整應用程式開發中的優先順序。 下列動作是分析測試結果的重要步驟。
檢閱效能計量。 查看您在效能測試期間收集的效能計量,例如回應時間、輸送量、錯誤率、CPU 和記憶體使用率,以及網路延遲。 分析這些計量以瞭解工作負載的整體效能。
找出瓶頸。 評估效能計量,以找出任何效能不佳的瓶頸或區域。 評估可能包含高回應時間、資源限制、資料庫問題、網路延遲和延展性限制。 找出這些瓶頸的根本原因,可協助您設定效能改善的優先順序。
將計量相互關聯。 評估各種效能計量之間的關聯性和相互關聯性。 例如,分析增加負載或資源使用率如何影響回應時間。 瞭解這些相互關聯可針對不同條件下的工作負載行為提供寶貴的見解。 在一段時間內尋找效能資料的模式和趨勢。 在不同的負載層級或特定期間分析效能。 偵測趨勢有助於識別季節性變化、尖峰使用時間或週期性效能問題。
評估接受準則。 比較重新測試結果與預先定義的接受準則和效能目標。 評估工作負載是否符合所需的效能標準。 如果工作負載不符合接受準則,請進一步調查並精簡優化。
逐一查看並精簡分析。 視需要進行其他調整和改善。 使用收集的資料和計量來診斷特定的效能問題。 診斷可能涉及透過工作負載元件進行追蹤、檢查記錄檔、監視資源使用量,或分析錯誤訊息。 深入探討資料,以瞭解效能問題的根本原因。
根據測試結果的分析,優先找出的效能問題,並實作必要的改善。 改善可能包括優化程式碼、微調資料庫查詢、改善快取機制,以及優化網路組態。
建立基準
基準提供參考點,以比較一段時間的效能結果。 基準應該是工作負載效能的有意義快照集,您不需要使用每個測試作為基準。
請考慮工作負載目標,以及記錄可讓您經過一段時間學習並優化效能快照集。 使用這些基準測量作為未來效能測試的基準,並使用這些基準來識別任何效能降低或改善。
若要建立效能測試的基準,並將其作為未來效能測試的基準,請遵循下列步驟:
識別效能計量。 判斷您想要測量和追蹤的特定效能計量。範例包括:
- 回應時間,或工作負載回應要求的速度。
- 輸送量,或每個單位處理的要求數目。
- 資源使用率,例如 CPU、記憶體和磁片使用量。
記錄有意義的度量。 將您在測試期間取得的效能計量記錄為基準度量。 這些度量代表您比較未來效能測試的起點。
比較未來的測試。 在後續的效能測試中,比較效能計量與已建立的基準和閾值。 此比較可讓您識別效能的任何改善或降低。
持續測試
持續測試牽涉到持續監視和精簡測試。 持續測試可協助您維持一致且可接受的效能層級。 工作負載應提供相對於基準的一致且可接受的效能層級。 您應該在一段時間內調整工作負載,以產生符合可接受效能限制的一致效能。 以下是一些重要做法:
設定降低限制。 定義數值臨界值,指定一段時間可接受的效能降低層級。 藉由設定這些限制,您可以監視效能波動,並在效能低於定義的閾值時接收警示。
包含品質保證。 將 CPU 使用率和每秒要求上限等效能需求納入品質保證程式中。 將具有相同重要性層級的效能需求視為功能需求。 此程式有助於確保工作負載符合定義的效能需求,再將工作負載部署到生產環境。
自動化警示。 在即時環境中,快速偵測和回應非常重要。 設定使用效能基準做為其參考的自動化警示系統。 如果效能有顯著的偏差,必要的小組會立即發出警示以採取行動。
測試變更。 某些效能問題可能只會顯示在即時設定中。 針對建議的程式碼和基礎結構變更套用完整的測試做法。 使用程式碼檢測來深入瞭解應用程式的效能特性,例如經常性路徑、記憶體配置和垃圾收集。 這項測試可確保引進的任何變更都不會降低可接受的限制以外的效能。
Azure 設施
執行測試: Azure Pipelines 可讓您將效能測試整合到 CI/CD 管線。 您可以將負載測試納入管線中的步驟,以驗證應用程式的效能和延展性。
Azure Chaos Studio 可讓您將真實世界錯誤插入應用程式,以便執行受控制的錯誤插入實驗。 實驗可協助您測量、瞭解及改善雲端應用程式和服務復原能力。
Azure 負載測試 是一項負載測試服務,可產生任何應用程式的大規模負載。 負載測試提供將負載測試自動化,並將其整合到持續整合和持續傳遞的功能, (CI/CD) 工作流程。 您可以定義測試準則,例如平均回應時間或錯誤閾值,並根據特定錯誤狀況自動停止負載測試。 負載測試提供儀表板,可在負載測試期間提供 Azure 應用程式元件的即時更新和詳細資源計量。 您可以分析測試結果、識別效能瓶頸,以及比較多個測試回合,以瞭解一段時間的效能回歸。
分析結果: Azure 監視器 是一個完整的監視解決方案,可用來收集、分析及回應來自雲端和內部部署環境的遙測。 Application Insights 是提供 APM 功能的監視器延伸模組。 您可以使用 Application Insights 在開發和測試期間以及生產環境中監視應用程式。
取捨:測試需要時間和技能才能執行,而且可能會影響作業效率。
相關連結
效能效率檢查清單
請參閱一組完整的建議。