一、性能測試流程數據庫
(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):由於用戶在進行操做時,每一個操做是有時間間隔的,對應到腳本中,就是兩個請求腳本之間的時間間隔