Jmeter在軟體測試中的常用功能,看完你應該就會了
1、Jmeter的下載安裝
1.1 Jmeter的官方網址是:http://jmeter.apache.org/;下載最新的包到本地進行解壓,路徑按照自己的喜好自己設定;根據下圖官網的提示,Jmeter是要依賴Java8的哦,不同的版本不同,根據實際情況按照好對應的Java版本。
1.2 解壓到本地之後,一般常用的有2種方式啟動:
1.2.1
直接啟動:開啟apache-jmeter-5.3\bin\jmeter.bat 批處理檔案,就可開啟Jmeter.
1.2.2 命令列啟動:需要設定環境變數
先設定 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3
再在系統變數Path中新增: %JMETER_HOME%\bin
最後還要在CLASSPATH中新增:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.
環境變數設定完畢之後,在命名行輸入jmeter即可開啟Jmeter.
1.3 Jmeter中文顯示:初學者直接使用中文有助於很快理解很多功能;在bin目錄下開啟jmeter.properties檔案,將#language=en 的#註釋去掉,en修改為zh_CN,儲存之後重啟Jmeter。
2、Jmeter的簡單認識
2.1 測試計劃:用來描述一個效能/介面測試指令碼和場景設計,包含與本次測試所有相關的功能。也就是說,使用JMeter進行測試的所有內容都是基於一個測試計劃的。
2.2 執行緒組:每個測試需求的必備元件,用來模擬使用者併發的元件。Jmeter的每個任務都是用執行緒來處理的;
2.3 執行緒數:請求並非的數量。
Ramp-Up Period(in seconds):在多少秒內建立執行緒數中定義的所有執行緒;每秒併發數 = 執行緒數/RUP;
迴圈次數:當前執行緒組中的測試指令碼迴圈執行次數;
2.4 HTTP Request Defaults:設定http請求預設值;
2.5 HTTP Cookie Manager:像瀏覽器一樣儲存和傳送cookie;如果傳送一個http請求的響應中包含Cookie,那麼 Cookes Manager就會自動地儲存這些Cookie並在所有後來傳送到該站點的請求中使用這些Cookie值。
2.6 HTTP Header Manager:
2.7 HTTP Request:
2.8 Response Assertion(響應斷言):
2.9 Flow Control Action(請求延遲):
2.10 Uniform Random Timer(均勻隨機定時器):
2.11 View Results Tree(檢視結果樹):
3、Jmeter實現簡單的介面測試,新增響應斷言,使用百度舉例。
如下就是響應斷言,百度二下的斷言是失敗的;百度一下的斷言結果是成功的,所有未列印出來。
3.1 新增HTTP資訊頭管理器:
再此請求,執行完檢視結果樹,Request Headers中新增了Content-Type:application/json型別。
3.2、通過httpbin.org (是一個開源的,支援HTTP請求和響應的測試網站)這個專案進一步做簡單的練習。
3.2.1 post請求:
介面請求說明:
檢視結果樹:
3.2.3 put請求
4、執行緒使用者之setUp和tearDown。
4.1 平時測試當個介面時,我們使用執行緒組;而setUp和tearDown執行緒組作用等同於unittest測試框架中的setUp和tearDown。setUp執行緒組一般用於登入等,而tearDown一般用於釋放資源等。
4.2 setUp和tearDown及介面測試的練習,根據結果樹的結果看,執行順序就是按照setUp->測試執行緒組->tearDown的順序執行。
5、配置元件之CSV資料檔案配置
5.1 單執行緒讀取CSV資料檔案實現引數化
建一個如下的CSV資料:
Jmeter中CSV元件的配置:
請求介面配置:
執行結果:
5.2 邏輯控制器
5.2.1邏輯控制器之迴圈控制器
根據上個章節的結果,一個執行緒執行一次只能讀取一行,如果一次要將所有行的資料都執行,就需要使用邏輯控制器的迴圈控制器。
執行結果:
5.2.2 邏輯控制器之if控制器
第一種寫法:去掉Interpret Condition as Variable Expression?的勾選,直接寫判斷條件
第二種寫法:預設寫法(勾選Interpret Condition as Variable Expression?),使用帶有變數的表示式。
6、監聽器之檢視結果樹+斷言結果 +聚合報告+圖形結果+用表格檢視結果。
6.1.1 檢視結果樹
檢視結果樹上面的很多例子都有檢視結果樹,這裡就不做過多闡述了。
6.1.2 斷言結果
之前的章節說過斷言,這裡要講的是斷言結果儲存到本地檔案中;可以選擇需要儲存的檔案格式,有三種檔案格式,Jmeter自身的檔案格式jtl,還有xml及CSV,在工作中根據需要選擇。
開啟本地檔案,儲存的結果如下:
6.1.3聚合報告
6.1.4圖形結果
6.1.5 用表格檢視結果
7. 配置元件之使用者定義的變數+抽離公共資料
7.1 使用者自定義變數的2種方式
7.1.1第一種是手動新增元件,配置元件-->使用者自定義變數
7.1.2第二種是測試計劃內部的使用者自定義變數
7.2 引用變數,JMeter產生變數的方式有10多種,前置/後置/函式助手/CSV元件/使用者定義的變數/使用者引數/JDBC請求等等,但是,引用變數的方式只有一種。
8. 引數傳遞
在工作中介面測試的時候需要傳遞token,,此時就需要進行引數傳遞,Jmeter很方便的實現引數的傳遞,需要用到beanshell直譯器。
8.1 傳參方式
8.1.1 內建變數
8.1.2 函式助手
8.2 傳參形式
8.2.1 同執行緒組
8.2.2 跨執行緒組
8.3 以跨執行緒組舉例
第一步,使用json提取器獲取token:
第二步:使用BeanShell後置處理器將獲取的token儲存到Jmeter變數。
第三步:引用上一步的變數即可。
最後,檢視結果樹:傳遞token值成功。
9. 後置處理器
9.1 json提取器
jSON 後處理器使您能夠使用 JSON-PATH 語法從 JSON 響應中提取資料。此後處理器與正規表示式提取器非常相似。它必須作為 HTTP 取樣器或任何其他具有響應的取樣器的子級放置.
可以在檢視結果樹裡面進行除錯。
9.2 正規表示式提取器
使用 Perl 型別的正規表示式(不過多贅述正規表示式的型別)從伺服器響應中提取值。作為後處理器,此元素將在其作用域中的 請求之後執行,應用正規表示式、提取請求的值、生成模板字串並將結果儲存到給定的變數名稱中。
在檢視結果樹種進行除錯:
9.3 邊界提取器
允許使用者使用左和右邊界從伺服器響應中提取值。作為後處理器,此元素將在其作用域中的每個取樣器請求之後執行,測試邊界、提取請求的值、生成模板字串並將結果儲存到給定的變數名稱中。
在檢視結果樹種除錯:
9.4 其他提取器:
//CSS提取器
https://jmeter.apache.org/usermanual/component_reference.html#CSS_Selector_Extractor
//XPath提取器
https://jmeter.apache.org/usermanual/component_reference.html#XPath2_Extractor
//結果狀態操作處理程式
https://jmeter.apache.org/usermanual/component_reference.html#Result_Status_Action_Handler
9.5 Json提取器+正規表示式提取器+邊界提取器的應用
退出介面使用新增介面的響應資料,使用關聯引數:
檢視結果樹:
10. 前置處理器
前置處理器主要用來處理請求前的一些準備工作,比如引數設定、環境變變數設定、加密等操作。本章介紹最常用的2種前置處理器。
10.1 JDBC預處理程式
平時在我們做測試的過程的常用場景有:第一,準備了大量的測試資料,CSV檔案使用不方便,就放到資料庫裡,那麼,測試之前需要把測試資料讀取出來;第二,介面引數比較多,一個一個入參比較麻煩,從庫裡匯出準確資料,然後進行修改調整;
10.1.1 JDBC連線說明
由於Jmeter預設沒有提供MySQL的驅動,所以要自行下載,將下載好的驅動放到:lib-->ext目錄下。
10.1.2 連線示例
地址寫法:
// jdbc:資料庫型別://地址
jdbc:mysql://127.0.0.1:3306
連線資料庫,這個步驟要注意:SQL語句和型別是否對應。
示例:
10.2 BeanShell預處理程式
BeanShell 這個在調整亂碼的時候用到過,大家已經知道這個元件就是編寫Java程式碼的了,這個元件的使用場景有哪些?最直接的,介面資料加密(執行測試用例之前進行加密),常見的加密方式如下:
加密前:
加密後:
11. 常用斷言
11.1 json斷言
JSON斷言元件適用於返回資料是JSON格式的,對JSON 文件執行驗證。首先,它將解析 JSON,如果資料不是 JSON,它將失敗。JSON斷言有兩種匹配規則:
a. 使用JsonPath的語法搜尋指定的路徑。如果未找到路徑,它將失敗。
b.如果在文件中找到 JSON 路徑,並且請求對預期值進行驗證,它將執行驗證。對於null值,GUI 中有一個特殊的核取方塊。
11.2 大小斷言
大小斷言測試每個響應中包含正確的位元組數。可以指定大小等於、大於、小於或不等於給定的位元組數。
12.生成HTML報告
Jmeter生成測試報告有2種方式,GUL生成和CLI生成。
12.1 GUL生成
jmeter3.0 版本之後開始支援動態生成測試報表(3.0版本的Dashboard Report模組會中文亂碼),GUI 模式下,效能測試的結果往往誤差很大,因為 GUI 本身就會消耗一部分資源,所以不會使用GUI生成測試報告;功能測試下,通常只看察看結果樹,執行是否正確,然後就把指令碼拋到整合工具上了,也不會使用GUI生成測試報告。
開啟位置
12.2 CLI生成
PS D
:\apache
-jmeter
-5.3\test
> jmeter
-n
-t test
.jmx
-l result
.jtl
-e
-o html
//命令
Creating summariser
<summary
>
Created the tree successfully using test
.jmx
Starting standalone test
@Fri Jun
2611:02:51
CST
2020(1593140571507)
Waiting
forpossible Shutdown
/StopTestNow
/HeapDump
/ThreadDump message on port
4445
summary
+11
in
00:00:08
=
1.3/
s Avg
:729
Min
:1
Max
:1107
Err
:4
(36.36%)
Active
:1
Started
:3
Finished
:2
summary
+7
in
00:00:05
=
1.6/
s Avg
:637
Min
:1
Max
:913
Err
:2
(28.57%)
Active
:0
Started
:1
Finished
:1
summary
=18
in
00:00:13
=
1.4/
s Avg
:693
Min
:1
Max
:1107
Err
:6
(33.33%)
Tidying up
...@
Fri Jun
2611:03:04
CST
2020(1593140584695)
由於測試報告是一個檔案,建議和配套的HTTP伺服器使用,把報告放到服務上。
生成的報告:
生成的測試報告(自帶的是效能測試報告,附帶很多資訊),官網詳解:
https://jmeter.apache.org/usermanual/generating-dashboard.html
1.2 解壓到本地之後,一般常用的有2種方式啟動:
1.2.1
直接啟動:開啟apache-jmeter-5.3\bin\jmeter.bat 批處理檔案,就可開啟Jmeter.
1.2.2 命令列啟動:需要設定環境變數
先設定 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3
再在系統變數Path中新增: %JMETER_HOME%\bin
最後還要在CLASSPATH中新增:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.
環境變數設定完畢之後,在命名行輸入jmeter即可開啟Jmeter.
1.3 Jmeter中文顯示:初學者直接使用中文有助於很快理解很多功能;在bin目錄下開啟jmeter.properties檔案,將#language=en 的#註釋去掉,en修改為zh_CN,儲存之後重啟Jmeter。