壓力測試

需要進行壓力檢測

編寫與其他程序/元件互動的有狀態系統時,可能會導入在系統處於載入狀態之前,可能不會出現的錯誤。這些錯誤來自假設錯誤、單獨的錯誤或細微的時間問題。這些錯誤是系統各層之間複雜且有狀態的互動所產生的結果,因此很難在推進時發現。

壓力測試會同時為系統產生大型工作負載,藉此找出這些互動中的錯誤。如果工作負載產生未預期的錯誤,開發人員可以根源發生問題、修正問題,並撰寫涵蓋該特定互動的測試。

我們的基礎架構也提供專門的建構工具 core.x64-stress,可用於執行壓力測試。此建構工具會執行每項壓力測試,最長可達 22 小時。

用戶端程式庫

Rust 壓力測試程式庫

我們提供 Rust 用戶端程式庫,可以編寫壓力測試。您可以在這裡瞭解如何使用該程式庫編寫測試。

概念

開發人員可以編寫壓力測試來建立環境,並產生會在該環境中無限期執行隨機工作負載的執行者。

執行者

執行者的責任是在環境中執行作業。行為者應執行對環境造成壓力的作業。您可以選擇以下其中一種方法:

  • 與系統測試 (工作負載產生) 合作互動。

  • 蓄意破壞系統背景測試 (失敗模擬)。

演員跑酷

演員執行者是演員的細包裝函式,負責無限期執行該演員。環境是環境為每位演員建立,且會在個別執行緒上執行。執行器會重複指示其執行者執行單一作業並傳回結果。

環境

環境的責任是:

  • 儲存測試所需的全域狀態。

  • 提供測試的結束條件。

  • 請提供在整個測試期間執行的演員。

  • 在執行者要求時重設全域狀態。

壓力測試只會建立一個在整個測試期間有效的環境。測試寫入者必須定義環境,並將其提供給壓力測試架構。

環境可以儲存的全域物件,而且這些物件超過系統情況下測試的每個執行個體。舉例來說,如果檔案系統測試是在 VMO 支援的區塊裝置上運作,請將該 VMO 儲存在環境中,這樣即使演員讓區塊裝置停止運作,VMO 仍會維持不變,且可用於重設狀態。

環境為架構提供多個執行器,每個執行器都包含可執行作業的執行者。

重設時,環境必須更新全域狀態和每位執行者的連線。