1、性能測試流程
(1)業務學習:通過查看需求文檔、PRD等相關文檔+手工操作來了解系統功能;
(2)分析需求:分析系統的非功能需求,圈定性能測試的范圍,了解系統性能指標;
(3)工作評估:工作量分解,評估工作量,計划資源投入(需要多少硬件資源,多少人力、時長來完成測試工作)。
(4)設計模型:可以理解為測試場景,是單一測試場景還是混合測試場景;
(5)編寫計划:測試計划應明確列出測試范圍、人力投入、持續時間、工作內容、風險評估、風險應對策略等;
(6)准備測試環境:准備服務器(部署被測系統),負載機(安裝壓測工具,產生負載的機器)
(7)准備測試數據:根據測試場景(設計模型)准備數據,原因有兩個:a、有些數據是支撐系統運行的基礎(比如我們要對登錄進行壓測,首先需要准備一些注冊好的賬號);b、不同量級數據影響性能結果(比如從不同量級的數據庫查詢結果,時間肯定不一樣),至於准備什么量級的數據則需要跟項目實際情況來設計;
(8)開發腳本:根據測試場景,測試用例開發測試腳本(錄制或手動編寫);
(9)測試執行:運行測試;
(10)缺陷管理:跟蹤測試過程中發現的缺陷;
(11)性能分析:對性能測試結果進行分析,是否滿足預期目標,如果不滿足則需找出原因;
(12)性能調優:根據上一步的分析,嘗試優化系統;
(13)測試報告:對測試工作進行總結,報告測試結果,發現的問題等
(14)評審:對性能報告中的內容進行評審,確認問題、評估上線風險。雖然有時候性能測試結果不理想,但基於時間和成本等方面的考慮也會上線,后續再快速迭代。
性能測試交付件:
-
測試計划
-
測試腳本
-
測試程序
-
測試報告
2、性能測試成功要素
性能測試上手較難,是一門融合測試、開發、運維、需求調研、架構、協調管理等綜合技能的學科,掌握一個測試工具只是最基礎的一步。性能測試有幾大難點:
-
需求分析
-
場景設計
-
性能診斷調優
-
環境搭建和模擬
3、性能測試常用術語
(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):因為用戶在進行操作時,每個操作是有時間間隔的,對應到腳本中,就是兩個請求腳本之間的時間間隔