1. 程式人生 > >如何使用jmeter做一個功能的效能測試

如何使用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、測試輸出成果物

  1. 《效能測試方案》
  2. 《效能測試記錄及問題跟蹤表》
  3. 《效能測試報告》

2.12、測試進度計劃

是度量你效能測試期間,在每個時間點該完成的事。這裡根據公司情況來吧,我不給出示例了。

2.13、實施風險及規避措施

是對影響專案測試的各種可能發生的風險進行估計,以及對風險的發生機率和嚴重程度進行估計,並按照估計結果對風險進行排序

3、指令碼開發製作

指令碼開發製作:請參考文章《JMeter壓力測試例項操作》

4、伺服器監控

伺服器效能監控:請參考文章《效能測試篇 :Jmeter監控伺服器效能》

5、測試報告編寫 

這裡我只介紹可能會涉及的一些點、大家根據自己情況做增減,效能測試報告一般包含以下幾項:

測試目標、參考文件、測試環境說明、硬體配置、軟體配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結果及其分析、測試結論及建議等等。至於每項的詳細內容,這裡就逐項說明,請大家根據公司情況做設計編寫。

 

四、關於效能測試的一些看法

想要把效能測試做好,需要做好多方面的知識儲備,而且涉及到面非常廣,需比如網路,OS,系統架構,業務邏輯,協議報文,指令碼開發,服務和系統的監控等等更多方面的知識。 真正的效能測試做得好,還得是大公司(肯花錢投入到效能測試中),畢竟人家真的是資料量大呀,回憶一下雙十一的淘寶和京東,才算的上真正意義的效能測試。 但這裡不得不說一句,效能測試真的是水太深了,箇中細節,相信做過效能測試的同學自有體味,哈哈哈!!! 本人能力有限,以上僅為自己實際工作中的一些經驗,如有不足,還請留言補充,最後謝謝你的閱讀!!