企業(yè)網(wǎng)站排名怎么優(yōu)化西安網(wǎng)站建設(shè)公司電話
本篇文章主要包含Jmeter的下載安裝、環(huán)境配置
添加線程組、結(jié)果樹、HTTP請(qǐng)求、請(qǐng)求頭設(shè)置。JSON提取器的使用,用戶自定義變量
目錄
一:引入
1:軟件介紹
2:工作原理
3:安裝Jmeter
4:啟動(dòng)方式
(1)命令?啟動(dòng)
(2)手動(dòng)啟動(dòng)
5:語(yǔ)言配置
二:基礎(chǔ)使用
1:線程組&參數(shù)介紹
(1)Ramp-Up 時(shí)間
(2)調(diào)度器持續(xù)時(shí)間
(3)循環(huán)次數(shù)
2:添加結(jié)果樹
(1)響應(yīng)時(shí)間
(2)響應(yīng)碼
?3:添加HTTP請(qǐng)求
(1)HTTP默認(rèn)請(qǐng)求值
4:請(qǐng)求頭的設(shè)置?
(1)bug復(fù)現(xiàn)
(2)建立HTTP請(qǐng)求頭管理器
(3)在請(qǐng)求頭中加入token后正確返回結(jié)果
(4)作用域設(shè)置
(5)錯(cuò)誤信息分析
二:JSON提取器
1:引入
(1)問(wèn)題引入
(2)JSON Path Tester
(3) JSON操作符
(4)具體使用例子
(5)避免重覆蓋問(wèn)題
(6)解決方式
2:運(yùn)用JSON提取器
三:用戶定義變量
四:設(shè)置請(qǐng)求頭格式?
1:bug引入
2:解決思路
3:正確示例
一:引入
1:軟件介紹
Apache JMeter是Apache組織基于Java開發(fā)的壓?測(cè)試?具,?于對(duì)軟件做性能測(cè)試
2:工作原理
3:安裝Jmeter
鏈接直達(dá):Apache JMeter - 下載 Apache JMeter
4:啟動(dòng)方式
(1)命令?啟動(dòng)
這里阿華安裝的是5.5版本,版本不影響啟動(dòng)方式,在用戶菜單中搜索環(huán)境變量
點(diǎn)擊新建變量,把你剛下載的文件的路徑——找到那個(gè)bin就可以了。變量名字隨意,變量值要對(duì)應(yīng)路徑
然后windows+r? ?回車鍵 ——打開命令操作,輸入jmeter,就可以啟動(dòng)我們的軟件了
(2)手動(dòng)啟動(dòng)
5:語(yǔ)言配置
找到j(luò)meter.properties這個(gè)文件,用記事本打開,修改language=zh_CN
二:基礎(chǔ)使用
1:線程組&參數(shù)介紹
看圖說(shuō)話。這倆個(gè)參數(shù)容易混淆,Ramp-Up,指的是我們10個(gè)線程在這1s內(nèi)勻速啟動(dòng),調(diào)度器的持續(xù)時(shí)間是,這個(gè)說(shuō)的是這10個(gè)線程啟動(dòng)后(也就是1s后),持續(xù)測(cè)試的時(shí)間(這里勾選了永遠(yuǎn),即使寫了2s,也會(huì)一直測(cè)試下去)。
(1)Ramp-Up 時(shí)間
控制的是線程的啟動(dòng)節(jié)奏
(2)調(diào)度器持續(xù)時(shí)間
控制的是整個(gè)測(cè)試運(yùn)行的時(shí)長(zhǎng)
(3)循環(huán)次數(shù)
指的是要執(zhí)行的輪次(比如說(shuō)我設(shè)置個(gè)循環(huán)次數(shù)為2,那第一輪10個(gè)線程1s啟動(dòng)完,在持續(xù)2s不斷地發(fā)送請(qǐng)求,之后結(jié)束第一次循環(huán),緊接著進(jìn)入第二次循環(huán),還是這10個(gè)線程慢啟動(dòng)1s,在持續(xù)2s不斷地發(fā)送請(qǐng)求......)
注意點(diǎn)①:調(diào)度器的持續(xù)時(shí)間是要等所有線程啟動(dòng)后,才開始計(jì)時(shí)
注意點(diǎn)②:一輪循環(huán)結(jié)束,新一輪循環(huán)還是這10個(gè)線程,需要重新勻速啟動(dòng),在持續(xù)時(shí)間內(nèi)發(fā)送請(qǐng)求
注意點(diǎn)③:如果這里不勾選,永遠(yuǎn),這個(gè)選項(xiàng),那么一定要在輸入框中輸入數(shù)字,否則,在啟動(dòng)的時(shí)候,會(huì)自動(dòng)勾選上永遠(yuǎn)
2:添加結(jié)果樹
這里用來(lái)查看我們查看發(fā)出請(qǐng)求后收到的響應(yīng)結(jié)果
?取樣器結(jié)果中需要去關(guān)注的信息
(1)響應(yīng)時(shí)間
load time 響應(yīng)時(shí)間? 單位是ms
(2)響應(yīng)碼
(這里的響應(yīng)時(shí)間就不正常)Response code
?3:添加HTTP請(qǐng)求
(1)HTTP默認(rèn)請(qǐng)求值
同一個(gè)系統(tǒng)中協(xié)議,ip,端口是不會(huì)發(fā)生改變的,所以我們把這些信息提取出來(lái),放到默認(rèn)值當(dāng)中,注意它們的作用域是同級(jí)的!
注意點(diǎn):當(dāng)取樣器中存在未配置的選項(xiàng),會(huì)直接去http請(qǐng)求默認(rèn)配置中取;取樣器中配置了的選項(xiàng)就不會(huì)去默認(rèn)配置中取了。
4:請(qǐng)求頭的設(shè)置?
(1)bug復(fù)現(xiàn)
主要是針對(duì)登錄的狀態(tài)
舉例,看我們?cè)跒g覽器中登錄后,請(qǐng)求頭中就有了這個(gè)JWT令牌
(2)建立HTTP請(qǐng)求頭管理器
(3)在請(qǐng)求頭中加入token后正確返回結(jié)果
(4)作用域設(shè)置
因?yàn)橛袛r截器的設(shè)置,所以沒(méi)有token令牌的頁(yè)面是不會(huì)正確加載的,我們?nèi)绻堰@個(gè)默認(rèn)請(qǐng)求頭設(shè)置放到同級(jí)作用域,那還要登錄干啥呀,所以把這個(gè)頭管理器放到列表頁(yè)就OK了。
將登錄后的data拿過(guò)來(lái)
(5)錯(cuò)誤信息分析
如果我們?cè)贖TTP請(qǐng)求當(dāng)中把域名寫錯(cuò),會(huì)報(bào)下面這個(gè)錯(cuò)誤
二:JSON提取器
1:引入
(1)問(wèn)題引入
我們配置的這個(gè)token是死的,一旦過(guò)期,或者重新請(qǐng)求token更新了,那么我們這個(gè)請(qǐng)求頭中的token就無(wú)效了,所以想一想
那可不可以將每次我們登錄后拿到的token抽取出來(lái)———>賦值到我們的默認(rèn)HTTP請(qǐng)求頭當(dāng)中呢
(2)JSON Path Tester
有可能會(huì)遇到兼容性問(wèn)題,重啟一下Jmeter即可,直到?test按鈕出現(xiàn)為止
(3) JSON操作符
(4)具體使用例子
同樣我們也可以提取到code等等
提取data中的數(shù)據(jù)記為變量token,可以這么理解奧
這里用的時(shí)候用{}選擇token就行了
此時(shí)我們?cè)谶M(jìn)行請(qǐng)求就可以正常訪問(wèn)了,
發(fā)問(wèn):我把取用戶登錄憑證放到登錄前面不會(huì)產(chǎn)生影響嗎,我這都還沒(méi)登錄呢?——這里我們把提取用戶登錄憑證(也就是Json提取器)放到線程組的前方(這個(gè)順序不影響結(jié)果),它的作用范圍是同級(jí)
(5)避免重覆蓋問(wèn)題
梳理一下——發(fā)起登錄請(qǐng)求——>拿到返回值中的data數(shù)據(jù)(也就是token)記為token (token=$.data)——>在把這個(gè)${token}設(shè)置為HTTP響應(yīng)頭,當(dāng)我們請(qǐng)求列表頁(yè)的時(shí)候,HTTP響應(yīng)頭中就會(huì)帶上這個(gè)token——>但是問(wèn)題來(lái)了,此時(shí)列表頁(yè)也會(huì)返回回來(lái)相關(guān)data數(shù)據(jù),那么我們的token = $.data就被覆蓋了,下次發(fā)起新的HTTP請(qǐng)求,請(qǐng)求頭當(dāng)中就不在是令牌了,而是我們列表頁(yè)返回回來(lái)的data數(shù)據(jù)——這不就g了
(6)解決方式
第一步:把提取用戶登錄憑證放到登錄當(dāng)中,這里我們的登錄請(qǐng)求中也會(huì)攜帶token,但是token為空(我們還沒(méi)登錄成功呢嘛)
第二步:把HTTP信息頭管理放到最前面,作用于整個(gè)同級(jí)作用域之內(nèi)
============================================================
總結(jié):我們的HTTP信息頭管理器中配置的token變量?,它去取數(shù)據(jù)的時(shí)候,會(huì)去同級(jí)和同級(jí)的子集中去找,找到就給你拿過(guò)來(lái)!!
2:運(yùn)用JSON提取器
如果我們的blogId=9999不存在,就g了,那考慮我們能不能把這個(gè)9999寫成活的不要寫死。
繼續(xù)JSON提取器, 提取我們列表頁(yè)中有效的blogId,設(shè)置為blogId
后續(xù)使用的時(shí)候直接${blogId}就可以用了!!如下
三:用戶定義變量
想象一下,如果有一個(gè)blogId需要重復(fù)使用過(guò),我們能不能定義一個(gè)變量來(lái)統(tǒng)一管理呢?
假設(shè)現(xiàn)在有200個(gè)請(qǐng)求都要去請(qǐng)求blogId=1993,這里我們就可以提出來(lái),進(jìn)行統(tǒng)一管理
四:設(shè)置請(qǐng)求頭格式?
1:bug引入
場(chǎng)景引入,有一些內(nèi)部的接口 ,限制了請(qǐng)求頭中的格式為application/json,而并非Jmeter中默認(rèn)的 charset=UTF-8
所以我們?cè)O(shè)置一下請(qǐng)求頭的屬性,但是這個(gè)位置不要亂放,應(yīng)該放到添加博客這個(gè)級(jí)別下,否則就作用于全局啦!!
2:解決思路
第一步:去網(wǎng)頁(yè)web前端查看一下,F12查看網(wǎng)頁(yè)請(qǐng)求中的請(qǐng)求頭信息
第二步:去postman中測(cè)試是否是content-type的原因
第三步:定位到bug之后,去Jmeter對(duì)應(yīng)接口測(cè)試下中設(shè)置請(qǐng)求體格式為application/json
第四步:測(cè)試