第一部分:環(huán)境搭建--Jmeter
1.在開(kāi)始進(jìn)行接口測(cè)試之前禽笑,先要確保你的Jmeter能夠正常運(yùn)行王凑,若你還沒(méi)有安裝Jmeter,可參考以下方法:
A.Jmeter需要java運(yùn)行環(huán)境,所以需要下載JDK,JDK下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
(最好使用 JDK 8? 以上的版本蠢络,上述鏈接下可以下載最新的 JDK 版本)
B.安裝JDK,請(qǐng)參考百度教程:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
(注意java環(huán)境變量一定要配置正確)
C.下載安裝Jmeter
Jmeter下載地址:http://jmeter.apache.org/download_jmeter.cgi
Jmeter安裝流程(參考百度教程):https://jingyan.baidu.com/article/acf728fd68e7bef8e510a3cb.html
(注意Jmeter5.0版本的需要要配置環(huán)境變量熬的,且要JDK 8 及以上才行)
D.引入MD5加密所需要的jar包点寥。該jar包的名字是:commons-codec-1.13.jar,
Jmeter本身就有MD5加密的功能场钉,但是需要該jar包蚊俺,可以查看Jmeter安裝路徑下的lib文件夾在有沒(méi)有這個(gè)jar包:D:\Develop\JMeter\apache-jmeter-5.2.1\lib
如果沒(méi)有的話,網(wǎng)上下載一個(gè)放到lib文件夾下就OK了逛万。
E.永久漢化Jmeter泳猬。
找到Jmeter安裝路徑下的jmeter.properties:D:\Develop\JMeter\apache-jmeter-5.2.1\bin\jmeter.properties
用編輯器打開(kāi)(右鍵用記事本打開(kāi)也可以):找到? #language=en? ,在下面添加:language=zh_CN保存并重啟Jmeter
第二部分:編寫MD5加密-請(qǐng)求驗(yàn)簽的腳本
1.編寫該腳本需要新建的東西如下:
A.添加一個(gè)線程組:測(cè)試計(jì)劃(點(diǎn)擊 測(cè)試計(jì)劃 右鍵)——添加——線程(用戶)——線程組
B.線程組下添加一個(gè)?前置處理器BeanShell PreProcessor:線程組(點(diǎn)擊 線程組 右鍵)——添加——前置處理器——BeanShell PreProcessor
(BeanShell PreProcessor 主要是用來(lái)完成加密字符串的拼接和MD5 加密)
C.線程組下面添加一個(gè) HTTP信息頭管理器 :線程組(點(diǎn)擊 線程組 右鍵)——添加——配置元件——HTTP信息頭管理器宇植。
用于設(shè)置請(qǐng)求信息頭里面的參數(shù)暂殖。
D.線程組下添加一個(gè) HTTP請(qǐng)求:線程組(點(diǎn)擊 線程組 右鍵)——添加——取樣器——HTTP請(qǐng)求。
E.最后添加 察看結(jié)果樹(shù) 和 聚合報(bào)告? :線程組(點(diǎn)擊 線程組 右鍵)——添加——監(jiān)聽(tīng)器——?察看結(jié)果樹(shù) / 聚合報(bào)告?
察看結(jié)果樹(shù):查看我們的請(qǐng)求是否訪問(wèn)成功当纱,已經(jīng)請(qǐng)求內(nèi)容和返回內(nèi)容是否正確
聚合報(bào)告:主要是用于統(tǒng)計(jì)總的請(qǐng)求數(shù)呛每,平均請(qǐng)求時(shí)間,響應(yīng)時(shí)長(zhǎng)坡氯,Err 數(shù)晨横,Err率等數(shù)據(jù)。
2.新建腳本的結(jié)構(gòu)成功后箫柳,開(kāi)始填充腳本的內(nèi)容手形,完成腳本MD5加密功能。
A.在前置處理器BeanShell PreProcessor添加如下內(nèi)容:
(Jmeter 5 自帶 org.apache.commons.codec.digest.jar悯恍,所以只需要導(dǎo)入就可以了字符串的順序拼接規(guī)則是:按照參數(shù)的首字母库糠,對(duì)參數(shù)進(jìn)行A-Z的順序進(jìn)行排序,并拼接涮毫,可以參見(jiàn)圖中參數(shù)的排序規(guī)則)
(字符相互之間連接類似:appVersion=V1.0.0&clientType=XXX&productId=XXX&source=XXX瞬欧,注:不同公司的拼接規(guī)則不同,需詢問(wèn)開(kāi)發(fā)具體的拼接規(guī)則)
// 導(dǎo)入MD5加密需要用到的jar包罢防。
import org.apache.commons.codec.digest.DigestUtils;
// 聲明你需要拼接的字符串
String requestTime = "${__time(,)}"; //生成時(shí)間戳
String appVersion ="XXX";
String clientType ="XXX";
String productId ="XXX";
String source ="XXX";
//拼接需要加密的字符串
String str = "appVersion="+appVersion+"&clientType="+clientType+"&productId="+productId +"&requestTime="+requestTime+"&source="+source+"istarkid2018";
// 加密已拼接的字符串
String sign = DigestUtils.md5Hex(str);
vars.put("signStr",sign.toString()); //把生成的signStr提供給beanshell外部組件引用
vars.put("requestTime",requestTime.toString()); //把生成的時(shí)間戳提供給beanshell外部組件引用
vars.put("appVersion",appVersion.toString()); //把生成的版本號(hào)提供給beanshell外部組件引用
vars.put("clientType",clientType.toString()); //把生成的clientType提供給beanshell外部組件引用
代碼如下:
// 導(dǎo)入MD5加密需要用到的jar包艘虎。
import org.apache.commons.codec.digest.DigestUtils;
// 聲明你需要拼接的字符串
String httpUrl ="xxxxxxxx";
String customerCode ="xxxxxxxx";
String timestamp = "${__time(/1000,)}"; //生成時(shí)間戳
//拼接需要加密的字符串
String str = customerCode + timestamp + httpUrl;
// 加密已拼接的字符串
String sign = DigestUtils.md5Hex(str);
vars.put("signStr",sign.toString()); //把生成的signStr提供給beanshell外部組件引用
vars.put("timestamp",timestamp.toString()); //把生成的時(shí)間戳提供給beanshell外部組件引用
生成時(shí)間戳,方法較多咒吐,不同公司所用的時(shí)間戳生成方法不同野建,這點(diǎn)需要詢問(wèn)開(kāi)發(fā)具體的生成規(guī)則属划,以下提供幾種生成規(guī)則:
生成十三位時(shí)間戳:${__time(,)}
生成十位時(shí)間戳:${__time(/1000,)}
生成當(dāng)前日期,精確到天時(shí)間戳:${__time(yyyy-MM-dd,)}
生成當(dāng)前日期候生,精確到秒時(shí)間戳:${__time(YMDHMS,)}
B.HTTP信息頭輸入接口驗(yàn)簽需要驗(yàn)證的所有參數(shù):例如:sign,requesttime等同眯。根據(jù)具體情況傳入
C.在HTTP請(qǐng)求里面,添加:服務(wù)器IP唯鸭,請(qǐng)求方法嗽测,接口路徑,接口參數(shù)等值肿孵。
第三部分:執(zhí)行腳本
1.點(diǎn)擊:菜單欄上的綠色按鈕執(zhí)行唠粥,第一次新建的測(cè)試計(jì)劃會(huì)提示你先保存,把已經(jīng)建好的測(cè)試計(jì)劃保存到任意位置就可以了
2.設(shè)置并發(fā)數(shù)量停做,進(jìn)行壓測(cè)晤愧;
3.設(shè)置好后,點(diǎn)擊執(zhí)行蛉腌,進(jìn)行壓測(cè)官份,壓測(cè)完成后,可以在報(bào)告里面查看壓測(cè)結(jié)果烙丛。
聚合報(bào)告結(jié)果
以上就是一個(gè)加了MD5和驗(yàn)簽的腳本的具體流程舅巷,若有錯(cuò)誤的地方,請(qǐng)大家多多指點(diǎn)~學(xué)習(xí)鏈接