Jmeter快速上手之接口測試


1、前言

壓測工具 Jmeter 除了可以做性能測試,還可以做接口測試。當接口測試趨向於自動化方向時,就可以使用很典型的接口自動化測試框架 Jmeter + Ant + Jenkins。

本篇將講解如何快速使用Jmeter來進行接口測試。

 

2、簡介

Jmeter 是 Apache 組織開發的基於 Java 的壓力測試工具。用於對軟件做壓力測試,它最初被設計用於 Web 應用測試,但后來擴展到其他測試領域。

它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器等等。

Jmeter 可以用於對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。另外,Jmeter 能夠對應用程序做功能/回歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。為了最大限度的靈活性,Jmeter 允許使用正則表達式創建斷言。

 

官網地址:

https://jmeter.apache.org/

 

3、安裝

官網下載地址:

https://jmeter.apache.org/download_jmeter.cgi

 

下載解壓包版本即可。

 

注意:需要Java 8+ (JDK 1.8+)以上的支持。

關於 JDK 的安裝與配置,可點擊 Java-安裝 文章進行查閱。

例如本次講解系統所帶的JDK版本為1.8.0_261。

 

例如下載apache-jmeter-5.4.1.zip

 

下載完成后,解壓到自己指定的路徑里即可。

 

例如:

Windows系統,解壓到C盤根目錄下。

路徑為C:\apache-jmeter-5.4.1

 

Mac系統,解壓到/Users/wangmeng目錄下。

路徑為/Users/wangmeng/apache-jmeter-5.4.1

 

4、環境變量 

4.1、Windows環境 

【我的電腦】右鍵 ---> 屬性 ---> 高級系統設置 ---> 環境變量 ---> 系統變量

新建 JMETER_HOME 值為 C:\apache-jmeter-5.4.1

 

編輯 CLASSPATH 的變量(如果沒有則新建),值為

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar

 

編輯 PATH 新增值為 %JMETER_HOME%\bin

 

保存后,以管理員身份打開命令行,輸入jmeter -v

環境變量配置成功

 

4.2、Mac環境 

打開終端,編輯 .bash_profile 文件。

vim .bash_profile

 

添加以下配置:

export JMETER_HOME=/Users/wangmeng/apache-jmeter-5.4.1
export PATH=${PATH}:$JMETER_HOME/bin
export CLASSPATH=:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar

 

保存退出,使 .bash_profile 文件內容生效。

source ~/.bash_profile

 

重新打開終端,輸入jmeter -v

環境變量配置成功

 

5、啟動程序 

1、打開命令行或終端輸入jmeter,即可啟動程序(前提已配置成功環境變量)。

 

2、或者打開Jmeter\bin目錄下的應用程序來進行啟動。

Windows系統,雙擊jmeter.bat即可。

 

Mac系統,雙擊jmeter即可。

 

6、目錄說明 

  • backups:備份目錄,是將自己的 jmx 腳本進行備份,每次保存都會將該腳本保存到該目錄下,保存多次便會保存多個同樣的文件,文件名進行默認遞增更改。

  • bin:包含啟動、配置等相關命令。

  • bin\jmeter.properties:核心配置文件,各種配置基本在這完成。

  • docs:官方接口文檔。

  • extras:輔助庫。

  • lib:存放各種 Jmeter 核心庫的源碼 jar 包,存放自己二次開發的 jar 包。

  • lib\ext:官方提供的第三方插件。

  • LICENSE:許可說明。

  • licenses:許可證等。

  • NOTICE:簡單信息說明。

  • printable_docs:離線的幫助文檔,可以查看函數等內容。

  • README.md:官方基本介紹。

 

7、操作示例 

本篇模擬接口請求鏈接使用 moco 生成。

關於 moco 的部署與使用等,可點擊 moco 系列章節進行查閱。

 

1、添加線程組

【測試計划】右鍵 ---> Add ---> Threads(Users) ---> Thread Group

 

2、設置線程數(並發用戶數)與循環次數

本篇為接口測試講解,模擬一個用戶進行一次接口請求,所以用戶數和循環次數均為1即可。

 

7.1、Get請求 

接口請求地址:http://localhost:8083/getdemo

如圖所示:先使用Postman,訪問此接口。

GET請求,2個參數username、password

返回數據為“操作成功”

 

1、添加HTTP請求

【線程組】右鍵 ---> Add ---> Sampler ---> HTTP Request

 

填寫相關配置信息。

方式一:

  • 接口名稱:demo01

  • 協議:http

  • 服務器名稱或IP:localhost

  • 端口號:8083

  • 方法:GET

  • 路徑:/getdemo

  • 內容編碼:utf-8

  • Parameters:填寫對應的參數名與參數值

 

方式二:

  • 接口名稱:demo01

  • 協議:http

  • 服務器名稱或IP:localhost

  • 端口號:8083

  • 方法:GET

  • 路徑:/getdemo?username=admin&password=123456

  • 內容編碼:utf-8

 

2、添加響應斷言

【demo01】右鍵 ---> Add ---> Assertions ---> Response Assertion

 

輸入斷言匹配的內容。

根據示例接口,返回的文本內容若等於“操作成功”,則就算是Pass

 

3、添加斷言結果

【demo01】右鍵 ---> Add ---> Listener ---> Assertion Results

 

4、添加查看結果樹

【demo01】右鍵 ---> Add ---> Listener ---> View Results Tree

 

5、運行腳本

運行方式一:【線程組】右鍵 ---> Start

 

運行方式二:點擊運行按鈕即可。

 

6、運行結果

查看斷言結果,驗證通過,Pass

 

查看結果樹,可查看請求與響應數據,驗證通過,Pass

 

7.2、Post請求 

接口請求地址:http://localhost:8083/postdemo

如圖所示:先使用Postman,訪問此接口。

POST請求,2個參數username、password

返回數據為“操作成功”

 

1、添加HTTP請求

【線程組】右鍵 ---> Add ---> Sampler ---> HTTP Request

 

填寫相關配置信息。

  • 接口名稱:demo02

  • 協議:http

  • 服務器名稱或IP:localhost

  • 端口號:8083

  • 方法:POST

  • 路徑:/postdemo

  • 內容編碼:utf-8

  • Parameters:填寫對應的參數名與參數值

 

2、添加響應斷言

【demo02】右鍵 ---> Add ---> Assertions ---> Response Assertion

 

輸入斷言匹配的內容。

根據示例接口,返回的文本內容若等於“操作成功”,則就算是Pass

 

3、添加斷言結果

【demo02】右鍵 ---> Add ---> Listener ---> Assertion Results

 

4、添加查看結果樹

【demo02】右鍵 ---> Add ---> Listener ---> View Results Tree

 

5、運行腳本

運行方式一:【線程組】右鍵 ---> Start

 

運行方式二:點擊運行按鈕即可。 

 

6、運行結果

查看斷言結果,驗證通過,Pass

 

查看結果樹,可查看請求與響應數據,驗證通過,Pass 

 

7.3、依賴請求 

有兩個接口,接口1執行后返回的數據里有接口2需要用到的請求參數,則執行接口2時,要先執行接口1獲取返回的指定數據。

 

接口1請求地址:http://localhost:8083/demo?aaa=123&bbb=456&ccc=789

如圖所示:先使用Postman,訪問此接口。

GET請求,3個參數aaa、bbb、ccc

返回json數據為:

{

    "mystatus": "操作成功",

    "mytoken": "eyJhbGciOiJIUzI1NiJ9"

}

 

接口2請求地址:http://localhost:8083/demo2

如圖所示:先使用Postman,訪問此接口。

POST請求,請求頭有2個參數Content-Type、mytoken

返回json數據為:

{

    "mystatus": "操作成功",

    "mystatusid": "1"

}

 

發送的json串。

 

1、添加用戶參數

接口1和接口2都有參數ccc,且值都是789,可以設置為公共用戶變量,方便統一提取。

【線程組】右鍵 ---> Add ---> Pre Processors ---> User Parameters

 

填寫參數ccc與參數值789 

 

2、添加HTTP請求(接口1)

【線程組】右鍵 ---> Add ---> Sampler ---> HTTP Request

 

填寫相關配置信息。

  • 接口名稱:demo03-1

  • 協議:http

  • 服務器名稱或IP:localhost

  • 端口號:8083

  • 方法:GET

  • 路徑:/demo

  • 內容編碼:utf-8

  • Parameters:填寫對應的參數名與參數值,${ccc}為引用用戶參數ccc的值。

 

(1)添加響應斷言

【demo03-1】右鍵 ---> Add ---> Assertions ---> Response Assertion

 

輸入斷言匹配的內容。

根據示例接口1,返回的文本內容若包括所指定的“操作成功”,則就算是Pass

 

(2)添加斷言結果

【demo03-1】右鍵 ---> Add ---> Listener ---> Assertion Results

 

(3)添加查看結果樹

【demo03-1】右鍵 ---> Add ---> Listener ---> View Results Tree

 

(4)添加正則表達式提取器

用於提取接口1返回的指定數據,接口2會調用此數據。

【demo03-1】右鍵 ---> Add ---> Post Processors ---> Regular Expression Extractor

 

填寫相關正則表達式信息。

  • 引用名稱:其他地方引用時的變量名稱,這里定義為 my_token,引用方法:${引用名稱}

  • 正則表達式:數據提取器,()括號里為要獲取的值。"mytoken":"( 相當於LR的左邊界, )" 相當於LR的右邊界。而括號里 .*? 為正則表達式,"mytoken":"(.*?)" 匹配最短的,以 "mytoken":" 開始,以 " 結束的字符串。

  • 模板:用於從找到的匹配項創建字符串的模板。這是一個帶有特殊元素的任意字符串,用於引用正則表達式中的組。引用組的語法是:$1$引用組1,$2$引用組2,等等。$0$引用整個表達式匹配的內容。

  • 匹配數字:正則表達式匹配數據的所有結果可以看做一個數組,匹配數字即可看做是數組的第幾個元素。-1表示全部,0隨機,1第一個,2第二個,以此類推。若只要獲取到匹配的第一個值,則填寫1

  • 缺省值:匹配失敗時的默認值。

 

(5)添加調試后處理器

方便在調試腳本時實時查看是否正確的提取到了所要的信息。

【demo03-1】右鍵 ---> Add ---> Post Processors ---> Debug PostProcessor

 

3、添加HTTP頭管理器(接口2)

接口2有請求頭信息要進行設置,所以要添加HTTP頭管理器。

【線程組】右鍵 ---> Add ---> Config Element ---> HTTP Header Manager

 

填寫相關配置信息。

${my_token}為引用正則表達式my_token提取接口1返回的指定值。

 

4、添加HTTP請求(接口2)

【線程組】右鍵 ---> Add ---> Sampler ---> HTTP Request

 

填寫相關配置信息。

  • 接口名稱:demo03-2

  • 協議:http

  • 服務器名稱或IP:localhost

  • 端口號:8083

  • 方法:POST

  • 路徑:/demo2

  • 內容編碼:utf-8

  • Body Data:填寫對應的鍵值,${ccc}為引用用戶參數ccc的值。

        {

            "id":"1",

            "username":"test",

            "password":"123456",

            "ccc":"${ccc}"

        }

 

(1)添加響應斷言

【demo03-2】右鍵 ---> Add ---> Assertions ---> Response Assertion

 

輸入斷言匹配的內容。

根據示例接口2,返回的文本內容若包括所指定的“操作成功”,則就算是Pass

 

(2)添加斷言結果

【demo03-2】右鍵 ---> Add ---> Listener ---> Assertion Results

 

(3)添加查看結果樹

【demo03-2】右鍵 ---> Add ---> Listener ---> View Results Tree

 

5、運行腳本

運行方式一:【線程組】右鍵 ---> Start

 

運行方式二:點擊運行按鈕即可。 

 

6、運行結果

接口1,查看斷言結果,驗證通過,Pass

 

接口1,查看結果樹,可查看請求與響應數據,驗證通過,Pass 

 

接口1,查看結果樹,正則表達式所提取接口1的返回數據 

 

接口2,查看斷言結果,驗證通過,Pass 

 

接口2,查看結果樹,可查看請求與響應數據,驗證通過,Pass 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM