手把手教你如何使用jmeter做性能測試

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

在博客園和公號(hào)連續(xù)寫文章,已經(jīng)快兩年了。

自然在公號(hào)或博客園閱讀過我文章的同學(xué),基本都能聯(lián)系到我的。

就在幾天前,有個(gè)同學(xué)加我微信,當(dāng)然我并不驚訝,甚至習(xí)以為常(因?yàn)榭傆腥思游椅⑿牛?,為什么呢?br>
這里講下原因吧,對(duì)于被添加好友一般可為以下幾類:

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

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

第三種:直接發(fā)來“進(jìn)群”,我知道你誰呀,想干什么的,搞“團(tuán)結(jié)”來了?

第四種:不說話,也不清楚要做什么,某一天發(fā)現(xiàn)自己意外被刪除了,是不是感覺特?zé)o辜,有木有!

但這個(gè)同學(xué),我要著重說一下,挺有意思的。這是一個(gè)關(guān)注我公號(hào)很久的一個(gè)粉絲,總會(huì)看我的文章。我們聊了一會(huì),他和我說了下他的情況,也是個(gè)自學(xué)黨,問我有老師講jmeter課程嗎?想系統(tǒng)學(xué)習(xí)一下。

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

但作為一個(gè)自學(xué)黨,自知自學(xué)是一件多么堅(jiān)難的事。

當(dāng)然,還有一點(diǎn)就是自己的小玻璃心,受到了影響。因?yàn)橛幸魂囎约禾貏e不愛寫文章,周期大概有1-2個(gè)月,為什么呢?

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

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

但是,這個(gè)同學(xué)給我了一種強(qiáng)烈的認(rèn)同感,頓時(shí)讓我覺得備受期待,原來我寫的文章,還有人看的,超感動(dòng)的!所以當(dāng)他說出困惑后,我想了想,我還是可以幫上一些人的,必須堅(jiān)持寫下去,幫助一些渴望學(xué)習(xí)技術(shù)的同學(xué),所以就專門寫了這篇文章。

那么就我限有的知識(shí),來詮釋怎么做一個(gè)功能的性能測試。

二、性能測試的分類

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

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

1、壓力測試

目的:找出臨界點(diǎn)。

2、負(fù)載測試

目的:找出能承受的最大負(fù)載量。

3、穩(wěn)定性測試

目的:驗(yàn)證系統(tǒng)是否有內(nèi)存泄露等問題。

4、容量測試

目的:找出數(shù)據(jù)庫能夠處理的最大會(huì)話能力、最大容量。

5、配置測試

目的:為系統(tǒng)調(diào)優(yōu)提供參考。

三、性能測試流程

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






當(dāng)然,以上流程僅供參考,具體大家還需視公司情況自行調(diào)整。

1、性能需求分析

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

1.1、調(diào)研期望指標(biāo)(即性能需求)





這只是流程中的第一步,如果這一步做好了,接下來的測試方案設(shè)計(jì)、腳本開發(fā)、測試執(zhí)行、測試報(bào)告都會(huì)輕松很多。

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

1.2、關(guān)于收據(jù)需求指標(biāo)

參考前輩的歷史數(shù)據(jù)

參考同行競品

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

這里在廢話幾句哈,做測試的要嚴(yán)謹(jǐn),覺得可能?大約?應(yīng)該就是這樣的吧?這些字眼能說服誰?下面劃重點(diǎn),拿出數(shù)據(jù)說話、數(shù)據(jù)說話、數(shù)據(jù)說話、重要的事說三遍!

2、性能測試方案設(shè)計(jì)

2.1、測試目的、目標(biāo)與范圍

目的:找出系統(tǒng)潛在的性能缺陷

目標(biāo):從安全,可靠,穩(wěn)定的角度出發(fā),找出性能缺陷,并且找出系統(tǒng)最佳承受并發(fā)用戶數(shù),以及并發(fā)用戶數(shù)下長時(shí)間運(yùn)行的負(fù)載情況,如要并發(fā)100用戶,如何對(duì)系統(tǒng)進(jìn)行調(diào)優(yōu)

測試功能范圍:本次測試計(jì)劃主要收集分析禪道添加用例并發(fā)請(qǐng)求相關(guān)數(shù)據(jù),做出分析和調(diào)優(yōu)



2.2、測試指標(biāo)范圍






測試范圍:禪道中添加用例并發(fā)時(shí),服務(wù)器各項(xiàng)性能指標(biāo)的性能測試

Jmeter指標(biāo):由于Apache旗下性能測試工具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ò)誤頁數(shù)(平均低于20,低于15更佳)

4、Physical Disk-%Disk Time:磁盤使用率(平均低于50%)

5、SQL Server:Buffer Manager-Buffer Cache Hit Ratio:(在緩沖區(qū)告訴緩存中找到而不需要從磁盤中讀取的頁的百分比,正常情況次比率超過90%,理想狀態(tài)接近99%)

不需要關(guān)心的指標(biāo):

業(yè)務(wù)流程/路徑覆蓋率

業(yè)務(wù)數(shù)據(jù)的完整、正確性

其他諸如系統(tǒng)易用性、可管理性等屬于專項(xiàng)測試的內(nèi)容

2.3、測試資源

條件有限,我就一個(gè)測試環(huán)境,虛擬機(jī)套出來的環(huán)境,所有服務(wù)都部署在一塊了,正常系統(tǒng)是分開部署的,這里參考這個(gè)表格的屬性就好了。



2.4、測試準(zhǔn)備

測試環(huán)境安裝:我這里部署的是一個(gè)禪道系統(tǒng),如何搭建百度一下

2.5、測試工具和測試策略

測試工具:Apache-Jmeter2.3.2

測試策略:根據(jù)公司內(nèi)部實(shí)際情況,以及業(yè)務(wù)分布設(shè)置訪問量即并發(fā)用戶數(shù)

2.6、測試數(shù)據(jù)收集測試腳本、數(shù)據(jù)及其預(yù)驗(yàn)證

添加測試用例場景設(shè)計(jì)如下:



2.8、基準(zhǔn)測試

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

測試方法:采用5個(gè)用戶負(fù)載執(zhí)行,取交易的平均響應(yīng)時(shí)間作為衡量指標(biāo),并計(jì)算吞吐量

2.9、負(fù)載測試

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

2.10、穩(wěn)定性測試

壓測系統(tǒng)7x24小時(shí)

2.11、測試輸出成果物

《性能測試方案》

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

《性能測試報(bào)告》

2.12、測試進(jìn)度計(jì)劃

度量你性能測試期間,在每個(gè)時(shí)間點(diǎn)該完成的事。這里根據(jù)公司情況來吧,我不給出示例了。

2.13、實(shí)施風(fēng)險(xiǎn)及規(guī)避措施

指對(duì)影響項(xiàng)目測試的各種可能發(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、腳本開發(fā)制作

腳本開發(fā)制作:請(qǐng)參考文章《JMeter壓力測試實(shí)例操作》

4、服務(wù)器監(jiān)控

服務(wù)器性能監(jiān)控:請(qǐng)參考文章《Jmeter監(jiān)控服務(wù)器性能》

5、測試報(bào)告編寫

這里我只介紹可能會(huì)涉及的一些點(diǎn)、大家根據(jù)自己情況做增減,性能測試報(bào)告一般包含如下幾項(xiàng)內(nèi)容:測試目標(biāo)、參考文檔、測試環(huán)境說明、硬件配置、軟件配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結(jié)果及其分析、測試結(jié)論及建議等等。

至于每項(xiàng)的詳細(xì)內(nèi)容,這里就不逐項(xiàng)一一詳細(xì)說明了,請(qǐng)大家根據(jù)公司情況做設(shè)計(jì)編寫。

四、關(guān)于性能測試的一些看法

想要把性能測試做好,需要做好多方面的知識(shí)儲(chǔ)備,而且涉及到面非常廣,比如網(wǎng)絡(luò),OS,系統(tǒng)架構(gòu),業(yè)務(wù)邏輯,協(xié)議報(bào)文,腳本開發(fā),服務(wù)和系統(tǒng)的監(jiān)控等等更多方面的知識(shí)。

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

還有一點(diǎn)要說的是,性能測試真的是水太深了,個(gè)中細(xì)節(jié),相信做過性能測試的同學(xué)自有體味,哈哈哈?。?!

以上僅為自己實(shí)際工作中的一些經(jīng)驗(yàn),本人能力有限,如有不足,還請(qǐng)留言補(bǔ)充。最后,謝謝您的耐心閱讀?。?br>




作者: 糖小幽

歡迎關(guān)注微信公眾號(hào) :軟件測試君