1. 程式人生 > 實用技巧 >效能測試 專題內容

效能測試 專題內容

效能測試在軟體測試裡面是很重要的內容,今天分享一下效能測試的專題內容,也算是知識總結了。

主要涉及方面為:

一、效能測試概念

二、效能測試分類

三、效能測試指標

四、效能測試流程

五、效能測試的工具

一、效能測試概念

效能測試是指在一定軟體、硬體及網路環境下,對系統的各項效能指標來進行測試,主要檢測其效能特性是否滿足特定的效能需求。

效能測試在軟體質量中起著重要的作用,主要表現在以下幾個方面:
(1)評估系統的處理能力
從使用者的角度來看,主要關注的就是系統響應能力和處理業務的時間。
(2)評估系統存在的弱點
從開發的角度來看,主要關注的就是軟體的體系結構和資料庫設計是否合理,還關注的是程式碼是否存在效能問題以及記憶體的使用是否合理。

(3)評估系統的穩定性
從系統管理的角度來看,主要關注系統資源的佔用情況、長時間的執行系統是否穩定以及系統能支援多少使用者。

二、效能測試分類

能測試的方法很多,名詞也很多,通常將效能測試分為以下幾種型別:
(1)併發測試
併發測試(Concurrency Testing)是指通過模擬多使用者併發訪問同一個應用、模組、資料以及其他併發操作,來測試是否存在記憶體洩漏、執行緒鎖、資料庫死鎖、資料錯誤以及資源爭用等問題。
(2)負載測試
負載測試(Load Testing)是指在一定軟、硬體及網路環境下,模擬大量的使用者執行一種或多種業務,測試伺服器的效能指標是否在使用者可接受的範圍內,以此來確定系統所承受的最大負載數和不同使用者數下系統的效能指標以及伺服器的資源利用率。

(3)壓力測試
壓力測試(Stress Testing)是指在一定的軟、硬體及網路環境下,模擬大量的虛擬使用者向伺服器產生負載,使伺服器的資源處於極限狀態下並長時間連續執行,以此測試伺服器在高負載情況下是否能夠穩定工作。壓力測試強調的是在高負載情況下進行的測試,關注的是伺服器的穩定性,此時處理能力已經不重要了。
(4)容量測試
容量測試(Volume Testing)是指在一定的軟、硬體及網路環境下,在資料庫中構造不同的資料記錄,執行一種或多種業務來獲取不同資料下伺服器的效能指標,目標就是為了找出資料庫的最佳容量和最大容量。
(5)配置測試
配置測試(Configuration Testing)是指在不同的軟、硬體及網路環境下,執行一種或多種業務來獲取不同配置的效能指標,其目標是為了找到最佳的引數配置,可以幫助企業節省硬體上的成本。
(6)基準測試
基準測試(Benchmark Testing)是指在一定的軟、硬體環境下,獲取系統的關鍵指標,並把它作為基準供其他版本做對比或者參考,有時也可以為類似的產品做參考。

三、效能測試指標

的效能測試指標有併發數、響應時間、吞吐量、TPS、點選率、資源利用率等。


1.併發數
併發通常分兩種情況:一種是狹義的併發,就是多使用者在同一時間進行同一個操作,這種操作一般指做同一類業務,即單業務的併發數。另一種是廣義的併發,就是多使用者對系統發出請求或進行操作,其請求或操作可以是相同的,也可以是不同的,對整個系統而言,仍然是有多使用者同時對系統進行操作。在實際效能測試中,真正的併發是不存在的,因為CPU的處理每次只能處理一件事(雙核例外),因為處理的時間很快,通常被認為是併發處理。測試人員一般關心業務併發數到底是多少比較合理呢?下面給出估算併發使用者數的公式。
公式一:C = nL/T

公式二:N = (n * 80% * s *p) / (20% * t ) * R

公式一中:C代表併發使用者數;n是登入會話的數量;L是登入會話的平均長度;T是指考察的時間段長度。
公式二中:N表示併發使用者數;n表示系統的使用者數;s是每個使用者發生的業務數;p是每筆業務需要訪問伺服器的時間;t是使用業務的時間;R為調節因子,預設值為1。
還有一種可以根據二八定律來評估併發數,通常已線上使用者數的20%來作為併發數的參考值。如果應用系統使用的頻率比較低,可以取線上使用者數的5%來作為併發數的引數值。需要注意的是上述幾種計算方法只是一個參考。

2.響應時間
響應時間是指完成某個業務所需的時間。在效能測試中,通過事務函式(開始事務和結束事務)來完成對響應時間的統計。

Web應用的頁面響應時間,是指客戶端傳送請求到收到伺服器響應所需的時間。包含網路傳輸時間(N1+N2+N3+N4)、應用伺服器延遲時間(A1+A3)、資料庫伺服器延遲時間(A2)。

通常對於一個使用者來說,如果訪問某系統的響應時間小於2s,那麼使用者會覺得系統反應快,非常滿意;如果訪問某系統的響應時間在2~5s,那麼使用者會覺得系統還行,比較滿意;如果訪問某系統的響應時間在5~8s,那麼使用者就很難接受;如果訪問某系統的響應時間超過10s,使用者將無法接受。
所以對於一個系統來說,需要儘可能保證每一個操作的響應時間控制在5s之內。當然對於某一些特殊的操作可能會超過這個響應時間,可以通過提示來提前告訴使用者。

4.TPS
事務(Transaction)一般是指要做的或已做的事情。在效能測試中,事務是指對一個或多個使用者動作進行端到端的測量。簡單地講事務就像一個集合(由開始事務和結束事務組成),即標記某一動作或某一操作的過程。
TPS(Transaction Per Second,每秒事務數)即單位時間內完成事務的數量,它是衡量系統性能的一個非常重要的指標,與指令碼中的事務相關聯。根據軟體需求的不同TPS衡量的標準也不同,一般情況該值越高,說明系統處理能力越強。


5.點選率
點選率是指網站頁面上某一內容被點選的次數與被顯示次數之比,即clicks/views,它是一個百分比。在效能測試中,指虛擬每秒使用者向web伺服器提交的HTTP請求數,它是Web應用的特有指標。
通常根據點選率,來判斷系統是否穩定。系統點選率下降通常表明伺服器的響應速度在變慢,需進一步分析,發現系統瓶頸所在。在效能中點選率跟吞吐量成正比。


6.資源利用率
資源並不僅僅指執行系統的硬體,而是指支援整個系統執行程式的所有軟、硬體平臺,主要有資料庫伺服器、應用伺服器、Web伺服器以及中介軟體和網路等。
在效能測試中,需要監控系統在負載下軟、硬體的各種資源的佔用情況,比如伺服器CPU的佔用率、記憶體、磁碟以及網路的使用率,資料庫的連線數、快取命中率以及鎖的使用情況,還有應用伺服器的執行緒數的使用等。
根據經驗表明,一般CPU低於20%的利用率為資源空閒,在20%~60%之間表示資源使用穩定,在60%~80%之間表示資源使用飽和,如果超過80%就表示處理器達到瓶頸,必須儘快進行資源調整與優化。

四、效能測試流程


效能測試相對於功能測試來說複雜很多,但是其測試流程基本大同小異,大致分5個階段:制定效能測試計劃、設計效能測試、執行負載測試、分析優化效能、評估並生成報告。


1.制定效能測試計劃
效能測試計劃的第一步就是通過需求分析得到效能測試需求,也就是效能測試的目標。然後熟悉系統結構,選擇效能測試工具,如Loadrunner、Jmeter等。最後確定性能測試的實施時間。
2.設計效能測試
設計效能測試主要包括效能測試指令碼的開發優化、負載的生成規則、監控資源的方式以及環境的設計等。
3.執行負載測試
首先,需要完成環境的搭建和效能測試資料的準備;然後,根據設計的效能測試場景進行執行負載測試。
4.分析優化效能
根據執行的結果、監控系統資源以及相關的資料進行分析,這個分析需要同開發人員共同完成,找出系統存在的效能問題,確定性能瓶頸。接下來進行效能的優化,確定調優的效果是否達到預期的目標。
5.評估並生成報告
達到效能目標後撰寫效能測試報告,最後還需要對系統的效能進行風險評估。

五、效能測試的工具(LoadRunner)

LoadRunner是一種預測系統行為和效能的負載測試工具。通過以模擬上千萬使用者實施併發負載及實時效能監測的方式來確認和查詢系統存在的效能問題,LoadRunner能夠對整個企業架構進行測試。通過使用LoadRunner企業能最大限度地縮短測試時間,優化效能和加速應用系統的釋出週期。LoadRunner可適用於各種體系架構的自動負載測試,能預測系統行為並評估系統性能。

1. Loadrunner工具組成
Loadrunner工具主要由以下4個部分組成
(1)指令碼生成器Virtual User Generator
Virtual User Generator簡稱VuGen,它是基於協議來捕獲使用者業務或流程,可生成效能測試的指令碼,也可以說是使用者行為的模擬。
(2)負載控制器Controller
Controller對效能測試的過程進行設定,可以設定場景執行的方式、時間,同時還提供了系統資源、資料庫以及應用伺服器的監控功能。
(3)負載發生器Load Generator
Load Generator簡稱LG,在模擬大量虛擬使用者對伺服器進行負載和壓力測試時,需使用多臺負載發生器進行,確保負載均衡(每臺負載機均勻對伺服器進行施加壓力)。
(4)結果分析器Analysis
Analysis主要是對負載的效能測試資料進行收集,便於效能測試人員對測試的結果進行整理分析,從而判斷效能的問題。

2.Loadrunner工作原理
Loadrunner的工作原理就是模擬大量使用者的行為進行負載,以檢測程式是否存在效能問題以及伺服器可以承受的壓力。
(1)指令碼的生成
首先選擇相應的協議,通過VuGen對使用者行為進行模擬(錄製),生成測試指令碼並且進行指令碼的優化。
●通過Loadrunner“事務”記錄使用者的不同的行為。
●通過Loadrunner“檢查點”對事務進行判斷。
●通過Loadrunner“引數化”實現多使用者不同的資料。
●通過Loadrunner“關聯”實現使用者請求之間的依賴。
●通過Loadrunner“思考時間”實現使用者請求之間的延時。
●通過Loadrunner“集合點”實現多使用者的併發操作。
(2)場景的設定
其次通過Controller對效能測試的場景進行設定,同時需要監控各項效能指標,為結果分析做資料依據。
●通過Controller“全域性計劃”設計啟動使用者數、載入方式以及執行時間。
●通過Controller“集合點策略”對多使用者併發行為進行設定。
●通過Controller“系統資源圖”對伺服器資源進行監控。
●通過Load Generator新增負載機來產生大量的虛擬使用者。
●執行負載測試。
(3)結果的分析
最後執行場景後,通過Analysis對效能測試的資料進行整理,並分析效能的問題。
●通過Analysis“概述”可以看到效能指標的資料,便於分析效能的問題。
●通過Analysis“合併圖”可以進一步分析效能問題,便於定位效能瓶頸。
●通過Analysis“報告”可以生成效能測試的報告。

3.Loadrunner工具的特點
(1)模擬大量虛擬使用者
在VuGen指令碼中,可以對使用者資料進行引數化操作,這一操作可以模擬不同使用者的不同資料來測試應用程式,從而反映系統的負載能力。還可以通過Data Wizard從資料庫伺服器獲取大量的測試資料。
(2)模擬真實的負載
在VuGen指令碼建立後,使用者需要設定負載方案。在Controller中通過AutoLoad技術,為使用者提供了更多靈活的設計,可以模擬真實使用者的負載方案。
(3)可以精確的定位問題
測試完畢後,Loadrunner通過Analysis收集彙總所有的測試資料,並提供高階的分析和報告工具,以便快讀查詢效能問題並追溯原因。
(4)涉及的領域廣泛
Loadrunner支援廣泛的協議,可以測試各種軟體的效能,目前Loadrunner12版本還支援手機APP軟體的效能測試。

內容摘自《軟體測試技術指南》