jmeter脫坑指南

由于公司架構(gòu)升級,之前的測試方法跟不上開發(fā)進(jìn)度需要,所以使用jmeter做自動化接口測試。為配合后階段的回歸測試,jmeter選用3.0版本。此筆記旨在記錄3.0中的一些坑,日常如何使用不再記錄。

數(shù)據(jù)庫外置

jmeter做自動化時,同一個腳本根據(jù)不同的環(huán)境會有不同的數(shù)據(jù)庫配置,為避免頻繁的修改腳本,將數(shù)據(jù)庫鏈接作為單獨(dú)的腳本外置之后會方便很多。

數(shù)據(jù)庫外置的實(shí)現(xiàn)是通過將數(shù)據(jù)庫配置信息單獨(dú)作為一個腳本存在,在需要引用的腳本中引入即可。

數(shù)據(jù)庫外置腳本:

線程組-->配置元件-->JDBC Connection Configuration(填寫必要的數(shù)據(jù)庫配置信息,Variable Name與引用腳本中JDBC Request的Variable Name名稱保持一致)

主腳本(引用數(shù)據(jù)庫的腳本):

線程組-->邏輯控制器-->Include Controller(文件名處傳入數(shù)據(jù)庫腳本路徑)

文件上傳

文件上傳提供了單張和批量兩個接口,使用數(shù)據(jù)流和MultipartFile(multipart/form-data)方式實(shí)現(xiàn)。下述方式方式實(shí)現(xiàn)基于圖片格式(jpg、png、pdf、zip)。

數(shù)據(jù)流

線程組-->HTTP請求-->HTTP請求體(Files Upload)

Files Upload參數(shù):

文件名稱:要上傳文件的路徑(絕對路徑,這里的路徑可以進(jìn)行參數(shù)化進(jìn)行傳遞,數(shù)據(jù)更改腳本修改量少)

參數(shù)名稱:

代碼中實(shí)現(xiàn)文件上傳的參數(shù)(可以使用抓包工具抓取,這里不需要參數(shù),參數(shù)名稱為空)

MIME類型:

| MIME 類型? ? | 圖片類型? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| ------------- | ------------------------------------ |

| image/gif? ? | GIF 圖片 (無損耗壓縮方面被PNG所替代) |

| image/jpeg? ? | JPEG 圖片? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| image/png? ? | PNG 圖片? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| image/svg+xml | SVG圖片 (矢量圖)? ? ? ? ? ? ? ? ? ? |

其他類型

MultipartFile

MultipartFile的實(shí)現(xiàn)和數(shù)據(jù)流基本一致,只是Files Upload中參數(shù)名稱為file,多個文件添加多個參數(shù)即可。

文件名稱參數(shù)化

在代碼提交回歸腳本時,我們的腳本通常不是存放在本地,而是上傳服務(wù)器,觸發(fā)流水線去自動執(zhí)行,文件的路徑就只能去獲取服務(wù)器的路徑。我們可以通過參數(shù)化文件名稱去實(shí)現(xiàn)。

Files Upload中文件名稱參數(shù)化通過自定義變量和BeanShell Sampler 調(diào)用FileServer來實(shí)現(xiàn)。

自定義變量中定義文件相對于腳本文件的相對路徑,F(xiàn)ileServer獲取當(dāng)前腳本的絕對路徑,拼接實(shí)現(xiàn)文件訪問的絕對路徑(具體拼接方式以自定義變量的路徑和腳本路徑相對位置為準(zhǔn))。

實(shí)例目錄層級:

- folder

? - csv

? ? - test.jpg

? - script

? ? - xxx.jmx

自定義變量:

| 名稱? ? | 值? ? ? ? ? ? ? | Description |

| ------- | --------------- | ----------- |

| imgfile | ../csv/test.jpg |? ? ? ? ? ? |

BeanShell Sampler:

import org.apache.jmeter.services.FileServer;

//獲取當(dāng)前腳本路徑

String baseDir = FileServer.getFileServer().getBaseDir();

//拼接腳本路徑和文件路徑

String imgFilePath = baseDir + "/" +? vars.get("imgfile");

//賦值傳遞

vars.put("imgFilePath", imgFilePath);

最后編輯于
?著作權(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)容