Jmeter接口測試-MD5加密-請求驗簽(完整流程)

第一部分:環(huán)境搭建--Jmeter

1.在開始進(jìn)行接口測試之前,先要確保你的Jmeter能夠正常運(yùn)行,若你還沒有安裝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,請參考百度教程: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文件夾在有沒有這個jar包:D:\Develop\JMeter\apache-jmeter-5.2.1\lib

如果沒有的話,網(wǎng)上下載一個放到lib文件夾下就OK了。

E.永久漢化Jmeter。

找到Jmeter安裝路徑下的jmeter.properties:D:\Develop\JMeter\apache-jmeter-5.2.1\bin\jmeter.properties

用編輯器打開(右鍵用記事本打開也可以):找到? #language=en? ,在下面添加:language=zh_CN保存并重啟Jmeter

永久漢化Jmeter

第二部分:編寫MD5加密-請求驗簽的腳本

Jmeter結(jié)構(gòu)

1.編寫該腳本需要新建的東西如下:

A.添加一個線程組:測試計劃(點(diǎn)擊 測試計劃 右鍵)——添加——線程(用戶)——線程組

添加線程組

B.線程組下添加一個?前置處理器BeanShell PreProcessor:線程組(點(diǎn)擊 線程組 右鍵)——添加——前置處理器——BeanShell PreProcessor

BeanShell PreProcessor 主要是用來完成加密字符串的拼接和MD5 加密

添加前置處理器

C.線程組下面添加一個 HTTP信息頭管理器 :線程組(點(diǎn)擊 線程組 右鍵)——添加——配置元件——HTTP信息頭管理器。

用于設(shè)置請求信息頭里面的參數(shù)。

添加HTTP信息頭管理器

D.線程組下添加一個 HTTP請求:線程組(點(diǎn)擊 線程組 右鍵)——添加——取樣器——HTTP請求。

添加HTTP請求

E.最后添加 察看結(jié)果樹 和 聚合報告? :線程組(點(diǎn)擊 線程組 右鍵)——添加——監(jiān)聽器——?察看結(jié)果樹 / 聚合報告?

察看結(jié)果樹:查看我們的請求是否訪問成功,已經(jīng)請求內(nèi)容和返回內(nèi)容是否正確

聚合報告:主要是用于統(tǒng)計總的請求數(shù),平均請求時間,響應(yīng)時長,Err 數(shù),Err率等數(shù)據(jù)。

添加 察看結(jié)果樹 和 聚合報告

2.新建腳本的結(jié)構(gòu)成功后,開始填充腳本的內(nèi)容,完成腳本MD5加密功能。

A.在前置處理器BeanShell PreProcessor添加如下內(nèi)容:

(Jmeter 5 自帶 org.apache.commons.codec.digest.jar,所以只需要導(dǎo)入就可以了字符串的順序拼接規(guī)則是:按照參數(shù)的首字母,對參數(shù)進(jìn)行A-Z的順序進(jìn)行排序,并拼接,可以參見圖中參數(shù)的排序規(guī)則)

(字符相互之間連接類似:appVersion=V1.0.0&clientType=XXX&productId=XXX&source=XXX,注:不同公司的拼接規(guī)則不同,需詢問開發(fā)具體的拼接規(guī)則)

// 導(dǎo)入MD5加密需要用到的jar包。

import org.apache.commons.codec.digest.DigestUtils;

// 聲明你需要拼接的字符串

String requestTime = "${__time(,)}"; //生成時間戳

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()); //把生成的時間戳提供給beanshell外部組件引用

vars.put("appVersion",appVersion.toString()); //把生成的版本號提供給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,)}"; //生成時間戳

//拼接需要加密的字符串

String str = customerCode + timestamp + httpUrl;

// 加密已拼接的字符串

String sign = DigestUtils.md5Hex(str);

vars.put("signStr",sign.toString()); //把生成的signStr提供給beanshell外部組件引用

vars.put("timestamp",timestamp.toString()); //把生成的時間戳提供給beanshell外部組件引用

生成時間戳,方法較多,不同公司所用的時間戳生成方法不同,這點(diǎn)需要詢問開發(fā)具體的生成規(guī)則,以下提供幾種生成規(guī)則:

生成十三位時間戳:${__time(,)}

生成十位時間戳:${__time(/1000,)}

生成當(dāng)前日期,精確到天時間戳:${__time(yyyy-MM-dd,)}

生成當(dāng)前日期,精確到秒時間戳:${__time(YMDHMS,)}

生成時間戳函數(shù)

B.HTTP信息頭輸入接口驗簽需要驗證的所有參數(shù):例如:sign,requesttime等。根據(jù)具體情況傳入

驗簽需要驗證的所有參數(shù)

C.在HTTP請求里面,添加:服務(wù)器IP,請求方法,接口路徑,接口參數(shù)等值。

配置HTTP請求

第三部分:執(zhí)行腳本

1.點(diǎn)擊:菜單欄上的綠色按鈕執(zhí)行,第一次新建的測試計劃會提示你先保存,把已經(jīng)建好的測試計劃保存到任意位置就可以了

保存測試計劃

2.設(shè)置并發(fā)數(shù)量,進(jìn)行壓測;

設(shè)置并發(fā)數(shù)量

3.設(shè)置好后,點(diǎn)擊執(zhí)行,進(jìn)行壓測,壓測完成后,可以在報告里面查看壓測結(jié)果。

查看結(jié)果樹

聚合報告結(jié)果

聚合報告

以上就是一個加了MD5和驗簽的腳本的具體流程,若有錯誤的地方,請大家多多指點(diǎn)~學(xué)習(xí)鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容