一抒钱、Jmeter腳本錄制
Jmeter使用概述
錄制腳本首先我們需要設(shè)置Jmeter:
① 測試計(jì)劃>添加>Threads(Users)>線程組;
② 工作臺(tái)>添加>非測試元件>HTTP代理服務(wù)器。
那么又如何配置HTTP代理服務(wù)器呢:
??Global settings Jmeter代理服務(wù)器監(jiān)聽的端口诅蝶,默認(rèn)8080,可以修改為:8888缰泡;
??目標(biāo)控制器:測試計(jì)劃>線程組棘钞;(這樣設(shè)置后,錄制下來的HTTP請(qǐng)求會(huì)保存在“測試計(jì)劃>線程組”下面)
??分組:每個(gè)組放入一個(gè)新的控制器宝恶,這樣設(shè)置后JMeter會(huì)將我們錄制下來的HTTP請(qǐng)求進(jìn)行適當(dāng)?shù)姆纸M,效果后面能看到;
??“記錄HTTP信息頭”“添加斷言”“Regex matching(正則匹配)”保持默認(rèn)配置
??HTTP Sampler Settings和Content-type膀藐,保持默認(rèn)
??包含模式(重要配置項(xiàng):只有請(qǐng)求的url国觉,匹配包含模式中的正則表達(dá)式麻诀,這條請(qǐng)求才會(huì)被錄制):如添加“www.baidu.com.*”我們的請(qǐng)求,只有以www.baidu.com開頭的請(qǐng)求才會(huì)被Jmeter錄制下來呻引;
??排除模式(重要配置項(xiàng):只有請(qǐng)求的url苞七,匹配排除模式中的正則表達(dá)式乾蓬,這條請(qǐng)求就會(huì)被過濾):如添加“.*\.(js|css|png).*”當(dāng)HTTP請(qǐng)求中包含任内,js粒氧,或css摘盆,或png,就會(huì)被Jmeter排除掉饱苟;
Jmeter的HTTP代理服務(wù)器就配置好了孩擂,在啟動(dòng)這個(gè)代理服務(wù)器之前,我們還應(yīng)該去瀏覽器添加一個(gè)本地代理(本文以火狐瀏覽器做例箱熬,其他瀏覽器設(shè)置代理的方法也是一樣)类垦,如下:
設(shè)置好Jmeter和瀏覽器的HTTP代理服務(wù)器之后狈邑,瀏覽器訪問任何url地址蚤认,都會(huì)轉(zhuǎn)發(fā)到127.0.0.1:8888亏较,也就是Jmeter的代理服務(wù)地址舍哄,同時(shí)被jmeter記錄下來籽暇,這樣我們就可以開始錄制腳本了累盗。
啟動(dòng)Jmeter的HTTP代理服務(wù)器
二孕索、Jmeter測試腳本
利用Jmeter測試組件對(duì)錄制腳本進(jìn)行加工和編輯镇眷;
測試組件介紹:
1.線程組圈驼,是Jmeter組件中最核心的測試組件
如:打開主頁,登錄等操作都是Jmeter線程來完成的阁猜;線程組,就是管理這些線程的組件蹭沛;
線程組中的配置項(xiàng):
① 線程數(shù):Jmeter線程的數(shù)量集嵌,決定著Jmeter用多少個(gè)線程去同時(shí)執(zhí)行這些操作(如圖模擬10個(gè)用戶)嫌拣,線程數(shù)越大酝润,服務(wù)器所承受的壓力就越大垦梆;
② Ramp-up Period:啟動(dòng)所有Jmeter線程所花費(fèi)的時(shí)間厅各,為了防止Jmeter測試時(shí)涝桅,瞬間給被測服務(wù)器施加太大的壓力盐肃,從第一個(gè)開始慢慢慢慢增加到第10個(gè);(在十秒鐘啟動(dòng)10個(gè)線程控嗜,平均每秒增加1個(gè)線程壁顶,直到10個(gè)都啟動(dòng)完成);Ramp-up Period越大飞盆,被測服務(wù)器施加的壓力幅度越平緩逃默;
③ 循環(huán)次數(shù):決定線程重復(fù)循環(huán)執(zhí)行的次數(shù)鹃愤;(如:勾選永遠(yuǎn),主頁>登錄也>登錄的動(dòng)作將無限循環(huán)的執(zhí)行下去)
④ 調(diào)度器:可以詳細(xì)的設(shè)置線程執(zhí)行測試的時(shí)間完域;(持續(xù)時(shí)間:設(shè)置測試能持續(xù)執(zhí)行多久软吐;持續(xù)時(shí)間填寫之后,上面的結(jié)束時(shí)間就失效吟税;啟動(dòng)延遲:從當(dāng)前時(shí)刻算起凹耙,延遲幾秒才開始執(zhí)行測試,填寫之后肠仪,上面的啟動(dòng)時(shí)間也就失效了)
?2.采樣器(Sample)
添加采樣器:
Connect timeout:指的是肖抱,在Jmeter發(fā)送請(qǐng)求的時(shí)候,會(huì)等待多久直到跟服務(wù)器的連接正確的建立起來异旧,如果超過這個(gè)時(shí)間意述,連接還沒有建立,那么Jmeter就判斷這次請(qǐng)求是失敗的吮蛹;
Response timeout:Jmeter會(huì)等待多久荤崇,直到收到服務(wù)端的響應(yīng)數(shù)據(jù)。
他們的單位都是:“毫秒”潮针;
HTTP請(qǐng)求:Implementation术荤,一般選擇空或HttpClient4;Content encoding:如果前面的方法是“POST”然低,“PUT”“PATCH”和“(喜每。。雳攘。沒聽出來)”這四種方式時(shí)的带兜,會(huì)使用哪一種字符編碼方式;
路徑:請(qǐng)求的url路徑
參數(shù):也可以手動(dòng)添加參數(shù)
3.斷言
給某個(gè)請(qǐng)求添加斷言:
Apply to:指定了斷言的作用范圍吨灭;保持默認(rèn)刚照,只對(duì)當(dāng)前的采樣器生效;
要測試的響應(yīng)字段:指的是喧兄,斷言要檢查的目標(biāo)无畔;重點(diǎn)關(guān)注“響應(yīng)文本”“響應(yīng)代碼”和“響應(yīng)信息”這三個(gè);響應(yīng)文本:指的是服務(wù)器返回的數(shù)據(jù)吠冤;響應(yīng)代碼:HTTP的響應(yīng)code(如:200浑彰;500;403等)拯辙;響應(yīng)信息:http的響應(yīng)massage:OK郭变,error等;
模式匹配規(guī)則和要測試的模式涯保;
例子:
響應(yīng)代碼 Equals 200诉濒;響應(yīng)代碼 = 200
響應(yīng)信息 Equals OK;響應(yīng)信息 = OK
響應(yīng)文本 包括 夜空黑夕春;響應(yīng)文本中包括 “夜空黑”三個(gè)字 這樣的HTTP請(qǐng)求即為成功的未荒,否則失敗及志;
4.參數(shù)化
如圖:登錄名密碼為固定的20000000000/netease123片排,模擬的是同一個(gè)用戶對(duì)操作進(jìn)行十次。如果要模擬不同用戶對(duì)頁面進(jìn)行操作速侈,就需要對(duì)用戶名密碼進(jìn)行參數(shù)化划纽;
先在系統(tǒng)中注冊(cè)10個(gè)用戶,用戶名密碼寫在一個(gè)txt文本中锌畸,如下圖勇劣,中間用英文的逗號(hào)隔開;
首先在線程組下添加>配置元件>CSV Data Set Config潭枣,這個(gè)組件可以幫助我們實(shí)現(xiàn)參數(shù)化
Filename:配置文件的絕對(duì)路徑比默;
File encoding:JMeter在讀取文件的時(shí)候使用的字符編碼方式;
Variable Names:配置文件中各列代表的數(shù)據(jù)項(xiàng)盆犁;
Delimiter:配置文件中不同列之間的分隔符
接下來的幾個(gè)配置項(xiàng)全部選用默認(rèn)值
在login頁面的body中修改需要傳入的數(shù)據(jù)命咐,為剛才測試組件中設(shè)置的項(xiàng)完全一致
5.HTTP?Cookie管理器:
>實(shí)際的登錄動(dòng)作前后,進(jìn)行了兩次checkLogin谐岁;
>在login操作時(shí)醋奠,開發(fā)者工具(F12)的ResponseHeaders中可以看到榛臼,進(jìn)行了一些set-Cookie操作;換句話說窜司,服務(wù)端會(huì)返回一些cookie信息給瀏覽器沛善,瀏覽器會(huì)自動(dòng)的在后續(xù)的所有請(qǐng)求中自動(dòng)的帶上這些Cookie;
>但在Jmeter不會(huì)錄制下這些Cookie塞祈,正是因?yàn)槿鄙倭诉@個(gè)cookie金刁,我們的jmeter線程,即使成功執(zhí)行了登錄操作议薪,后續(xù)的請(qǐng)求尤蛮,服務(wù)器依然會(huì)認(rèn)為我們沒有登錄;
>那為什么Jmeter沒有錄制下這些cookie呢斯议?因?yàn)檫@些cookie常常是不固定的产捞,每次測試都有可能不一樣,把這些cookie錄制到Jmeter哼御,反而會(huì)有些問題轧葛;
? ?>那當(dāng)前的腳本需要進(jìn)行怎樣的加工,才能生效呢艇搀?我們?cè)诖诵枰肓硪粋€(gè)測試組件:HTTP Cookie管理器
添加:
勾選“每次反復(fù)清除Cookies”尿扯,腳本反復(fù)執(zhí)行登錄測試,每次執(zhí)行主頁焰雕,登錄頁衷笋,登錄這一輪測試后,會(huì)清除cookie矩屁,下一次執(zhí)行操作時(shí)辟宗,仍會(huì)以一個(gè)未登錄的狀態(tài)來執(zhí)行主頁,登錄頁吝秕,登錄的操作泊脐;
添加HTTP Cookie管理器后執(zhí)行測試,再查看結(jié)果樹checkLogin信息烁峭,可以看到服務(wù)端返回了用戶信息容客,此時(shí)服務(wù)端認(rèn)為我們真正完成了登錄;
三约郁、JMeter測試執(zhí)行
查看結(jié)果樹
添加:
取樣器結(jié)果:
Load time:請(qǐng)求從發(fā)出到接收到完整的返回結(jié)果的時(shí)間缩挑;(即響應(yīng)時(shí)間)
Latency:請(qǐng)求從發(fā)出到接收開始接收到響應(yīng),一般略小于Load time鬓梅;
Connect Time:JMeter和服務(wù)端建立連接所花費(fèi)的時(shí)間供置,這個(gè)時(shí)間端已經(jīng)包含在Load time中了;
Size in bytes:這次請(qǐng)求的大姓揽臁芥丧;
請(qǐng)求
響應(yīng)數(shù)據(jù):服務(wù)端返回的數(shù)據(jù)
查看結(jié)果樹這個(gè)監(jiān)聽器紧阔,需要每個(gè)請(qǐng)求的詳細(xì)信息都顯示出來,所以對(duì)系統(tǒng)資源是有一定開銷的续担。如果在測試的時(shí)候擅耽,若系統(tǒng)的吞吐率很高,查看結(jié)果樹會(huì)對(duì)性能帶來比較大的影響赤拒,不建議用這個(gè)監(jiān)聽器,以免影響測試結(jié)果诱鞠;
聚合報(bào)告:
響應(yīng)時(shí)間曲線
添加>監(jiān)聽器>Response Time Graph
Interval(ms):橫坐標(biāo)的統(tǒng)計(jì)間隔挎挖;Jmeter會(huì)在10秒內(nèi)的執(zhí)行的結(jié)果做一個(gè)平均值的聚合;
Sampler label
selection:可以設(shè)置過濾請(qǐng)求航夺,只顯示一部分的請(qǐng)求蕉朵;(如下圖:過濾以46和18開頭的請(qǐng)求)
只顯示46開頭的請(qǐng)求
常見問題和解決思路:
小壓力(如2個(gè)并發(fā)數(shù))