性能測驗的型別
性能測驗:確定軟體產品性能的測驗,
負載測驗(load testing)
負載測驗的重點是系統處理由并發用戶或行程的可控數量產生的事務請求所導致的不斷增加的預期實際負載的能力,
負載測驗用于評估組件或系統在不同負載下的行為,通常在預期的低使用率、典型使用率和峰值使用率之間進行,
負載測驗幾乎總是基于一些真實的組織條件,負載測驗是所有性能測驗的組成部分,因為它是其他性能測驗型別的基礎,負載測驗的基礎(運行和最終負載曲線)通常被稱為volumetrics,并根據以下問題確定:
-
Who
誰是用戶?是否有不同的用戶組訪問該負載測驗的組件或系統?這些用戶可能是執行不同任務或擁有不同訪問權限的不同用戶組, -
What
用戶正在執行哪些業務流程?
以在線零售網站為例,業務流程代表了用戶想要執行的一些端到端的操作(例如,購買一本關于性能測驗的書),這個端到端的流程可以被分解成一系列可重用的任務(登錄、搜索書籍、添加到購物籃、購買和注銷),這些任務可以代表系統中的服務或組件,每個可重復使用的任務都可以分解成用戶將要執行的一系列步驟(打開瀏覽器,瀏覽零售商網站,輸入用戶名和密碼,點擊登錄按鈕),
這些業務流程中的每一個都代表了負載的定義,或負載的一部分,將在環境中執行代碼來創建實際的負載,性能測驗的部分技巧在于觀察 "是什么",并了解該業務流程如何在被測系統中運行,例如性能測驗計劃需要創建80個獨立的報告來測驗ERP系統的商業智能報告,但是,當從后端服務器、資料庫和服務進行測驗時,發現80個腳本可以減少到7個,每個報告都可以通過輸入資料進行管理(從而節省了性能工程師大量的作業),
- Where
用戶在哪里?用戶是集中訪問系統(如企業辦公室)還是分散訪問系統(如用戶在家作業)?使用地理定位將負載重定向到不同的服務器、服務、組件或業務流程,
- When
負載測驗在一天中的什么時間進行?
參考資料
- 軟體測驗精品書籍檔案下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測驗開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
壓力測驗(Stress Testing)
壓力測驗的重點是系統或組件處理峰值負載的能力,這些負載達到或超過了其預期或指定作業負載的極限,壓力測驗也用于評估系統處理資源可用性降低的能力,如可訪問的計算能力、可用帶寬和記憶體,
壓力測驗是一種有用的型別,因為它有助于識別:被測系統的最大容量,組件或系統的哪個部分首先失效
壓力測驗需要注意的一點是,它可以無限期地進行下去,一旦確定并報告了最大容量,就存在替代方案:
壓力測驗可以從負載定義的角度(用戶執行與時間行為相關的業務流程),簡單地告知利益相關者最大容量,可能不需要采取進一步的措施--我們知道當負載達到X時,系統將變得不穩定,
壓力測驗通知開發人員和/或管理員,如果負載達到最大容量(資源利用率),哪個組件將失效,因此,如果負載達到X,出現故障的部件就是Y,
然后,可以采取進一步措施修復最初出現故障的組件,從而可能提高最大容量,如果時間和資金允許,測驗可以繼續到新的故障點,因為總有另一個組件會在負載下發生故障,
可擴展性測驗(
scalability testing)
可擴展性測驗的重點是系統滿足未來效率要求的能力,這些效率要求可能超出目前的要求,這些測驗的目的是確定系統的增長能力(例如,更多的用戶、更大的資料存盤量),而不違反當前指定的性能要求或失敗,一旦知道了可擴展性的極限,就可以設定閾值,并在生產中進行監控,以便對可能出現的問題發出警告,此外,還可通過適當數量的硬體調整生產環境,
可擴展性:組件或系統可根據容量變化進行調整的程度,
可擴展性測驗
確定軟體產品可擴展性的測驗,
-可擴展性測驗
一個常見的問題是:"系統是可擴展的嗎?
請記住,答案總是肯定的!我們總是可以增加系統、服務或組件的負載,并提高處理負載的能力,
之前我們問過:"負載對系統/服務/代碼在時間行為、資源利用率和容量方面的可擴展性有多大影響?
通過可擴展性測驗,我們現在回答了一個不同的問題,與其問 "系統/服務是否具有可擴展性?",不如問 "系統/服務的可擴展性如何?
"系統/服務的可擴展性如何?
可擴展性測驗一般有兩種型別--水平和垂直
橫向可擴展性是在系統中增加更多相同規格的機器/設備/虛擬機,而縱向可擴展性則是將現有的機器/設備/虛擬機替換成更大、功能更強的機器,或為虛擬機/設備分配更多的CPU和/或記憶體,這兩種方法各有利弊,
在這兩種情況下,通常首先收集時間行為、資源利用率和單臺服務器的容量,然后可以決定是測量橫向可擴展性(添加額外的服務器/虛擬機/虛擬機)還是縱向可擴展性(增加單臺服務器的資源),以提高系統/服務處理更高容量負載的整體能力,
需要始終明確的是,可擴展性總是有上限的,系統或服務可能具有可擴展性,但將必要的硬體/軟體許可/基礎設施擴展到所需水平的成本可能過于昂貴,系統或服務可能變得不穩定,或者增加容量對整體性能沒有任何好處,
尖峰測驗(Spike Testing)
尖峰測驗主要是測驗系統對突如其來的峰值負載做出正確回應并在其后恢復到穩定狀態的能力,
尖峰測驗: 測驗確定系統從突發的峰值負載中恢復到穩定狀態的能力,
尖峰負載測驗已成為一種流行的測驗方法,用于考察負載在短時間內超過規定峰值時系統的性能,這些峰值可能是
單個事件
耐久性測驗(Endurance Testing)
耐久性測驗的重點是系統在特定時間段內的穩定性,此類測驗驗證是否存在資源容量問題(如記憶體泄漏、資料庫連接、執行緒池),這些問題最終可能會降低性能和/或導致斷點故障,
耐久性測驗:在系統運行環境下,確定系統在相當長的一段時間內承受重大負載的穩定性的測驗,
耐久性測驗也稱為浸泡測驗,負載測驗和耐久性測驗的區別主要在于測驗執行的時間長短,兩者在設計上具有相似的負載曲線,不同之處在于,負載測驗可能只執行一小時;而耐久性測驗通常會執行數小時、數天,甚至在極端情況下執行數周,耐久性測驗的挑戰在于獲得足夠的測驗資料來長時間執行測驗,并有足夠的存盤空間來捕獲測驗結果,耐久性測驗變得更加重要,因為許多組織每周7天、每天24小時在線,這意味著幾乎沒有時間停機或 "重啟服務器",
并發測驗(Concurrency Testing)
并發測驗的重點是特定操作同時發生時(如大量用戶同時登錄)的影響,眾所周知,并發問題很難發現和重現,特別是當問題發生在測驗幾乎無法控制的環境中,如生產環境,
并發性: 組件或系統同時執行多個獨立的執行緒,
并發的概念是性能測驗的基石,即使單個用戶或事務產生負載,該負載也可能不足以真正鍛煉被測系統,通過并發性,性能工程師可以定義有多少業務流程、任務甚至步驟同時發生,
一般可考慮三種并發型別,例如,如果被測系統是一個在線零售網站,許多用戶可能同時在網站上執行一系列功能,在組件層面,測驗登錄組件時可能需要同時進行多次登錄嘗試,細分如下
- 應用程式并發性
可能有許多用戶使用網站執行不同的業務流程(搜索、購買、檢查訂單狀態、創建用戶帳戶等),
- 業務流程并發
較少數量的用戶可能同時執行一個業務流程(搜索網站),
- 事務并發
用戶子集同時執行一個業務流程(搜索),所有用戶同時點擊搜索按鈕,-
也可能出現意外情況,這些情況更多屬于故障轉移和災難恢復的范疇,但仍需要進行性能測驗,并發測驗可能會在高峰負載時同時運行批處理,或在繁忙時開始計劃備份,
容量測驗(Capacity Testing)
容量測驗確定給定系統將支持多少用戶和/或事務,并仍然滿足既定的性能目標,這些目標也可能與事務產生的資料量有關,
容量:組件或系統引數的最大限制滿足要求的程度,
容量測驗類似于其他已經確定的測驗型別(壓力和尖峰測驗),容量測驗和壓力測驗的區別在于,壓力測驗延伸到預定的故障點(例如,吞吐量或資源利用率的限制,或超過處理時間),容量測驗仍可能超出峰值負載,但其目的是實作性能測驗目標(例如,系統將支持多少用戶),而不是確定故障原因,容量測驗的重點是達到規定的性能水平,而不是試圖導致故障(壓力)或 "看看會發生什么"(峰值),通常情況下,容量測驗的負載/性能增長與組織需求有關,例如,組織可能有一個全球增長率,定義為每年4%的新客戶增長,容量測驗可以幫助回答系統支持這種逐年增長的能力問題,
釘釘或微信號: pythontesting 微信公眾號:pythontesting轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/557141.html
標籤:其他
下一篇:返回列表