性能測試:Jmeter-Beanshell請求加密實例

進行性能測試時,有可能遇到一種場景:接口請求因爲安全問題,須要進行加密發送。html

這種場景下,使用Jmeter實現性能測試,則也須要使用一樣的加密規則發送請求報文。java

要實現此類性能測試有幾種策略:json

  1. 直接去除密文規則 - 因爲報文加密並不是性能關鍵,那麼簡單起見,直接測試明文請求必定程度上是能夠接受的。
  2. 使用一樣的加密規則加密報文發送 - 這樣處理顯然更接近實際場景,因此是通常比較推薦的作法。

本文討論使用Jmeter發送加密請求實現性能測試。api

 

1. 打包加密方法Jar包,導入Jmeter

首先,確認被測產品的加密策略。安全

這個過程應該經過閱讀接口定義文檔,詢問開發人員,輔以抓包解析。app

好比說,對於建立訂單接口的抓包結果:工具

請求報文:性能

POST https://ops.********.cn/***-api/member/system/login HTTP/1.1
Accept-Language: zh-CN,zh;q=0.8
User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; Redmi 4A Build/MMB29M) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
token: 90e76710e105b217d185832057220cdd
appCode: ******
compCode: ****
Content-Type: application/x-www-form-urlencoded
Content-Length: 99
Host: ops.********.cn
Connection: Keep-Alive
Accept-Encoding: gzip測試

account=*********&password=2ac9cb7dc02b3c0083eb70898e549b63&sign=4b9932154067b4a35bd4c2e9eba8036fui

以上的請求能夠分析得出,加密的部分主要是password參數以及驗籤碼sign(本例中是對請求參數部分加密,實際上總體報文加密可能更常見)。

 

而後,咱們須要準備相應的加密方法。

這裏推薦讓開發人員直接給出產品原始的加密方法,予以導出造成jar包,以保證性能測試的加密方法與產品原始加密規則一致。

或者若是明確加密方式,也可使用第三方加密jar包,或者本身編寫。這裏更推薦第一種,與開發協調取得。

 

最後,將準備好的jar包,導入Jmeter測試計劃當中。

 

  

2. 加密參數

使用BeanShellPreProcessor,實現對請求的加密。

思路是:

  1. 導入使用第一步中的jar包做爲加密工具庫
  2. 使用特定密鑰,對須要加密的字段進行加密處理
  3. 將加密後的字段存儲爲變量,供接口調用使用。

BeanShell代碼以下:

import cn.hutool.json.JSONUtil; import com.***.controller.HttpClientUtil; import com.***.encrypt.EncryptUtil; import com.***.encrypt.gmhelper.MD5Util; import java.util.HashMap;//設置密鑰
   String signKey = "47fbbbd********0b8d7378"; //讀取用戶帳戶變量
   String useraccount = vars.get("user"); String pass = vars.get("pass"); //加密處理
   paramMap = new HashMap(); String password = MD5Util.encrypt(pass); paramMap.put("account", useraccount); paramMap.put("password", password); String sign = EncryptUtil.md5sign1(paramMap, signKey).toLowerCase(); //將加密後的參數存儲爲變量
   vars.put("password",password); vars.put("sign",sign)

 隨後,只要在接口請求當中,使用變量的形式傳參,便可實現請求報文部分加密傳送。

調用接口發送請求,驗證得知報文加密已實現:

 

同理能夠實現多個不一樣接口的請求加密過程,總體Jmeter項目構成以下:

 

原文出處:https://www.cnblogs.com/dayu2019/p/11608432.html

相關文章
相關標籤/搜索