學習

性能測試、最佳實踐、指標等

什麼是性能測試?

性能測試是評估係統在特定工作負載下的響應性和穩定性的實踐。執行性能測試通常是為了檢查速度、健壯性、可靠性和應用程序大小。該過程包含“績效”指標,例如:

  • 瀏覽器、頁麵和網絡響應時間
  • 服務器請求處理時間
  • 可接受的並發用戶卷
  • 處理器內存消耗;應用程序可能遇到的錯誤的數量和類型

性能測試收集用於驗證應用程序的速度、健壯性、可靠性和正確大小的所有測試。它檢查了一些指標,如瀏覽器、頁麵和網絡響應時間、服務器查詢處理時間、可接受的並發用戶數量、CPU內存消耗以及在使用應用程序時可能遇到的錯誤數量/類型。

為什麼要測試係統的性能?

簡而言之,確保它將滿足生產中預期的服務水平,以及提供積極的用戶體驗。應用程序性能是采用、成功和生產力的關鍵決定因素。

由於解決生產性能問題的成本過高,因此持續的性能測試策略優化是有效數字策略成功的關鍵。

在開始性能測試過程之前,重要的是要考慮以下問題,以便製定前瞻性的計劃:

  • 為什麼係統性能測試很重要?
  • 什麼時候進行性能測試比較合適?
  • 性能測試有哪些不同類型?
  • 性能測試測量什麼?
  • 性能測試的流程是什麼?
  • 有效的性能測試的特征是什麼?
  • 什麼是性能測試成功度量?
  • 為什麼要自動化性能測試?
  • 如何自動化性能測試?
  • 為什麼使用特定的性能測試工具是有用的-例如,那些適用於
  • DevOps結構?

為什麼係統性能測試很重要?

您運行的性能測試將有助於確保您的軟件滿足預期的服務級別,並提供積極的用戶體驗。它們將強調在應用程序投入生產之前,您應該在速度、穩定性和可伸縮性方麵對應用程序進行的改進。在沒有測試的情況下發布給公眾的應用程序可能會遇到不同類型的問題,導致品牌聲譽受損,在某些情況下,這是不可挽回的。

應用程序的采用、成功和生產力直接依賴於性能測試的正確實現。

雖然解決生產性能問題可能非常昂貴,但使用持續優化性能測試策略是有效的整體數字策略成功的關鍵。

什麼時候進行性能測試比較合適?

無論是web應用程序還是移動應用程序,應用程序的生命周期包括兩個階段:開發和部署。在每種情況下,操作團隊在測試期間將應用程序公開給產品體係結構的最終用戶。

開發性能測試主要關注組件(web服務、微服務、api)。應用程序的組件測試得越早,就能越早發現異常,通常,修複的成本也就越低。

隨著應用程序開始成形,性能測試應該變得越來越廣泛。在某些情況下,它們可能在部署期間執行(例如,當在開發實驗室中複製生產環境很困難或成本很高時)。

性能測試有哪些不同類型?

有許多不同類型的性能測試。最重要的測試包括載荷、單元、應力、浸泡和刺突測試。

負載測試

負載測試模擬可能使用應用程序的虛擬用戶數量。在基於響應時間重現真實的使用和負載條件時,該測試可以幫助識別潛在的瓶頸。它還使您能夠了解是否有必要調整應用程序體係結構的大小。

單元測試

單元測試模擬功能測試活動的事務活動;目標是隔離可能破壞係統的事務。

壓力測試

壓力測試評估麵臨峰值活動的係統行為。這些測試顯著且持續地增加了測試期間的用戶數量。

浸泡測試

浸泡測試增加了並發用戶的數量,並在更長的時間內監視係統的行為。目標是觀察隨著時間的推移,密集和持續的活動是否顯示出性能水平的潛在下降,從而對係統資源產生過多的需求。

峰值測試

峰值測試旨在了解當活動水平高於平均水平時對係統運行的影響。與壓力測試不同的是,峰值測試考慮了用戶的數量和執行的操作的複雜性(因此產生了幾個業務流程的增加)。

過載時間

過多的加載時間是啟動應用程序所需的分配時間。任何延遲都應該盡可能短——最多幾秒鍾,以提供最好的用戶體驗。

糟糕的響應時間

糟糕的響應時間是指用戶在應用程序中輸入信息和對該操作的響應之間所經過的時間。長響應時間會極大地降低用戶對應用程序的興趣。

有限的可伸縮性

有限的可伸縮性代表了應用程序適應不同數量用戶的適應性問題。例如,應用程序在隻有少數並發用戶時性能很好,但隨著用戶數量的增加而變差。

瓶頸

瓶頸是係統中降低應用程序整體性能的障礙。它們通常是由硬件問題或糟糕的代碼引起的。

性能測試的流程是什麼?

雖然測試方法可能會有所不同,但仍然有一個通用的框架可以用於解決性能測試的特定目的——確保在各種情況下一切都能正常工作,並識別弱點。

1 -識別測試環境

在開始測試過程之前,有必要了解將要使用的硬件、軟件和網絡配置的細節。對該環境的全麵了解使得識別測試人員可能遇到的問題變得更容易。

確定性能驗收標準

在執行測試之前,您必須清楚地定義應用程序的成功標準——因為每個項目的成功標準並不總是相同的。當您無法確定成功標準時,建議您找到一個類似的應用程序作為基準。

定義計劃和性能測試場景

為了進行可靠的測試,有必要確定不同類型的用戶可能如何使用您的應用程序。確定關鍵場景和數據點對於盡可能接近真實情況進行測試至關重要:

  1. 設置測試環境
  2. 實施測試設計
  3. 運行和監視測試
  4. 分析、調整和重做測試

運行測試後,必須分析和鞏固結果。一旦進行了必要的更改以解決問題,就應該重複測試以確保消除任何其他問題。

有效的性能測試的特征是什麼?

提供足夠分析深度的現實測試是“良好”性能測試的重要組成部分。這不僅僅是模擬大量的事務,而是預測真實的用戶場景,從而洞察您的產品將如何實時執行。

性能測試生成大量的數據。最好的性能測試是那些允許快速和準確分析以確定所有性能問題及其原因的測試。

隨著的出現敏捷開發方法和DevOps過程實踐、性能測試必須保持可靠,同時尊重這些周期的加速步伐:開發、測試和生產。為了跟上步伐,公司正在尋求自動化,有很多選擇NeoLoad——速度最快,自動化程度最高性能測試工具用於測試數據的設計、過濾和分析。

性能測試成功度量

在開始測試之前,必須清楚地定義在測試中應該尋找的關鍵指標。這些參數一般包括:

  • 處理器運行非空閑線程所花費的時間
  • 使用計算機的物理內存進行處理
  • 網絡接口每秒使用的比特數(帶寬)
  • 磁盤忙於讀/寫請求的時間
  • 不能與其他進程共享的進程使用的字節數(用於測量內存泄漏)
  • 虛擬內存使用量
  • 為解決硬件頁缺陷而寫入或讀取到磁盤的頁數
  • 處理器對錯誤頁麵的總體處理速率
  • 處理器每秒接收/處理的硬件中斷的平均數量
  • 在所選磁盤在采樣間隔內排隊的平均讀/寫請求數
  • 輸出包隊列的長度
  • 接口每秒發送/接收的字節數
  • 響應時間
  • 計算機/網絡每秒接收請求的速率
  • 池連接滿足的用戶請求數
  • 可以同時激活的最大會話數
  • 由緩存數據處理的SQL語句數量,而不是昂貴的I/O操作
  • 每秒對Web服務器上文件的訪問請求數
  • 可以在任何時間恢複的數據量
  • 表和數據庫的鎖定質量
  • 最長等待時間
  • 當前正在運行/活動的線程數
  • 係統中未使用內存的返回率(垃圾收集器)

為什麼要自動化性能測試?為了更敏捷!

數字化轉型正在推動企業加快設計新服務、應用程序和功能的步伐,以期獲得/保持競爭優勢。敏捷開發方法可以提供一種解決方案。

盡管敏捷和DevOps環境采用了持續集成,但性能測試通常是一個手動過程。每個性能測試人員的目標是防止在敏捷開發過程中形成瓶頸。為了避免這種情況,在可能的情況下將盡可能多的自動化集成到性能測試過程中會有所幫助。為此,有必要在持續集成上下文中自動運行測試,並盡可能自動化設計和維護任務。

在組件測試期間,性能測試的完全自動化是可能的。但是,仍然需要性能工程師的人工幹預來對組裝的應用程序執行複雜的測試。性能測試的未來在於應用程序生命周期所有階段的自動化測試。

設計

在設計性能測試時,NeoLoad自動執行關聯和隨機化任務,使您能夠以比其他工具快十倍的速度創建測試。它還允許您導入現有的功能性Selenium測試腳本以用於性能測試。

實現

對於持續集成,NeoLoad通過API工具集成了所有領先的CI服務器,如Jenkins、Bamboo和TeamCity。在這一點上,與連續部署鏈中的各種工具進行自定義集成是可能的。

性能測試

性能工程師麵臨的主要挑戰之一是在應用程序發生變化時更新測試用例。在測試組裝的應用程序時尤其如此。中創建的場景,NeoLoad提供了近乎全自動的更新功能負載測試工具.對於從Selenium導入的情況,自動化是完整的。

性能測試分析

自動化最具挑戰性的階段,特別是對於完整的測試,是在組裝的應用程序上,因為性能問題可能是由幾個因素引起的。找出原因往往需要人工幹預。NeoLoad提供了廣泛的性能測試功能,幫助您通過隔離關鍵數據快速/準確地識別性能問題的根本原因。

現在,在敏捷環境中自動化大部分分析是可能的。NeoLoad允許您定義預期的服務級別(sla),用於為測試分配通過/失敗狀態。這種分配可以完全自動化,從而允許使用CI服務器實現整個性能測試周期的完全自動化。例如,一個敏捷團隊可以安排自動化的性能測試,不需要回歸,可以在一夜之間運行。預期的服務級別性能測試結果與以前版本的測試結果之間的比較將自動完成——如果測試成功,則允許繼續自動集成流程。

協作性能工程,以適應DevOps思維模式

以滿足…的需要敏捷性以及IT部門實施的更快的發布周期DevOps結構。這種工作方式特別適合於性能工程,因為它支持從應用程序開發周期的早期階段一直到生產的性能驗證。

作為DevOps組織的支持者,使性能成為整個團隊(而不僅僅是幾個專家)的責任,NeoLoad提供了一個名為NeoLoad網絡.開發、質量保證和運維團隊可以在devtestop中轉換DevOps。

想了解更多嗎?閱讀我們關於如何選擇負載測試工具

Baidu
map