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。