性能測試初體驗
1、測試分類
從圖中可以看出,性能測試在整個軟件測試環節中占了50%的內容,比如負載測試、壓力測試、性能測試、大數據量測試、恢復測試、內容泄露測試、競品測試(比較測試)和可靠性測試。
2、性能測試流程
(1)業務學習:通過查看文檔,手動操作系統來來了解系統性能;
(2)需求分析:分析系統非功能需求,圈定性能測試的范圍,了解系統的性能指標;
(3)工作評估:工作量分解,評估工作量,計划資源投入;
(4)設計模型:圈定性能測試范圍后,把業務模型映射成測試模型;
(5)計划編寫:計划測試工作,在文檔中明確列出測試范圍、人力投入、持續時間、工作內容、風險評估、風險應對策略等;
(6)腳本開發:錄制或者編寫性能測試腳本;
(7)測試環境准備:性能測試環境准備包括服務器與負載機兩部分,服務器是被測系統的運行平台,負載機是我們用來生產負載的機器,用來安裝負載工具,運行測試腳本;
(8)測試數據准備:根據測試模型來准備被測系統的主數據與業務數據;
(9)測試執行
(10)缺陷管理:對性能測試過程中發現的缺陷進行管理;
(11)性能分析:對性能測試過程中暴露出來的問題進行分析,找出原因;
(12)性能調優:性能測試人員與開發人員一起來解決性能問題;
(13)測試報告:測試工作的重要交付文件,對測試結果進行報告,主要包括性能指標說明(tps、rt、cpu等);
性能測試主要交付件:
1 測試計划 2 測試腳本 3 測試程序 4 測試報告或者階段性測試報告
(14)評審:對性能報告中的內容進行評審,確認問題,評估上線風險。
3、性能測試成功與失敗要素
重點關注點:
1 評估系統,需求分析 2 場景設計、用例設計 3 測試執行、是否通過 4 性能診斷優化
(1)評估系統,需求分析
對性能測試進行需求分析,通常情況下測試人員會直接依賴需求人員或者項目經理的口述或者有缺陷的文檔。實際上,大多數情況下我們測試人員需要自己來引導相關的運維人員和需求人員給出具體的需求數據,並對這些數據進行二次分析,得出我們真實的性能需求。
對於初次上線的系統,我們需要使用同行的系統數據,進行用戶行為分析和商業數據結構的估算為前提,利用性能估算法推算。得到的負荷和響應時間數據可以被應用於驗證所計划的模型的能力,並幫助做出對策。
對於已經上線的系統,我們可以通過運維人員獲取TPS和時間的比例分布圖、用戶數和時間的分布圖、數據庫ER關系圖、容量數據等,直接精確得出目前系統的用戶行為和業務數據關系,進而得出我們需要的性能需求。
(2)場景設計、用例設計
(3)測試執行、是否通過--需要關注的指標
(4)性能診斷優化
4、不同角色看性能
技術部門一般有下面幾種角色:開發、測試、架構師、運維人員、(系統管理員、DBA)
(1)黑盒測試的角度
黑盒測試只關心應用程序的單步響應時間,性能好壞就看應用時間多少,也就是數據流經過服務器、服務器集群經過網絡傳輸后往返的時間總和。
(2)開發角度
1 架構合理性 2 數據庫設計合理性 3 代碼 4 系統內存的使用方式 5 系統線程使用方式 6 系統資源是否有惡性,不合理競爭
(3)系統管理員角度
1 硬件資源利用率 2 JVM 3 DB 4 系統是否支持7*24的服務 5 擴展性,兼容性,最大容量,可能的瓶頸
(4)性能測試的角度
1 服務器硬件的性能 2 根據需求和歷史數據制定性能目標 3 建立性能通過模型 4 對開發代碼框架和硬件框架進行性能分析 5 針對開發發布版本的基准測試 6 執行軟件性能驗收及穩定性測試 7 生產環境的配置及優化 8 制定性能測試的測試用例 9 制定性能測試的場景設計 10 協調各部門配合 11 特定的性能分析
5、性能測試相關術語
(1)負載:模擬一萬五操作對服務器造成壓力的過程,比如模擬100個用戶進行發帖。
(2)性能測試(Performance Testing):模擬用戶負載來測試系統在負載情況下,系統的響應時間,吞吐量等指標是否滿足性能需求。
(3)負載測試(load Testing):在一定軟硬件環境下,通過不斷加大負載(不同虛擬用戶數)來確定在滿足性能指標情況下能夠承受的最大用戶數。這些性能指標包括:TPS(每秒事務數)、RT(事務平均響應時間)、CPU using(CPU利用率)、MEM using(內存使用率)等軟硬件指標。
(4)配置測試(Configuration Testing):為了合理地調配資源,提高系統運行效率,通過測試手段來獲取、驗證、調整配置信息的過程。
(5)壓力測試\強度測試(Stress Testing):在一定軟硬件環境下,通過高負載的手段來使服務器資源處於極限狀態,測試系統在極限狀態下長時間運行是否穩定,確定是否穩定的指示包括TPS、RT、CPU using、MEM using等。
(6)穩定性測試(Endurance Testing):在一定軟硬件環境下,長時間運行一定負載,確定系統在滿足性能指標的前提下是否運行穩定。一般我們會在滿足性能要求的負載情況下加大1.5倍-2倍的負載量進行測試。
(7)TPS:每秒完成的事務數,通常指每秒成功的事務數,性能測試中重要的綜合性性能指標。一個事務是一個業務度量單位,有時一個事務會包括多個子操作,為了統計方便,會把着多個子操作記為一個事務。
(8)RT/ART(Response Time\average response time):響應時間/平均響應時間,指一個事務花費多長時間完成,一般取平均響應時間。
(9)PV(page view):每秒用戶訪問頁面的次數,此參數用來分析平均每秒有多少用戶訪問頁面。
(10)Vuser虛擬用戶(Virtual user):模擬真實業務邏輯步驟的虛擬用戶,虛擬用戶模擬的操作步驟都被記錄在虛擬用戶腳本里。Vuser腳本用語描述Vuser在場景中執行的操作。
(11)Concurrency並發,並發分為狹義和廣義兩類。狹義的並發,即所有用戶在同一時刻作品同一件事情或者操作;廣義的並發,即多個用戶進行完全一樣的操作。
(12)場景(Scenario):性能測試過程中為了模擬真實用戶的業務處理過程,在loadrunner中構建的基於事務、腳本、虛擬用戶、運行設置、運行計划、監控、分析等一系列動作的集合,稱之為性能測試場景。場景中包含了待執行腳本、腳本組、並發用戶數、負載生成器、測試目標、測試執行時的配置條件等。
(13)思考時間(Think Time):模擬真實用戶在實際操作時的停頓間隔時間。也就是說,用戶在進行操作時,每個請求之間的間隔時間。
(14)標准差(Std. Deviation):標准差越小,說明波動越小,系統越穩定。
6、性能測試通過標准