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