利用JMeter的beanshell進行接口的加密處理

    最近項目中在做http協議的接口測試,其中接口請求報文數據有個字段值需要用到加密後的簽名,即出於網絡傳輸過程中,對數據安全的考慮,要對請求的數據進行特定的處理(加密),再進行請求。

     剛開始由於項目趕進度的需要,選擇的做法是:讓開發寫個加密處理生成請求報文的代碼,然後每次測試發送一次請求都用eclipse跑一遍該代碼,測試數據的修改也是在代碼中變更。這樣跑一輪測試下來,測試同事都反映太累了。

     jmeter中的BeanShell,可以用來調用我們的工具類對數據進行處理,然後再進行相關的請求。自己剛好以前工作中使用過,於是就利用jmeterbeanshell來解決這個問題。

 

解決過程:

1、獲取對應接口加密的工具類,並生成jar

    這個需要看測試人員是否具有代碼查看的權限,如果沒有權限,直接要求開發人員把該工具類的代碼發過來即可。

    eclipse中建個Java工程,把得到的工具類代碼導進去。然後再導出成jar包。

wKiom1dhEhKRL_5RAAHJEtHpgO8336.png

 

wKiom1dhEjKAgFlZAACa8FTB_GI666.png

 

 

2、把jar包放到${jmeter_home}\lib\ext

    將導出的jar包放到jmeterlib\ext目錄裏。也可以不放進該目錄,然後在jmeter的測試計劃直接引用即可。

wKioL1dhE3GyObqKAAAVofVMYWc764.png

 

 

3、創建jmeter腳本

    jmeter中創建一個項目,添加一個httprequest,在這個請求裏添加一個BeanShell PreProcessor

wKioL1dhE4KxqiB7AAAg2o8temc576.png

 

     http請求中根據實際情況填寫對應的數據:

wKiom1dhEpewI3ulAADLsog90JQ610.png

 

 

    BeanShellPreProcessor中導入我們的jar包,BeanShell PreProcessor中的兩個方法是我們最常用到的:vars.get(String paramStr)vars.put(Stringkey,String value),前一個是從jmeter中獲得變量值,後一個是將數據存到jmeter變量中。

wKioL1dhE7eiHhekAAECkCFbwfI183.png

說明:mac是需要簽名加密的字段,在BeanShell PreProcessor中主要是利用加密的工具類對報文進行加密,得到加密後的mac值,然後在接口報文中調用mac即可。

 

 

4、執行jmeter腳本

     通過上述步驟腳本即可解決接口報文需要進行加密後才發送請求的測試處理。

 

未加密的請求結果:


 wKioL1dhE-GzUefdAABmQWHI0CI041.png

 

利用beanshell加密後的請求結果:


 wKioL1dhE_Sjp097AACcuJwLjac033.png

 

     

    至此,接口請求的加密處理已完成,不僅解決需通過代碼生成請求報文的繁瑣方法,還可以在此腳本的基礎上,實現數據驅動的接口自動化測試,測試小夥伴們就可以愉快的進行測試了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章