如何使用jmeter做一個功能的效能測試
一、為什麼又再次寫類似的文章?
在部落格園和公號寫文章,已經快兩年了,所以自然在公號和部落格園都能聯絡到我的。
也就是幾天前,有個人加我微信,對於總有人加我好友,我已經覺得不奇怪了,為什麼呢?
加我好友的一般為幾類:
- 微商,你一看朋友圈,各種商品廣告,哇,好頭疼
- “大佬,有學習視訊資料嗎?”,有,200,需要嗎?
- “進群”,我知道你誰呀,幹啥的,上來就進群呀。
但這個同學,挺有意思的,是一個關注我公號很久的一個粉絲,總會看我的文章。和我說了下他的情況,也是個自學黨,問我有老師講jmeter課程嗎?想系統學一下。
畢竟我不是搞培訓,雖然工作多年,不敢稱為人師,怕誤人子弟呀,只能所作工作稍微久一些吧,作為一個自學黨,我自知自學是個多麼困難的事,所以想了想就寫了這篇文章。
那麼就我限有的知識,來詮釋怎麼做一個功能的效能測試。
二、效能測試的分類
做效能測試,有些名詞自然也是需要了解懂得的,後面如果我提到有些名詞,不是很熟悉,請自行度娘,對於概念性的東西,我覺得百度說的比我好多了。
簡單來說分為以下幾類:
1、壓力測試
目的:找出臨界點。2、負載測試
目的:找出能承受的最大負載量。
3、穩定性測試
目的:驗證系統是否有記憶體洩露等問題。
4、容量測試
目的:找出資料庫能夠處理的最大會話能力、最大容量。5、配置測試
目的:為系統調優提供參考
三、效能測試流程
在實施效能測試的過程中,整體工作流程是- 分析效能測試需求
- 設計效能測試方案
- 開發效能測試指令碼
- 搭建效能測試環境-
- 執行測試-
- 分析結果後多輪測試進行驗證優化
- 編寫效能測試報告
- 編寫效能測試總結報告
1、效能需求分析
這裡以我們常用的禪道中新增用例功能為例,進行分享。
調研期望指標(即效能需求)
場景名稱 | 響應時間 | cpu使用率 | 記憶體使用率 | 磁碟使用率 | 事務成功率 |
登入禪道 | 小於5秒 | 小於85% | 小於90% | 小於90% | 100% |
新增用例 |
- 參考前輩的歷史資料
- 參考同行競品
2、效能測試方案設計
2.1、測試目的、目標與範圍
目的:找出系統潛在的效能缺陷
目標:從安全,可靠,穩定的角度出發,找出效能缺陷,並且找出系統最佳承受併發使用者數,以及併發使用者數下長時間執行的負載情況,如要併發100使用者,如何對系統進行調優
測試功能範圍:本次測試計劃主要收集分析禪道新增用例併發請求相關資料,做出分析和調優
2.2、測試指標範圍
測試範圍:禪道中新增用例併發時,伺服器各項效能指標的效能測試
Jmeter指標:(由於Apache旗下效能測試工具Jmeter收集的效能指標偏少,下面的資料選取代表性指標)
1.Average/ms:伺服器處理事物平均響應時間(表示客戶端請求到伺服器處理資訊且反饋客戶端的時間)
2.Throughput/s:伺服器每秒處理請求數(表示伺服器每秒處理客戶端請求數(單位:個/秒))
3.KB/s:伺服器每秒接受到的資料流量(表示伺服器每秒接受到客戶端請求的資料量KB表示)
硬體指標:
1.%Processor time : CUP使用率(平均低於75%,低於50%更佳)
2.System:Processor Queue Length :CUP佇列中的執行緒數(每個處理器平均低於2)
3.Memory:Pages/sec :記憶體錯誤頁數(平均低於20,低於15更佳)
4.Physical Disk-%Disk Time: 磁碟使用率(平均低於50%)
5.SQL Server:Buffer Manager-Buffer Cache Hit Ratio: (在緩衝區告訴快取中找到而不需要從磁碟中讀取的頁的百分比,正常情況次比率超過90%,理想狀態接近99%)
不需要關注的指標:- 業務流程/路徑覆蓋率。
- 業務資料的完整、正確性。
- 其他諸如系統易用性、可管理性等屬於專項測試的內容。
2.3、測試資源
條件有限,我就一個測試環境,虛擬機器套出來的,所有服務都部署在一塊了,正常是分開部署的。
2.4、測試準備
測試環境安裝:我這裡部署的是一個禪道系統,如何搭建百度之
2.5、測試工具和測試策略
測試工具:Apache-Jmeter2.3.2
測試策略:根據公司內部實際情況,以及業務分佈設定資料庫訪問量即併發使用者數
2.6、測試資料收集測試指令碼、資料及其預驗證
新增測試用例場景設計如下:
場景 | 新增測試用例 | ||||
目的 | 測試多人同時新增測試用例的效能情況 | ||||
虛擬使用者和資源 | |||||
併發使用者 | CPU使用率 | 記憶體使用率 | 硬碟使用率 | 網路使用 率 | 事務平均響應時間 |
5人 | |||||
10人 | |||||
20人 |
2.8、基準測試
目的:驗證測試指令碼,初步檢查交易本身是否存在效能缺陷。
測試方法:
採用 5個使用者負載執行,取交易的平均響應時間作為衡量指標,並計算吞吐量
2.9、負載測試
目的:獲得交易本身的效能表現,診斷交易是否存在效能缺陷。
2.10、穩定性測試
壓測系統 7x24 小時
2.11、測試輸出成果物
- 《效能測試方案》
- 《效能測試記錄及問題跟蹤表》
- 《效能測試報告》
2.12、測試進度計劃
是度量你效能測試期間,在每個時間點該完成的事。這裡根據公司情況來吧,我不給出示例了。2.13、實施風險及規避措施
是對影響專案測試的各種可能發生的風險進行估計,以及對風險的發生機率和嚴重程度進行估計,並按照估計結果對風險進行排序
3、指令碼開發製作
指令碼開發製作:請參考文章《JMeter壓力測試例項操作》
4、伺服器監控
伺服器效能監控:請參考文章《效能測試篇 :Jmeter監控伺服器效能》
5、測試報告編寫
這裡我只介紹可能會涉及的一些點、大家根據自己情況做增減,效能測試報告一般包含以下幾項:
測試目標、參考文件、測試環境說明、硬體配置、軟體配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結果及其分析、測試結論及建議等等。至於每項的詳細內容,這裡就逐項說明,請大家根據公司情況做設計編寫。