云智慧压测实战分享之JMeter脚本录制实例
在前面的《云智慧壓測(cè)實(shí)戰(zhàn)分享之JMeter工具使用初探》中我們對(duì)JMeter的功能特點(diǎn)和常用元件做了簡(jiǎn)單介紹,接下來(lái)說(shuō)說(shuō)JMeter的腳本錄制。JMeter有多種錄制腳本方法,其中最常見(jiàn)的是通過(guò)第三方工具Badboy錄制,另外還有JMeter自身設(shè)置(Http代理服務(wù)器+IE瀏覽器設(shè)置)來(lái)錄制腳本,下面以壓測(cè)寶為例來(lái)介紹下Badboy腳本錄制過(guò)程。
注:使用JMeter的代理或是Badboy進(jìn)行錄制的時(shí)候,操作不能太快,不然容易造成錄制失敗。
1、打開(kāi)Badboy工具,在地址欄目中輸入被測(cè)試項(xiàng)目的地址。注意:Badboy啟動(dòng)默認(rèn)是錄制狀態(tài),為紅色按鈕,如圖:
錄制完成后點(diǎn)擊工具欄旁邊黑色按鈕,結(jié)束錄制。
2、選擇“文件”--Export to JMeter…
3、打開(kāi)JMeter工具,選擇“文件”-->“打開(kāi)”選擇剛才保存的文件(.jmx類(lèi)型),將文件導(dǎo)入進(jìn)來(lái)了。
錄制的腳本一定要添加HTTP Cookie Manager,否則腳本運(yùn)行失敗。
對(duì)于JMeter來(lái)說(shuō),一個(gè)測(cè)試計(jì)劃只能有一個(gè)Cookie管理器,因?yàn)楫?dāng)多個(gè)Manager存在時(shí),JMeter沒(méi)有方法來(lái)指定使用哪個(gè)Manager,同時(shí)一個(gè)Cookie Manager中存儲(chǔ)的Cookie也不能被其他Cookie Manager所引用,所以同一個(gè)測(cè)試計(jì)劃中不建議使用多個(gè)Cookie Manager。
JMeter壓測(cè)實(shí)例
下面我們用幾個(gè)JMeter壓測(cè)實(shí)例來(lái)熟悉一下JMeter的使用。
1、使用JMeter進(jìn)行http接口測(cè)試
Jmter工具設(shè)計(jì)之初是用于性能測(cè)試的,它在實(shí)現(xiàn)對(duì)各種接口的調(diào)用方面已經(jīng)比較成熟,因此可直接使用JMeter工具來(lái)完成對(duì)Http接口的測(cè)試。
1)、開(kāi)發(fā)接口測(cè)試案例的整體方案:
? 第一步:我們要分析出測(cè)試需求,并拿到開(kāi)發(fā)提供的接口說(shuō)明文檔;
? 第二步:從接口說(shuō)明文檔中整理出接口測(cè)試案例,里面要包括詳細(xì)的入?yún)⒑统鰠?shù)據(jù)以及明確的格式和檢查點(diǎn)。
? 第三步:和開(kāi)發(fā)一起對(duì)接口測(cè)試案例進(jìn)行評(píng)審。
? 第四步:結(jié)合開(kāi)發(fā)庫(kù),準(zhǔn)備接口測(cè)試案例中的入?yún)?shù)據(jù)和出參數(shù)據(jù),并整理成csv格式的文件。
? 第五步:結(jié)合接口測(cè)試案例文檔和csv格式的數(shù)據(jù)文檔,做接口測(cè)試案例的自動(dòng)化案例開(kāi)發(fā)。
2)、接口自動(dòng)化適用場(chǎng)景:
目前設(shè)計(jì)的自動(dòng)化接口測(cè)試案例有兩個(gè)運(yùn)行場(chǎng)景:
a. 測(cè)試前置、開(kāi)發(fā)自測(cè):一個(gè)新的自動(dòng)化接口測(cè)試案例開(kāi)發(fā)完成后,直接發(fā)給接口對(duì)應(yīng)的開(kāi)發(fā),安排在開(kāi)發(fā)本地環(huán)境執(zhí)行,一旦開(kāi)發(fā)確認(rèn)完成接口開(kāi)發(fā),就開(kāi)始執(zhí)行接口測(cè)試案例,基本上可以實(shí)時(shí)拿到測(cè)試結(jié)果,方便開(kāi)發(fā)快速做出判斷。【開(kāi)發(fā)本地運(yùn)行的方式就是打開(kāi)JMeter工具,導(dǎo)入JMX文件,開(kāi)始執(zhí)行即可?!?/p>
b. 回歸測(cè)試:開(kāi)發(fā)本地測(cè)試通過(guò)后,或整個(gè)需求手工測(cè)試通過(guò)后,把自動(dòng)化的接口測(cè)試案例做分類(lèi)整理,挑選出需要納入到回歸測(cè)試中的案例,在持續(xù)集成環(huán)境重新準(zhǔn)備測(cè)試數(shù)據(jù),并把案例納入到持續(xù)集成的job中來(lái),這些用于回歸的接口測(cè)試案例需要配置到持續(xù)集成平臺(tái)自動(dòng)運(yùn)行。
3)、接口測(cè)試環(huán)境準(zhǔn)備
? Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html
? JMeter,下載址址:http://jmeter.apache.org/download_jmeter.cgi
? 插件的下載安裝地址:http://www.jmeter-plugins.org/
4)、創(chuàng)建工程:
a、打開(kāi)JMeter:下載好JMeter后,雙擊bin目錄下的jmeter.bat文件:
b、添加線(xiàn)程組:在“測(cè)試計(jì)劃”上點(diǎn)擊鼠標(biāo)右鍵-->添加-->threads(Users)-->線(xiàn)程組,添加測(cè)試場(chǎng)景設(shè)置組件,接口測(cè)試中一般設(shè)置為1個(gè)“線(xiàn)程數(shù)”,根據(jù)測(cè)試數(shù)據(jù)的個(gè)數(shù)設(shè)定“循環(huán)次數(shù)”。
c、添加“HTTP Cookie管理器”:
d、添加“Http請(qǐng)求默認(rèn)值”組件,當(dāng)被測(cè)系統(tǒng)有唯一的訪(fǎng)問(wèn)域名和端口時(shí),這個(gè)組件很好用:
e、在“HTTP 請(qǐng)求默認(rèn)值”組件配置頁(yè)面,填寫(xiě)被測(cè)系統(tǒng)的域名和端口,http請(qǐng)求的實(shí)現(xiàn)包版本以及具體協(xié)議類(lèi)型,線(xiàn)程組里的所有“HTTP Sampler”可默認(rèn)使用此設(shè)置。
f、在“線(xiàn)程組”里添加“HTTP 請(qǐng)求”的Sampler
g、在HTTP請(qǐng)求設(shè)置頁(yè)面,錄入被測(cè)接口的詳細(xì)信息,包括請(qǐng)求路徑,對(duì)應(yīng)的請(qǐng)求方法,以及隨請(qǐng)求一起發(fā)送的參數(shù)列表:
h、設(shè)置檢查點(diǎn):在被測(cè)接口對(duì)應(yīng)的“HTTP 請(qǐng)求”上,添加“響應(yīng)斷言”
i、在設(shè)置頁(yè)面上添加對(duì)相應(yīng)結(jié)果的正則表達(dá)式存在性判斷即可:
j、添加監(jiān)聽(tīng)器:方便查看運(yùn)行后的結(jié)果
上述步驟完成了一個(gè)簡(jiǎn)單測(cè)試實(shí)例的創(chuàng)建,復(fù)雜測(cè)試實(shí)例均在此基礎(chǔ)上擴(kuò)展完成。使用JMeter工具開(kāi)發(fā)的接口測(cè)試案例,一個(gè)子系統(tǒng)建議放在同一個(gè)“測(cè)試計(jì)劃”中,流程測(cè)試可以通過(guò)“線(xiàn)程組”來(lái)區(qū)分,這樣也便于設(shè)定不同的測(cè)試數(shù)據(jù)個(gè)數(shù)。比較獨(dú)立的接口,可以統(tǒng)一放在一個(gè)線(xiàn)程組內(nèi),順序完成測(cè)試。
流程性接口的測(cè)試:如果要測(cè)試的接口可以組成一個(gè)流程,只需要順序添加多個(gè)“HTTP 請(qǐng)求”的Sampler,各請(qǐng)求之間可以提取需要在上下文傳遞的數(shù)據(jù)作為參數(shù),以保證流程中數(shù)據(jù)的一致性。
2、JMeter分布式測(cè)試
在使用JMeter進(jìn)行性能測(cè)試時(shí),如果并發(fā)數(shù)比較大(比如最近項(xiàng)目需要支持1000并發(fā)),單臺(tái)電腦(CPU和內(nèi)存)可能無(wú)法支持,這時(shí)可以使用JMeter提供的分布式測(cè)試的功能。
1)、JMeter分布式執(zhí)行原理:
JMeter分布式測(cè)試時(shí),選擇其中一臺(tái)作為調(diào)度機(jī)(master),其它機(jī)器做為執(zhí)行機(jī)(slave)。
執(zhí)行時(shí),master會(huì)把腳本發(fā)送到每臺(tái)slave上,slave 拿到腳本后就開(kāi)始執(zhí)行,slave執(zhí)行時(shí)不需要啟動(dòng)GUI,我理解它應(yīng)該是通過(guò)命令行模式執(zhí)行的。
執(zhí)行完成后,slave會(huì)把結(jié)果回傳給master,master會(huì)收集所有slave的信息并匯總。
2)、執(zhí)行機(jī)(slave)配置:
a、slave機(jī)上需要安裝JMeter,具體如何安裝這里不詳細(xì)介紹了。
b、添加環(huán)境變量:JMETER_HOME=D:\B_TOOLS\apache-jmeter-2.13,此處為你JMeter的路徑
c、啟動(dòng)bin目錄下的:jmeter-server.bat,啟動(dòng)成功如下圖:
d、上圖上標(biāo)紅的IP和端口會(huì)在master里配置時(shí)用到。IP就是slave機(jī)器IP,端口默認(rèn)是1099,端口也可以自定義,這里我自定義為1000,這個(gè)后面會(huì)講。
e、多臺(tái)slave的話(huà),重復(fù)1~4步驟就好。
3)、調(diào)度機(jī)(master)配置:
a、腳本:簡(jiǎn)單的一個(gè)訪(fǎng)問(wèn)壓測(cè)寶的腳本:
b、找到JMeter的bin目錄下jmeter.properties文件,修改如下配置,IP和Port是slave機(jī)的IP以及自定義的端口(這里端口我自定義為100,后面會(huì)講如何自定義):
remote_hosts=10.13.223.202:1000,10.13.225.12:1000
多臺(tái)slave之前用","隔開(kāi),我這配置了2臺(tái),可以看到標(biāo)紅的這個(gè)就是上面截圖slave的IP和Port.
c、打開(kāi)JMeter,選擇運(yùn)行,有運(yùn)程啟動(dòng)、運(yùn)程全部啟動(dòng)兩個(gè)選項(xiàng):
d、選擇遠(yuǎn)程啟動(dòng)-->10.13.225.12:1000
a) master結(jié)果,這里我只啟動(dòng)了10.13.225.12:1000這一臺(tái)slave,所以只有一個(gè)結(jié)果(線(xiàn)程數(shù)和循環(huán)次數(shù)都是1):
b) slave控制臺(tái)信息:
e、選擇遠(yuǎn)程啟動(dòng)-->遠(yuǎn)程全部啟動(dòng):
a) master結(jié)果,全部啟動(dòng),我配置了2臺(tái)slave,所以有兩次執(zhí)行結(jié)果:
4)、自定義端口:
上面其實(shí)已經(jīng)實(shí)現(xiàn)了JMeter的分布式測(cè)試,這部分主要介紹下如何自定義slave端口:
a、slave:在slave機(jī)的JMeter的bin目錄下,找到j(luò)meter.properties文件,修改如下兩個(gè)配置項(xiàng),比如我這里修改為1888:
server_port=1888
server.rmi.localport=1888
b、啟動(dòng)slave機(jī)上的jmeter-server.bat,如下圖,端口已經(jīng)修改為:1888
c、master:修改master機(jī)器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
d、重啟jmeter.bat,如下圖,端口已經(jīng)變了:
5)、其它說(shuō)明:
a、調(diào)度機(jī)(master)和執(zhí)行機(jī)(slave)最好分開(kāi),由于master需要發(fā)送信息給slave并且會(huì)接收slave回傳回來(lái)的測(cè)試數(shù)據(jù),所以mater自身會(huì)有消耗,所以建議單獨(dú)用一臺(tái)機(jī)器作為mater。
b、參數(shù)文件:如果使用csv進(jìn)行參數(shù)化,那么需要把參數(shù)文件在每臺(tái)slave上拷一份且路徑需要設(shè)置成一樣的。
c、每臺(tái)機(jī)器上安裝的JMeter版本和插件最好都一致。
3、搭建持續(xù)集成接口測(cè)試平臺(tái)
下面介紹最后一個(gè)實(shí)例,搭建持續(xù)集成接口測(cè)試平臺(tái)(Jenkins+Ant+JMeter)。
1)、環(huán)境準(zhǔn)備:
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Ant:http://ant.apache.org/bindownload.cgi
Jenkins:http://jenkins-ci.org/
2)、Jemter腳本準(zhǔn)備:
a、腳本目錄:D:\B_TOOLS\apache-jmeter-2.13\demo
b、腳本內(nèi)容:都是訪(fǎng)問(wèn)壓測(cè)寶或google首頁(yè)
Script_yacebao.jmx
Script_google.jmx
3)、ANT的build.xml代碼準(zhǔn)備:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<xslt p="" <="" in="${jmeter.result.jtlName}">
41 out="${jmeter.result.htmlName}"
42 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"/>
43
44
45
46
47
48
49
50
51
4)、配置Jenkins Job并運(yùn)行:
a、job配置如下:
b、在job的workspace目錄下會(huì)生成結(jié)果報(bào)告:
c、TestReport.html:
5)、配置發(fā)送郵件功能
a、自已寫(xiě)一個(gè)發(fā)送郵件的功能并打成sendmail.jar包,放在job的workspace目錄中
b、jenkins增加構(gòu)建步驟
a)進(jìn)入到測(cè)試報(bào)告的目錄
b) 調(diào)用sendmail.jar命令發(fā)送郵件
說(shuō)明:
由build3.xml的第12、13行可知,報(bào)告文件生成目錄為:${env.WORKSPACE}/results/${env.BUILD_ID},所以這里要先cd到具體執(zhí)行的那個(gè)build_id目錄下。
可以把上面的兩行命令寫(xiě)在成一個(gè)批處理文件,例如第1步有個(gè)sendmail.bat文件就是,然后調(diào)用時(shí)直接寫(xiě)sendmail.bat就好了。
持續(xù)集成接口測(cè)試平臺(tái)(Jenkins+Ant+JMeter)就此搭建成功,以上是關(guān)于Jmeter腳本錄制和壓測(cè)的幾個(gè)實(shí)例,接下來(lái)為您帶來(lái)進(jìn)階的《云智慧壓測(cè)實(shí)戰(zhàn)分享之JMeter場(chǎng)景設(shè)置與監(jiān)控》,敬請(qǐng)期待。
轉(zhuǎn)載地址:http://news.chinabyte.com/175/14014175.shtml
總結(jié)
以上是生活随笔為你收集整理的云智慧压测实战分享之JMeter脚本录制实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux安装docker-ce教程 c
- 下一篇: 端口占用