1. 程式人生 > >Jmeter測試上傳圖片base64編碼接口

Jmeter測試上傳圖片base64編碼接口

jmeter 上傳圖片 base64 接口測試 轉碼

最近遇到一個項目,接口中有需要上傳圖片的字段,它是以圖片base64編碼格式的形式傳遞的。(Base64目前主要用於HTML5、移動開發等不考慮IE6的場景中。)請求報文示例如下:

技術分享圖片

關於如何測試實現的問題:

1)如何對圖片進行編碼?
2)為了實現接口自動化測試,如何能實現自動base64編碼

解決方案:

方法1:利用圖片在線轉碼base64編碼網站進行編碼。
編碼網站:http://tool.css-js.com/base64.html
技術分享圖片

上傳本地圖片,根據需要勾選:“包含頭”等選項,生成圖片base64編碼即可。

缺點:測試不同的圖片時,都需要手工進行編碼,再復制編碼到接口請求報文中,無法實現自動化,測試效率低。

方法2:利用Jmeter的beanshell編寫圖片base64編碼的轉換代碼
1)編寫圖片base64編碼代碼
一般情況,開發會提供該代碼;如果沒有,也不用怕,百度一下即可,或者有代碼功底的同學可自己寫。部分代碼如下:

技術分享圖片

2)生成jar包,放置在${JMETER_HOME}\lib\ext目錄下

3)編寫beanshell,調用編碼方法進行編碼
技術分享圖片

4)參數化請求報文
技術分享圖片

實際請求報文:
技術分享圖片

此方法較好的解決了手工圖片base64編碼的問題,為後續的自動化測試提供支持。

擴展一下:如果上傳圖片不是以base64編碼的格式,即以圖片文件的方式進行發送請求報文時,該如何處理?

解決方案:利用jmeter的sampler中“同請求一起發送文件”的功能

技術分享圖片

a、點擊【同請求一起發送文件】欄目的添加按鈕;
b、點擊瀏覽按鈕,選擇一張需要上傳的圖片,地址將會自動記錄到文件名稱欄目;
c、填寫參數名稱,此處為【image】;
d、MIME類型為multipart/form-data

(註意:另外一種設置就是>為了上傳文件,還必須勾選"Use multipart/form-data for POST",然後MIME類型可根據實際情況填寫,否則request將不包含上傳的文件。)

保存該HTTP請求,並執行,查看服務器,即可發現,上面步驟選擇的圖片已經成功上傳到服務器。如需進行圖片參數化,只需對圖片的路徑進行參數化即可。

Jmeter測試上傳圖片base64編碼接口