JMeter下載安裝
JMeter版本:4.0
Linux上安裝jmeter
- 安裝jdk
wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz
tar -xzvf jdk-8u201-linux-x64
- 配置java環(huán)境變量
- 編輯文件
sudo vim /etc/profile
- /etc/profile文件末尾加上如下配置
# java env
export JAVA_HOME=/usr/local/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
- 生效配置
source /etc/profile
- 驗(yàn)證java環(huán)境安裝
java -version
- 安裝jmeter 4.0
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-4.0.tgz
tar -xzvf apache-jmeter-4.0
- 配置jmeter環(huán)境變量
sudo vim /etc/profile
- 文件末尾加上如下行
export PATH=$PATH:/usr/local/apache-jmeter-4.0/bin
- 生效配置
source /etc/profile
- 驗(yàn)證jmeter安裝是否成功
jmeter -v
-
最終效果
image.png
創(chuàng)建jmeter腳本
1. 新建線程組 Thread Group:
線程數(shù) 相當(dāng)于 虛擬用戶數(shù)。一個(gè)測試計(jì)劃可以有多個(gè)線程組
- 測試計(jì)劃--》添加--》Treads--》線程組
- Ramp-Up Period: 準(zhǔn)備時(shí)長,設(shè)置的虛擬用戶數(shù)需要多長時(shí)間全部啟動(dòng) 。 則 5s/10線程數(shù) 即每隔 0.5s啟動(dòng)另一個(gè)線程
- loop:每個(gè)線程發(fā)送請求的次數(shù)。一個(gè)HTTP請求20次,如果是2個(gè)HTTTP請求則一共的請求20+20=40次
2. 添加 HTTTP 請求:
- 線程組--》添加--》Sampler--》HTTP請求
- 跟隨重定向:即遇到302會重定向到Location
- Body Data:注意HTTP POST請求中Body Data默認(rèn)傳遞的格式是Content-Type: application/x-www-form-urlencoded,如果需要傳遞json,需要添加配置元件指定Content-Type: application/json
3. 添加配置元件
- 線程組--》添加--》配置元件
-
HTTP信息頭管理器: 添加headers請求頭參數(shù)。
- 在整個(gè)測試計(jì)劃下添加HTTP信息頭管理器,設(shè)置User-Agent為瀏覽器。因?yàn)橛行┓?wù)器會拒絕工具的HTTP請求,即User-Agent為Apache-HttpClient的請求。
-
HTTP Cookie管理器:之后的請求會帶上前面請求獲得的Cookies。以這種自動(dòng)收集的方式收集到的cookie不會在Cookie Manager中進(jìn)行展示,但是運(yùn)行后,通過:查看結(jié)果樹(監(jiān)聽器)可以查看到cookie信息
- 對于JMeter來說,一個(gè)測試計(jì)劃只能有一個(gè)cookie管理器
4. 參數(shù)化,使用${}訪問變量
4.1 添加用戶自定義變量
- 步驟: 配制元件--》用戶定義的變量
-
根據(jù)變量的作用域決定元件應(yīng)該添加在何處。
image.png - 注意:值如果由冒號的話會被識別為數(shù)組,例如:"192.168.1.1:5000",最終獲取到的值是[192.168.1.1:5000]是一個(gè)數(shù)組了。。。
4.2 CSV數(shù)據(jù)文件設(shè)置
- 步驟:添加--》配置元件--》CSV數(shù)據(jù)文件設(shè)置。
-
變量作用域依據(jù)所處位置有所不同。
CSV數(shù)據(jù)文件設(shè)置 - 如果csv文件首航為變量名,則忽略首行需設(shè)置為True。
- 遇到文件結(jié)束符再次循環(huán)設(shè)置為False,則運(yùn)行到文件末尾之后,不再循環(huán)取數(shù)據(jù)。
- 遇到文件結(jié)束符停止線程設(shè)置為True,則運(yùn)行到文件末尾之后,線程停止運(yùn)行。
4.3 隨機(jī)數(shù)字
- 點(diǎn)擊“函數(shù)助手”
4.4 隨機(jī)字符串
4.5 csv函數(shù)
- 一個(gè)線程一條數(shù)據(jù),固定不變
5. 為HTTP請求的結(jié)果添加斷言,即設(shè)置檢查點(diǎn)
- HTTP請求添加----》斷言---》響應(yīng)斷言。
- 響應(yīng)文本Response body,響應(yīng)代碼Response code,響應(yīng)信息Response message

輸入圖片說明
6. 查看斷言結(jié)果
- 元件右鍵添加---》監(jiān)聽器----》斷言結(jié)果。
- 可以在HTTP請求下添加單個(gè)斷言結(jié)果也可以為整個(gè)線程組添加斷言展示所有的斷言結(jié)果。
-
斷言通過直接顯示HTTP請求的名稱不通過會有提示
輸入圖片說明
7. 添加關(guān)聯(lián)
所謂關(guān)聯(lián), 就是第二個(gè)Request, 使用第一個(gè)Request中的數(shù)據(jù)。
- 前置處理器: 在HTTP前執(zhí)行
- 后置處理器: 在HTTP請求之后執(zhí)行
7.1 JSON提取器
添加--》后置處理器--》JSON Extractor
-
變量作用域?yàn)椋寒?dāng)前線程組當(dāng)前請求之后的所有請求
image.png 對于接口返回的結(jié)構(gòu)為json時(shí),可以通過JSON提取器提取想要的值。
使用
$表示json文件的根??梢酝ㄟ^察看結(jié)果樹中的JSON Path展示方式測試,例如獲取下圖的token:$.token,獲取id:$.user_info.id-
$.data.user[0].id表示獲取第一個(gè)元素,$.data.user[*].id表示獲取所有元素
JSON Path Tester
7.2 正則表達(dá)式提取器
- HTTP請求添加---》后置處理器---》 正則表達(dá)式提取器,
()括起來的部分就是要提取的。 - 模板:表示使用提取到的第幾個(gè)值,用
$n$引用起來,如果在正則表達(dá)式中有多個(gè)正則表達(dá)式(即多個(gè)括號括起來的東東),$-1$:表示取所有值,$0$:表示隨機(jī)取值,$1$表示解析到的第1個(gè)值
image.png
8. 運(yùn)行線程組,查看結(jié)果樹
- Sampler--》添加---》監(jiān)聽器---》查看結(jié)果樹
- 點(diǎn)擊工具欄的掃帚,用于清空結(jié)果樹






