如何使用jmeter做一個功能的性能測試


一、為什么要寫這篇文章?

在博客園和公號連續寫文章,已經快兩年了。

自然在公號或博客園閱讀過我文章的同學,基本都能聯系到我的。

就在幾天前,有個同學加我微信,當然我並不驚訝,甚至習以為常(因為總有人加我微信),為什么呢?

這里講下原因吧,對於被添加好友一般可為以下幾類:

第一種:微商,你一看朋友圈,各種商品廣告連接,哇,好頭疼!

第二種:索取,“大佬,有學習視頻、資料嗎?”,官方回答,有,200,還需要嗎?

第三種:直接發來“進群”,我知道你誰呀,想干什么的,搞“團結”來了?

第四種:不說話,也不清楚要做什么,某一天發現自己意外被刪除了,是不是感覺特無辜,有木有!

但這個同學,我要着重說一下,挺有意思的。這是一個關注我公號很久的一個粉絲,總會看我的文章。我們聊了一會,他和我說了下他的情況,也是個自學黨,問我有老師講jmeter課程嗎?想系統學習一下。

畢竟我不是專業搞培訓,雖然工作多年,也不敢妄稱為人師,怕誤人子弟呀,也只能勉強算工作稍微久一些吧。

但作為一個自學黨,自知自學是一件多么堅難的事。

當然,還有一點就是自己的小玻璃心,受到了影響。因為有一陣自己特別不愛寫文章,周期大概有1-2個月,為什么呢?

文章閱讀量一直開始走低,而且好多人都不看,甚至連點開都不願意,更別談分享到朋友圈了。而且有人在群里艾特我問我問題,我說這都寫過文章呀,結果他說不到呀,你發給我下,我那個心里的難受呀,就別提了

后來我就琢磨是為什么,是排版不好看呢?還是內容寫的low?后來也總結了一些原因,只能一點點堅持努力改進,期待閱讀量上去。

但是,這個同學給我了一種強烈的認同感,頓時讓我覺得備受期待,原來我寫的文章,還有人看的,超感動的!所以當他說出困惑后,我想了想,我還是可以幫上一些人的,必須堅持寫下去,幫助一些渴望學習技術的同學,所以就專門寫了這篇文章。

那么就我限有的知識,來詮釋怎么做一個功能的性能測試。

 

二、性能測試的分類

做性能測試,有些名詞自然也是需要了解的,如果后面篇幅我提到有些名詞,感覺生疏,不好理解的。請自行百度一下,對於概念性的東西,個人感覺百度說的比我好多了。

那么性能測試分為哪些呢,簡單來說分為以下幾類:

1、壓力測試

目的:找出臨界點。

2、負載測試

目的:找出能承受的最大負載量。

3、穩定性測試

目的:驗證系統是否有內存泄露等問題。

4、容量測試

目的:找出數據庫能夠處理的最大會話能力、最大容量。 

5、配置測試

目的:為系統調優提供參考。

 

三、性能測試流程

在實施性能測試的過程中,整體工作流程,如下圖所示:

 

當然,以上流程僅供參考,具體大家還需視公司情況自行調整。

1、性能需求分析

這里以我們常用的禪道中的添加用例功能為例,進行分享。

1.1、調研期望指標(即性能需求)

 

這只是流程中的第一步,如果這一步做好了,接下來的測試方案設計、腳本開發、測試執行、測試報告都會輕松很多。

為什么? 你想如果想都不想,直接搞,后面做的一切不都是白扯嘛!自己心里都迷迷糊糊的,還怎么去說服別人呢?

1.2、關於收據需求指標

  • 參考前輩的歷史數據

  • 參考同行競品

友情提示:什么所謂的二八原則,沒有數據支持依據一切都是屁話,完全沒說服力,也就是能忽悠下,沒接觸過性能測試的同學吧。

這里在廢話幾句哈,做測試的要嚴謹,覺得可能?大約?應該就是這樣的吧?這些字眼能說服誰?下面划重點,拿出數據說話、數據說話數據說話重要的事說三遍!

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、測試數據收集測試腳本、數據及其預驗證 

添加測試用例場景設計如下:

2.8、基准測試

目的:驗證測試腳本,初步檢查交易本身是否存在性能缺陷。

測試方法:采用5個用戶負載執行,取交易的平均響應時間作為衡量指標,並計算吞吐量

2.9、負載測試

目的:獲得交易本身的性能表現,診斷交易是否存在性能缺陷。

2.10、穩定性測試

壓測系統7x24小時

2.11、測試輸出成果物

  • 《性能測試方案》

  • 《性能測試記錄及問題跟蹤表》

  • 《性能測試報告》

2.12、測試進度計划

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

2.13、實施風險及規避措施

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

3、腳本開發制作

腳本開發制作:請參考文章《JMeter壓力測試實例操作》

4、服務器監控

服務器性能監控:請參考文章《Jmeter監控服務器性能》

5、測試報告編寫 

這里我只介紹可能會涉及的一些點、大家根據自己情況做增減,性能測試報告一般包含如下幾項內容:測試目標、參考文檔、測試環境說明、硬件配置、軟件配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結果及其分析、測試結論及建議等等。

至於每項的詳細內容,這里就不逐項一一詳細說明了,請大家根據公司情況做設計編寫。

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

想要把性能測試做好,需要做好多方面的知識儲備,而且涉及到面非常廣,比如網絡,OS,系統架構,業務邏輯,協議報文,腳本開發,服務和系統的監控等等更多方面的知識。

值的一提的是,真正要把性能測試做得好,還得是大公司(真的肯花錢呀),畢竟人家真的是數據量大呀。我們一起回憶一下雙十一的淘寶和京東,這些才算的上真正意義的性能測試。

還有一點要說的是,性能測試真的是水太深了,個中細節,相信做過性能測試的同學自有體味,哈哈哈!!!

以上僅為自己實際工作中的一些經驗,本人能力有限,如有不足,還請留言補充。最后,謝謝您的耐心閱讀!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM