性能測試流程、概念

  一、性能測試流程數據庫

(1)業務學習:經過查看需求文檔、PRD等相關文檔+手工操做來了解系統功能; 服務器

(2)分析需求:分析系統的非功能需求,圈定性能測試的範圍,瞭解系統性能指標; 架構

(3)工做評估:工做量分解,評估工做量,計劃資源投入(須要多少硬件資源,多少人力、時長來完成測試工做)。 併發

(4)設計模型:能夠理解爲測試場景,是單一測試場景仍是混合測試場景; 運維

(5)編寫計劃:測試計劃應明確列出測試範圍、人力投入、持續時間、工做內容、風險評估、風險應對策略等; 工具

(6)準備測試環境:準備服務器(部署被測系統),負載機(安裝壓測工具,產生負載的機器) 性能

(7)準備測試數據:根據測試場景(設計模型)準備數據,緣由有兩個:a、有些數據是支撐系統運行的基礎(好比咱們要對登陸進行壓測,首先須要準備一些註冊好的帳號);b、不一樣量級數據影響性能結果(好比從不一樣量級的數據庫查詢結果,時間確定不同),至於準備什麼量級的數據則須要跟項目實際狀況來設計; 學習

(8)開發腳本:根據測試場景,測試用例開發測試腳本(錄製或手動編寫); 測試

(9)測試執行:運行測試; 優化

(10)缺陷管理:跟蹤測試過程當中發現的缺陷; 

(11)性能分析:對性能測試結果進行分析,是否知足預期目標,若是不知足則需找出緣由; 

(12)性能調優:根據上一步的分析,嘗試優化系統; 

(13)測試報告:對測試工做進行總結,報告測試結果,發現的問題等 

(14)評審:對性能報告中的內容進行評審,確認問題、評估上線風險。雖然有時候性能測試結果不理想,但基於時間和成本等方面的考慮也會上線,後續再快速迭代。

性能測試交付件:

  • 測試計劃

  • 測試腳本

  • 測試程序

  • 測試報告

二、性能測試成功要素

性能測試上手較難,是一門融合測試、開發、運維、需求調研、架構、協調管理等綜合技能的學科,掌握一個測試工具只是最基礎的一步。性能測試有幾大難點:

  • 需求分析

  • 場景設計

  • 性能診斷調優

  • 環境搭建和模擬

三、性能測試經常使用術語

(1)負載:模擬用戶操做對服務器形成壓力的過程,好比模擬100個用戶同時登陸; 

(2)性能測試(Performance Test):在指定的負載狀況下,系統性能指標(響應時間、吞吐量等)是否知足要求; 

(3)負載測試(Loading Test):在必定的硬件環境前提下,經過不斷的增長負載(不一樣的虛擬用戶數)來肯定知足性能指標狀況下所可以承受的最大併發用戶數。簡單來講,就是幫咱們對系統進行定容定量,找出系統性能拐點,給予生成環境規劃建議。這裏說的性能指標包括:TPS(每秒事務數)、RT(事務平均響應時間)、CPU Using(CPU利用率)、Memory Using(內存利用率)等; 

(4)壓力/強度測試:在必定的軟硬件環境下,經過高負載的手段來使服務器資源(強調服務器資源,硬件資源)處於極限狀態,測試系統在極限狀態下長時間運行十分穩定,肯定是否穩定的指標包括TPS、RT、CPU利用率、內存利用率等; 

(5)穩定性測試:在必定軟硬件環境下,長時間運行必定的負載,肯定系統在知足性能指標的前提下是否運行穩定。與上面的壓力/強度測試區別在於負載並不強調在極限狀態下,通常使用目標負載的1.5~2倍的負載數量進行測試; 

(6)TPS:每秒完成事務數。事務是指一個操做集合,不一樣場景中事務所包含的操做不一樣,這個概念咱們後續結合實例介紹; 

(7)RT:響應時間。指一個事務花費多長時間完成,爲了使這個值更具表明性,會統計平均值,也就是ART,不過通常說RT就是指平均響應時間。 

(8)PV(Page View):每秒用戶訪問頁面的次數,此參數能夠幫助咱們分析平均每秒有多少個用戶訪問頁面 

(9)Vuser(Virtual User):虛擬用戶,用來模仿真實用戶進行操做; 

(10)Concurrency(併發):

 

狹義併發:虛擬用戶在同一時刻作同一件事情或操做,這種操做通常針對同一類型的業務,或者全部用戶進行徹底同樣的操做,目的是測試數據庫和程序對併發操做的處理。

廣義併發:虛擬用戶對系統進行操做,但操做能夠不一樣;

狹義併發多適用於單一測試場景,廣義併發多適用於混合測試場景、穩定性測試場景;

(11)場景(Scenario):模擬真實用戶某個操做的過程,這個過程就能夠稱爲一個場景,咱們舉個論壇系統的例子;

 

單一場景:用戶登陸,單單這個login的動做就是一個場景;

混合場景:用戶發帖場景,可能包含如下幾個動做,先登陸,打開發帖頁,輸入文字,選擇板塊,發帖,這幾個動做組成了一個發帖的混合場景;

(12)思考時間(Think Time):由於用戶在進行操做時,每一個操做是有時間間隔的,對應到腳本中,就是兩個請求腳本之間的時間間隔

相關文章
相關標籤/搜索