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
- 驗證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
- 驗證jmeter安裝是否成功
jmeter -v
-
最終效果
創(chuàng)建jmeter腳本
1. 新建線程組 Thread Group:
線程數(shù) 相當于 虛擬用戶數(shù)。一個測試計劃可以有多個線程組
- 測試計劃--》添加--》Treads--》線程組
- Ramp-Up Period: 準備時長,設(shè)置的虛擬用戶數(shù)需要多長時間全部啟動 鹅巍。 則 5s/10線程數(shù) 即每隔 0.5s啟動另一個線程
- loop:每個線程發(fā)送請求的次數(shù)唠雕。一個HTTP請求20次,如果是2個HTTTP請求則一共的請求20+20=40次
2. 添加 HTTTP 請求:
- 線程組--》添加--》Sampler--》HTTP請求
- 跟隨重定向:即遇到302會重定向到Location
- Body Data:注意HTTP POST請求中Body Data默認傳遞的格式是Content-Type: application/x-www-form-urlencoded贾漏,如果需要傳遞json,需要添加配置元件指定Content-Type: application/json
3. 添加配置元件
- 線程組--》添加--》配置元件
-
HTTP信息頭管理器
: 添加headers請求頭參數(shù)藕筋。
- 在整個測試計劃下添加HTTP信息頭管理器纵散,設(shè)置User-Agent為瀏覽器。因為有些服務(wù)器會拒絕工具的HTTP請求隐圾,即User-Agent為Apache-HttpClient的請求伍掀。
-
HTTP Cookie管理器
:之后的請求會帶上前面請求獲得的Cookies。以這種自動收集的方式收集到的cookie不會在Cookie Manager中進行展示暇藏,但是運行后蜜笤,通過:查看結(jié)果樹(監(jiān)聽器)可以查看到cookie信息
- 對于JMeter來說,一個測試計劃只能有一個cookie管理器
4. 參數(shù)化盐碱,使用${}訪問變量
4.1 添加用戶自定義變量
- 步驟: 配制元件--》用戶定義的變量
-
根據(jù)變量的作用域決定元件應(yīng)該添加在何處把兔。
- 注意:值如果由冒號的話會被識別為數(shù)組,例如:"192.168.1.1:5000"瓮顽,最終獲取到的值是[192.168.1.1:5000]是一個數(shù)組了垛贤。。趣倾。
4.2 CSV數(shù)據(jù)文件設(shè)置
- 步驟:添加--》配置元件--》CSV數(shù)據(jù)文件設(shè)置聘惦。
-
變量作用域依據(jù)所處位置有所不同。
- 如果csv文件首航為變量名儒恋,則忽略首行需設(shè)置為True善绎。
- 遇到文件結(jié)束符再次循環(huán)設(shè)置為False,則運行到文件末尾之后诫尽,不再循環(huán)取數(shù)據(jù)禀酱。
- 遇到文件結(jié)束符停止線程設(shè)置為True,則運行到文件末尾之后牧嫉,線程停止運行剂跟。
4.3 隨機數(shù)字
- 點擊“函數(shù)助手”
4.4 隨機字符串
4.5 csv函數(shù)
- 一個線程一條數(shù)據(jù),固定不變
5. 為HTTP請求的結(jié)果添加斷言酣藻,即設(shè)置檢查點
- HTTP請求添加----》斷言---》響應(yīng)斷言曹洽。
- 響應(yīng)文本Response body,響應(yīng)代碼Response code辽剧,響應(yīng)信息Response message
6. 查看斷言結(jié)果
- 元件右鍵添加---》監(jiān)聽器----》斷言結(jié)果送淆。
- 可以在HTTP請求下添加單個斷言結(jié)果也可以為整個線程組添加斷言展示所有的斷言結(jié)果。
-
斷言通過直接顯示HTTP請求的名稱不通過會有提示
7. 添加關(guān)聯(lián)
所謂關(guān)聯(lián)怕轿, 就是第二個Request, 使用第一個Request中的數(shù)據(jù)偷崩。
- 前置處理器: 在HTTP前執(zhí)行
- 后置處理器: 在HTTP請求之后執(zhí)行
7.1 JSON提取器
添加--》后置處理器--》JSON Extractor
-
變量作用域為:當前線程組當前請求之后的所有請求
對于接口返回的結(jié)構(gòu)為json時辟拷,可以通過JSON提取器提取想要的值。
使用
$
表示json文件的根阐斜∩蓝常可以通過察看結(jié)果樹中的JSON Path展示方式測試,例如獲取下圖的token:$.token
谒出,獲取id:$.user_info.id
-
$.data.user[0].id
表示獲取第一個元素羽杰,$.data.user[*].id
表示獲取所有元素
7.2 正則表達式提取器
- HTTP請求添加---》后置處理器---》 正則表達式提取器,
()
括起來的部分就是要提取的到推。 - 模板:表示使用提取到的第幾個值考赛,用
$n$
引用起來,如果在正則表達式中有多個正則表達式(即多個括號括起來的東東)莉测,$-1$
:表示取所有值颜骤,$0$
:表示隨機取值,$1$
表示解析到的第1個值
8. 運行線程組,查看結(jié)果樹
- Sampler--》添加---》監(jiān)聽器---》查看結(jié)果樹
- 點擊工具欄的掃帚,用于清空結(jié)果樹