手把手教你如何使用jmeter做性能測試
一、為什么要寫這篇文章?
在博客園和公號連續(xù)寫文章,已經(jīng)快兩年了。
自然在公號或博客園閱讀過我文章的同學,基本都能聯(lián)系到我的。
就在幾天前,有個同學加我微信,當然我并不驚訝,甚至習以為常(因為總有人加我微信),為什么呢?
這里講下原因吧,對于被添加好友一般可為以下幾類:
第一種:微商,你一看朋友圈,各種商品廣告連接,哇,好頭疼!
第二種:索取,“大佬,有學習視頻、資料嗎?”,官方回答,有,200,還需要嗎?
第三種:直接發(fā)來“進群”,我知道你誰呀,想干什么的,搞“團結(jié)”來了?
第四種:不說話,也不清楚要做什么,某一天發(fā)現(xiàn)自己意外被刪除了,是不是感覺特無辜,有木有!
但這個同學,我要著重說一下,挺有意思的。這是一個關注我公號很久的一個粉絲,總會看我的文章。我們聊了一會,他和我說了下他的情況,也是個自學黨,問我有老師講jmeter課程嗎?想系統(tǒng)學習一下。
畢竟我不是專業(yè)搞培訓,雖然工作多年,也不敢妄稱為人師,怕誤人子弟呀,也只能勉強算工作稍微久一些吧。
但作為一個自學黨,自知自學是一件多么堅難的事。
當然,還有一點就是自己的小玻璃心,受到了影響。因為有一陣自己特別不愛寫文章,周期大概有1-2個月,為什么呢?
文章閱讀量一直開始走低,而且好多人都不看,甚至連點開都不愿意,更別談分享到朋友圈了。而且有人在群里艾特我問我問題,我說這都寫過文章呀,結(jié)果他說不到呀,你發(fā)給我下,我那個心里的難受呀,就別提了。
后來我就琢磨是為什么,是排版不好看呢?還是內(nèi)容寫的low?后來也總結(jié)了一些原因,只能一點點堅持努力改進,期待閱讀量上去。
但是,這個同學給我了一種強烈的認同感,頓時讓我覺得備受期待,原來我寫的文章,還有人看的,超感動的!所以當他說出困惑后,我想了想,我還是可以幫上一些人的,必須堅持寫下去,幫助一些渴望學習技術的同學,所以就專門寫了這篇文章。
那么就我限有的知識,來詮釋怎么做一個功能的性能測試。
二、性能測試的分類
做性能測試,有些名詞自然也是需要了解的,如果后面篇幅我提到有些名詞,感覺生疏,不好理解的。請自行百度一下,對于概念性的東西,個人感覺百度說的比我好多了。
那么性能測試分為哪些呢,簡單來說分為以下幾類:
1、壓力測試
目的:找出臨界點。
2、負載測試
目的:找出能承受的最大負載量。
3、穩(wěn)定性測試
目的:驗證系統(tǒng)是否有內(nèi)存泄露等問題。
4、容量測試
目的:找出數(shù)據(jù)庫能夠處理的最大會話能力、最大容量。
5、配置測試
目的:為系統(tǒng)調(diào)優(yōu)提供參考。
三、性能測試流程
在實施性能測試的過程中,整體工作流程,如下圖所示:
當然,以上流程僅供參考,具體大家還需視公司情況自行調(diào)整。
1、性能需求分析
這里以我們常用的禪道中的添加用例功能為例,進行分享。
1.1、調(diào)研期望指標(即性能需求)
這只是流程中的第一步,如果這一步做好了,接下來的測試方案設計、腳本開發(fā)、測試執(zhí)行、測試報告都會輕松很多。
為什么? 你想如果想都不想,直接搞,后面做的一切不都是白扯嘛!自己心里都迷迷糊糊的,還怎么去說服別人呢?
1.2、關于收據(jù)需求指標
參考前輩的歷史數(shù)據(jù)
參考同行競品
友情提示:什么所謂的二八原則,沒有數(shù)據(jù)支持依據(jù)一切都是屁話,完全沒說服力,也就是能忽悠下,沒接觸過性能測試的同學吧。
這里在廢話幾句哈,做測試的要嚴謹,覺得可能?大約?應該就是這樣的吧?這些字眼能說服誰?下面劃重點,拿出數(shù)據(jù)說話、數(shù)據(jù)說話、數(shù)據(jù)說話、重要的事說三遍!
2、性能測試方案設計
2.1、測試目的、目標與范圍
目的:找出系統(tǒng)潛在的性能缺陷
目標:從安全,可靠,穩(wěn)定的角度出發(fā),找出性能缺陷,并且找出系統(tǒng)最佳承受并發(fā)用戶數(shù),以及并發(fā)用戶數(shù)下長時間運行的負載情況,如要并發(fā)100用戶,如何對系統(tǒng)進行調(diào)優(yōu)
測試功能范圍:本次測試計劃主要收集分析禪道添加用例并發(fā)請求相關數(shù)據(jù),做出分析和調(diào)優(yōu)
2.2、測試指標范圍
測試范圍:禪道中添加用例并發(fā)時,服務器各項性能指標的性能測試
Jmeter指標:由于Apache旗下性能測試工具Jmeter收集的性能指標偏少,下面的數(shù)據(jù)選取代表性指標
1、Average/ms:服務器處理事物平均響應時間(表示客戶端請求到服務器處理信息且反饋客戶端的時間)
2、Throughput/s:服務器每秒處理請求數(shù)(表示服務器每秒處理客戶端請求數(shù)(單位:個/秒))
3、KB/s:服務器每秒接受到的數(shù)據(jù)流量(表示服務器每秒接受到客戶端請求的數(shù)據(jù)量KB表示)
硬件指標:
1、%Processor time:CUP使用率(平均低于75%,低于50%更佳)
2、System:Processor Queue Length:CUP隊列中的線程數(shù)(每個處理器平均低于2)
3、Memory:Pages/sec:內(nèi)存錯誤頁數(shù)(平均低于20,低于15更佳)
4、Physical Disk-%Disk Time:磁盤使用率(平均低于50%)
5、SQL Server:Buffer Manager-Buffer Cache Hit Ratio:(在緩沖區(qū)告訴緩存中找到而不需要從磁盤中讀取的頁的百分比,正常情況次比率超過90%,理想狀態(tài)接近99%)
不需要關心的指標:
業(yè)務流程/路徑覆蓋率
業(yè)務數(shù)據(jù)的完整、正確性
其他諸如系統(tǒng)易用性、可管理性等屬于專項測試的內(nèi)容
2.3、測試資源
條件有限,我就一個測試環(huán)境,虛擬機套出來的環(huán)境,所有服務都部署在一塊了,正常系統(tǒng)是分開部署的,這里參考這個表格的屬性就好了。
2.4、測試準備
測試環(huán)境安裝:我這里部署的是一個禪道系統(tǒng),如何搭建百度一下
2.5、測試工具和測試策略
測試工具:Apache-Jmeter2.3.2
測試策略:根據(jù)公司內(nèi)部實際情況,以及業(yè)務分布設置訪問量即并發(fā)用戶數(shù)
2.6、測試數(shù)據(jù)收集測試腳本、數(shù)據(jù)及其預驗證
添加測試用例場景設計如下:
2.8、基準測試
目的:驗證測試腳本,初步檢查交易本身是否存在性能缺陷。
測試方法:采用5個用戶負載執(zhí)行,取交易的平均響應時間作為衡量指標,并計算吞吐量
2.9、負載測試
目的:獲得交易本身的性能表現(xiàn),診斷交易是否存在性能缺陷。
2.10、穩(wěn)定性測試
壓測系統(tǒng)7x24小時
2.11、測試輸出成果物
《性能測試方案》
《性能測試記錄及問題跟蹤表》
《性能測試報告》
2.12、測試進度計劃
度量你性能測試期間,在每個時間點該完成的事。這里根據(jù)公司情況來吧,我不給出示例了。
2.13、實施風險及規(guī)避措施
指對影響項目測試的各種可能發(fā)生的風險進行估計,以及對風險的發(fā)生幾率和嚴重程度進行估計,并按照估計結(jié)果對風險進行排序
3、腳本開發(fā)制作
腳本開發(fā)制作:請參考文章《JMeter壓力測試實例操作》
4、服務器監(jiān)控
服務器性能監(jiān)控:請參考文章《Jmeter監(jiān)控服務器性能》
5、測試報告編寫
這里我只介紹可能會涉及的一些點、大家根據(jù)自己情況做增減,性能測試報告一般包含如下幾項內(nèi)容:測試目標、參考文檔、測試環(huán)境說明、硬件配置、軟件配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結(jié)果及其分析、測試結(jié)論及建議等等。
至于每項的詳細內(nèi)容,這里就不逐項一一詳細說明了,請大家根據(jù)公司情況做設計編寫。
四、關于性能測試的一些看法
想要把性能測試做好,需要做好多方面的知識儲備,而且涉及到面非常廣,比如網(wǎng)絡,OS,系統(tǒng)架構(gòu),業(yè)務邏輯,協(xié)議報文,腳本開發(fā),服務和系統(tǒng)的監(jiān)控等等更多方面的知識。
值的一提的是,真正要把性能測試做得好,還得是大公司(真的肯花錢呀),畢竟人家真的是數(shù)據(jù)量大呀。我們一起回憶一下雙十一的淘寶和京東,這些才算的上真正意義的性能測試。
還有一點要說的是,性能測試真的是水太深了,個中細節(jié),相信做過性能測試的同學自有體味,哈哈哈?。?!
以上僅為自己實際工作中的一些經(jīng)驗,本人能力有限,如有不足,還請留言補充。最后,謝謝您的耐心閱讀??!
作者: 糖小幽
歡迎關注微信公眾號 :軟件測試君