最近項目中在做http協議的接口測試,其中接口請求報文數據有個字段值需要用到加密后的簽名,即出于網絡傳輸過程中,對數據安全的考慮,要對請求的數據進行特定的處理(加密),再進行請求。
剛開始由于項目趕進度的需要,選擇的做法是:讓開發寫個加密處理生成請求報文的代碼,然后每次測試發送一次請求都用eclipse跑一遍該代碼,測試數據的修改也是在代碼中變更。這樣跑一輪測試下來,測試同事都反映太累了。
jmeter中的BeanShell,可以用來調用我們的工具類對數據進行處理,然后再進行相關的請求。自己剛好以前工作中使用過,于是就利用jmeter的beanshell來解決這個問題。
解決過程:
這個需要看測試人員是否具有代碼查看的權限,如果沒有權限,直接要求開發人員把該工具類的代碼發過來即可。
在eclipse中建個Java工程,把得到的工具類代碼導進去。然后再導出成jar包。


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

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

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

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

說明:mac是需要簽名加密的字段,在BeanShell PreProcessor中主要是利用加密的工具類對報文進行加密,得到加密后的mac值,然后在接口報文中調用mac即可。
通過上述步驟腳本即可解決接口報文需要進行加密后才發送請求的測試處理。
未加密的請求結果:

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

至此,接口請求的加密處理已完成,不僅解決需通過代碼生成請求報文的繁瑣方法,還可以在此腳本的基礎上,實現數據驅動的接口自動化測試,測試小伙伴們就可以愉快的進行測試了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。