接口測試相關知識(十)用ant生成測試報告和JMeter的組件介紹


1、利用ant生成測試報告

1.1什么是Ant?

首先,Ant翻譯過來是螞蟻的意思,在我們做接口測試的時候,是可以用來做JMeter接口測試生成測試報告的工具,(原理有點類似於postman生成測試報告用newman生成測試報告類型)

Ant是隸屬於Apache旗下的一個最優秀的java構建工具,其任務是驅動構建文件中描述為相互依賴的目標和擴展點的進程。
Ant的主要已知用途是構建java應用程序。Ant提供了許多內置任務,允許編譯,組裝,測試

和運行java應用程序。Ant還可以有效的構建於非java應用程序,例如C或C++應用程序

更多的說,Ant可以用於實驗任何類型的過程,這些過程可以用目標和任務來描述。

 

用最直白的話來說就是,就是JMeter整合ant可以生成HTM;的測試報告

1.1ant的下載和安裝

下載地址:https://ant.apache.org/bindownload.cgi

點擊下載地址 即可 解壓在相關目錄就可以  如下圖所示

 

 

 1.2Ant的環境搭建

因為ant是一個java庫的命令行工具,所以我們在運用ant的時候是需要進行在本地設置環境變量的

如下圖所示

 

 

 點擊環境變量

 

 

 

在系統變量中選擇Path點擊編輯

 

 

 找到ant下的bin目錄 添加到環境變量中,點擊確定

1.3驗證Ant環境是否正確搭建

在cmd控制台當中 輸入ant 

 

 

 出現上述提示 即為ant環境已經搭建成功

1.4關於build.xml

我們需要把build.xml放到指定的目錄內   如下圖所示

 

 

 1.5關於JMeter的目錄結構

我們需要在JMeter文件里創建一個新的文件夾 命名為tests 如下圖所示

 

 

tests 文件夾:是用來存放測試中所有的資料

在tests文件夾內 創建兩個新的文件夾 命名為report和script 

report文件夾:存放測試報告,里面再創建html和jtl

script文件夾:是用來存放測試的腳本

 

 

在report文件夾內創建兩個新的文件夾  分別為html和jtl文件夾 如下圖所示

 

 

這個時候我們就把所有文件給創建成功 

在我們以后的工作中   把JMeter保存的測試文件都放到script文件夾內即可 如圖所示

 

 1.6自動發送郵件插件的安裝

我們需要用到三個插件 分別為 

activation.jar

commons-email-1.2.jar

mail.jar

 

 

 

 將三個文件放在ant的lib目錄下即可

 

 

因為我們創建了新的目錄結構 所以我們前面的build.xml文件需要調整 

將build.xml文件放在JMeter文件的tests文件夾內 如下圖所示

 

 1.7關於Ant生成測試報告前的前置條件

我們需要改一下配置文件 才可以讓Ant工具正常的運行

我們先找到JMeter的bin目錄下的jmeter.properties文件 如下圖所示

 

 以記事本的方式打開,

Ctrl+F搜索jmeter.save.saveservice.output_format=csv關鍵字

將前面的注釋解除 后面改成xml的數據格式 如下圖所示

 

 1.7.1 關於build.xml的內部詳解  需要更改的配置

 

 最后一步  

在apache-jmeter的extras下找到ant-jmeter-1.1.1.jar,把它復制到ant的apache-ant-1.10.0\lib下,即可

這樣我們所有的配置都已經更改好了

可以進行接下來的生成測試報告工作了

1.8利用Ant生成HTML測試報告

在cmd控制台當中輸入ant 即可生成測試報告,如下圖所示

 

 在生成完成后 我們可以看到在JMeter文件夾內的test的report的html文件夾內 生成了一份測試報告  如下圖所示

 

 打開后如下圖所示

 

 這樣我們就完成了ant生成HTML測試報告了

 

在我們和上級領導匯報測試報告的時候要寫的數據如下

總測試用例個數 18
成功率 90%
失敗率 10%
失敗原因 自己代碼寫的不對,導致測試測試失敗
覆蓋的場景 登錄,產品管理,地址管理
結論

本次自動化測試完整的覆蓋了登錄業務,產品管理業務,地址管理業務,所有的測試場景測試通過

 

 

 

 

 

 

 

 

 

 

在配上生成的HTML測試圖就可以了

2、JMeter的組件介紹

在我們了解JMeter的組件前我們先要了解什么事JMeter執行原理是什么

JMeter是通過線程組來驅動多個(也可以理解成LR工具里面的虛擬用戶),運行測試腳本目標服務器發起大量的網絡請求,在每個客戶端上可以運行多個線程組,也就是說一個測試計划里面可以包含N個線程組

測試計划:


在JMeter的測試工具中,把測試計划可以理解成為是一個工程的目錄,也就是說每一個腳本都可以說是一個測試計划,在里面包含了很多的線程組來執行,測試計划也是JMeter腳本的根節點

2.1用戶自定義變量

2.1.1用戶自定義變量介紹

用戶自定義變量組件其實用到的也是數據驅動的思想,即為把公共的單獨分離出來,定義成變量,在后面直接調用,

舉例說明:例如登錄的用戶名和密碼

2.1.2我們怎么去添加該組件?

 

 在我們創建的線程組內  右鍵添加 配置原件里面的用戶定義變量

2.1.3我們應該怎么用該組件

創建好后 放在線程組的下一個層級內 ,將需要的值寫入到該組件內 

 

 這樣在其他測試用例想要調用該變量的話直接使用${被調用的名稱}即可,如下圖所示

 

 2.2延時等待組件

2.2.1延時等待組件介紹

因本人在學接口測試前 學習過python的ui自動化測試

在python自動化測試中有time庫     其中time.sleep()即為固定等待

那么在JMeter中延時等待組件的意思一樣  意為每自動進行一個測試用例 都會固定等待XXms

2.2.2我們怎么添加該組件?

在線程組處右鍵,選擇添加定時器當中的固定定時器

 

 固定定時器的延遲為毫秒(ms)  1秒(s)=1000毫秒(ms)

 

 

這樣在我們運行自動化測試的時候,就會每個測試用例之間等待一秒,防止接口因運行太快導致錯誤

 2.3正則表達式提取器

2.3.1正則表達式提取器介紹

在我們要處理動態的參數的時候 我們有兩種處理方式 分別為

1、json提取器(直接獲取動態參數)

2、正則表達式提取器(本次介紹的方法)

在處理正則表達式提取時候 響應數據可以放到以下網址 可以更好的看到層級關系

測試地址:https://tool.oschina.net/regex

2.3.2我們怎么添加該組件?

對請求右鍵選擇添加后置處理器的正則表達式提取器

 

 

 

2.3.3正則表達式提取器內部參數含義

 

 

 引用名稱:即為我們定義的變量

正則表達式:里面需要寫入的是  我們要獲取的動態id 其中"token":"(.*?)"

.*代表的是全部值 加個?代表的是在響應數據里面 匹配到第一個token即為停止

模板:用$$引用,如果在正則表達式中有多個正則表達式,則可以是$2$,等 表示解析第幾個值給user_id.    

舉例:$1$表示匹配到第一個值

匹配數字:0代表隨機取值,-1代表所有值,此時提取結果是一個數組,其余正整數代表第幾個匹配的內容提取出來  。

缺省值:正則匹配失敗時取得值

2.4用戶參數組件

2.4.1用戶參數組件介紹

用戶參數組件其實運用的原理就是參數化的思想,那么什么是參數化呢?

參數化可以簡單的理解為:我們一個測試點,需要多次操作,並且每次操作的數據都是不一樣的測試步驟一致,但是測試數據每次不一樣

即為相同的測試步驟 每次輸入的值不一樣   我們通過參數化來解決

2.4.2我們該怎么添加?

對線程組右鍵 選擇添加前置處理器里面的用戶參數即可

 

 

 2.4.3用戶參數組件的參數說明

 

 

 我們可以看到  用戶參數組件里有名稱和用戶  

在名稱下面寫入變量   在其他地方需要調用的時候輸入${}即可   用戶那里寫我們要輸入的值

例如我們這里需要輸入手機號進行登錄 重復兩次 用不同的手機號 即為

用戶1:1XXXXXXXXXXX

用戶2:1XXXXXXXXXXX

我們需要注意的是  因為我們輸入了兩個參數 所以我們在執行測試用例的時候

需要在線程組里的參數進行修改   如下圖所示

 

 

 2.5CSV數據文件設置組件

2.5.1CSV數據文件設置組件介紹

CSV數據文件設置組件 也用到的是數據驅動的思想  將同樣的步驟 所需要輸入不同的值 將這些值分離出來

2.5.2我們該怎么添加該組件?

對線程組右鍵選擇配置原件里的CSV Data Set Config

 

 

 2.5.3CSV數據文件設置組件的參數介紹

 

 

 文件名:即為我們要導入的數據文件路徑  

我們這里以csv和txt的文件來進行模擬操作

1XXXXXXXXXX , 123456498    
1XXXXXXXXXX , 12345698915    
         

記事本的方式如上文本進行寫入

文件編碼:UTF-8  中文編碼

變量名稱(西文逗號間隔),指的是我們要對文件內的值進行賦值變量     這里賦值給的是username和password 所以需要書寫username,password

分隔符:,指的是用什么將變量分開

2.6線程組組件

2.6.1線程組組件的介紹

線程組可以說是JMeter最重要的核心的部分 沒有線程組 就無法形成一個真正的測試用例  它是JMeter的靈魂

 

在一個測試計划(最高層級)里面可以新增線程組,線程組可以把它理解成為:模擬虛擬用戶的發起點,在線程組里面可以設置線程組,運行時間以及運行次數

2.6.2我們怎么添加該組件?

在測試計划右鍵 選擇添加線程(用戶)里面的線程組

 

 

 2.6.3線程組組件的參數介紹

 

 

 繼續:

如果有一個請求錯誤,其他的請求會繼續,不會因為有一個錯誤請求的導致其他請求終止。

啟動下一個進程循環:

如果請求出現問題,同一腳本的其他請求就都不在執行,直接執行下一個進程的信息,如登錄下一個請求是查看個人主頁,因為查看個人主頁跟登錄有依賴關系,則下個接口查看個人主頁也不會被執行

停止線程:

如果請求失敗,就會停止當前線程執行,不再繼續執行,如果線程數很多的,那么導致的結果是停止的線程會很多,處於真正運行的線程會很少,最后導致服務器的負載不夠,一般不建議勾選該選項

停止測試:

如果請求失敗,那么會停止所有的線程執行,也可以理解為停止整個測試

立即停止測試:

如果請求失敗,立即停止整個測試場景的執行

線程屬性:

線程數

一個線程可以裂解為對應一個模擬用戶,所以線程數越多,那么也就認為可以模擬的用戶數越多。

Ramp-Up時間(秒):

該屬性指的是所有線程從啟動到開始運行的時間間隔,單位是秒,也就是說所有線程在多場時間內開始,如線程數設置50,設置的秒數為5秒 則計算公式為

每秒執行線程=線程數/Ramp-Up
具體為:
如果設置的線程數為50,Ram-Up的時間為10
那么也就是說開始執行后,每秒會啟動5個線程
如果Ramp-Up設置為0,那么開始執行后,50個線程會立刻啟動。

循環次數:

循環次數可以理解為,請求的重復次數,如果選擇永遠,那么請求將一直進行,不建議這樣操作

延遲創建線程直到需要:

如50個線程數,RampUp時間是10秒,執行后線程是全部就緒的,那么就是每隔一秒啟動5個線程數

調度器:

思維調度器可以理解為設置何時開始運行。

持續時間:

測試計划持續多長時間

啟動延遲:

從當前時間延遲多長時間開始運行測試,也就是說點擊執行后,僅僅是做初始化的場景,不會執行測試,等待延遲到達后開始運行測試,執行的時間為持續時間設置的時間

2.7JMeter監聽器當中的聚合報告組件

2.7.1聚合報告組件的介紹

聚合報告是以表格的形式來顯示取樣器的結果信息,如果不同的取樣器擁有相同的名字,那么在聚合報告會顯示在一行里面,那么一般來說,聚合報告都是根據取樣器來顯示每個取樣器的執行結果信息。

2.7.2我們該怎么添加該組件?

 

 

 2.7.3聚合報告組件的參數介紹

 

 

 聚合報告的信息具體如下:

Label: 取樣器名稱
Samples: 取樣器運⾏次數
Average: 單個請求的平均響應時間
Median:50% 請求的響應時間
90%Line:90% 請求響應時間
95%Line:95% 請求響應時間
99%Line:99% 請求的響應時間
Min: 請求的最⼩響應時間
Max: 請求的最⼤響應時間
Std.Dev: 響應時間的標准⽅差
Error%: 事務錯誤率
Throughput: 吞吐率,也就是 TPS
KB/sec: 每秒數據包流量
Avg.Bytes: 平均數據流量
Received KB/sec: 每秒從服務器端接收到的數據量
SentKB/sec: 每秒從客戶端發送的請求的數量

2.8查看結果樹組件

2.8.1查看結果樹組件介紹

結果樹能夠很清晰的顯示每個取樣器執行的結果,以及每個取樣器的網絡請求信息,

可以理解成 查看測試結果

2.8.2我們怎么添加該組件?

對測試計划右鍵 選擇添加監聽器里的查看結果樹

 

 2.8.3查看結果樹組件的參數介紹

 

 在紅框處可以看到取樣器結果 請求數據以及響應數據

包括協議狀態碼  等等所有數據

2.9HTTP信息頭管理器組件

2.9.1HTTP信息頭管理器組件介紹

每個HTTP的請求都是需要請求頭信息的,那么把可以請求頭的信息添加到HTTP信息頭管理器,然后需要把它放在取樣器的前面

2.9.2我們怎么添加該組件?

在線程組處右鍵選擇添加配置元件當中的HTTP信息頭管理器

 

 2.9.3HTTP信息頭管理器組件的參數介紹

 

 在HTTP信息頭管理器組件當中  需要填寫的東西往往是根據產品后端給的代碼進行添加

如web產品 我們可以根據瀏覽器右鍵檢查當中的network 查詢到請求頭 如下圖所示

 

 2.10HTTP信息頭管理器組件

2.10.1HTTP信息頭管理器組件介紹

在系統登錄成功后需要訪問系統中的其他網絡請求,但是需要記住用戶登錄成功后的sessionID的信息,那么使用HTTP Cookie管理器就可以自動記錄下這些信息

2.10.2我們怎么添加該組件?

對線程組右鍵 選擇配置原件當中的Cookie管理器

 

 2.10.3HTTP Cookie管理器組件的參數介紹

由於HTTP Cookie管理器組件不需要在內部寫入任何東西 需放在 線程組的下一個層級

那么我們在進行登錄等相關操作時候 就會自動記錄cookie的數據

 

 2.11用戶定義的變量組件

2.11.1用戶定義的變量組件介紹

在測試中,如果某些請求參數存在變化,比如是用戶名和密碼,那么久可以單獨的獨立出來,用戶定義的變量可以很輕松的來解決這部分問題。

2.12.2我們怎么添加該組件?

在線程組右鍵選擇添加配置元件當中的用戶定義變量

 

 2.12.3用戶定義的變量參數含義

 

 在其他請求當中如果需要調用的話需要用到${}來調用 用戶定義的變量參數值

2.13HTTP請求默認值組件

2.13.1HTTP請求默認值組件含義

每個取樣器發送網絡請求的時候都是需要IP地址等信息,但是使用HTTP請求默認值可以很輕松地把請求的地址獨立出來

2.13.2我們怎么添加該組件?

在線程組處右鍵添加配置元件的HTTP請求默認值

 

 2.13.3HTTP請求默認值的參數含義

 

 其實該組件用到的也是數據驅動的思想 將IP分離到HTTP請求默認值 這樣在執行測試用例時候前面會默認添加IP

2.14簡單控制器組件

2.14.1簡單控制器組件的介紹

簡單控制器是主要控制JMeter的執行順序,它的存在使整體的測試的靈活度更高,比如接口A執行完成后得到的結果信息,經過邏輯控制器判斷之后,再執行接口B或者是接口C 一般性的而言,簡單控制器使用的最多,但是也看具體的場景進行設置

2.14.2我們怎么添加該插件?

在線程組處右鍵添加邏輯控制器當中的簡單控制器

 

 2.14.3簡單控制器組件的使用方法

他可以用在 將測試場景一一分離開 具體方式如下

 

 2.15三種斷言組件

2.15.1三種斷言組件的介紹

在做JMeter的接口測試時候 我們需要用到的是組件分別為

1、JSON/YAML斷言

2、JSON斷言

3、響應斷言

2.15.2三個斷言組件的區別

1、JSON/YAML斷言插件屬於是第三方的組件 是需要我們額外下載的  具體下載方式可參照 接口測試相關知識(九)里面有介紹    是可以處理JSON數據類型和 YAML數據類型的數據

2、JSON斷言是JMeter源生的斷言組件   只可以處理JSON數據類型

3、響應斷言也是JMeter源生的斷言組件 可以理解成模糊匹配關鍵字 應用的場景

2.16定時器組件

2.16.1定時器組件的介紹

定時器主要用來測試計划執行的過程中,定時器用來緩減線程運行,比如可以的等待三秒后再執行下一個請求的信息

2.16.2我們怎么安裝該組件?

對線程組右鍵添加定時器里的固定定時器

 

 2.16.3定時器組件的參數含義

 

 因為固定定時器需要延遲的時間為ms     1S=1000MS  按照該方法設置  則每測試一個用例會固定等待1秒 

Label: 取樣器名稱
Samples: 取樣器運⾏次數
Average: 單個請求的平均響應時間
Median:50% 請求的響應時間
90%Line:90% 請求響應時間
95%Line:95% 請求響應時間
99%Line:99% 請求的響應時間
Min: 請求的最⼩響應時間
Max: 請求的最⼤響應時間
Std.Dev: 響應時間的標准⽅差
Error%: 事務錯誤率
Throughput: 吞吐率,也就是 TPS
KB/sec: 每秒數據包流量
Avg.Bytes: 平均數據流量 后端監聽器
后端監聽器可以把 JMeter influxdb,grafana 整合起來,把性能測試過程中的數據存儲到 influxdb ,然后最后顯示
grafana 的可視化界⾯中。
查看結果樹
結果樹能夠很清晰的顯示每個取樣器執⾏的結果信息,以及每個取樣器的⽹絡請求信息 , 如下:
JMerer 配置元件
取樣器
取樣器是 JMeter 的基本單元,⼀般性的各種都是取樣器來發起的,如 HTTP 等請求。可以把它理解為⼀個獨⽴的測
試⽤例,或者說是⼀個測試場景。
配置元件
配置元件可以理解為對取樣器的各種請求進⾏輔助配置。
HTTP 信息頭管理器
每個 HTTP 的請求都是需要請求頭的信息的,那么可以把請求頭的信息添加到 HTTP 信息頭管理器,然后需要把它放
在去取樣器的前⾯。
HTTP Cookie 管理器
在系統登錄成功后需要訪問系統中的其他⽹絡請求,但是需要記住⽤戶登錄成功后的 sessionID 的信息,那么使⽤
HTTP Cookie 管理器就可以⾃動記錄下這些信息。
⽤戶定義的變量
在測試中,如果某些請求參數存在變化,⽐如是⽤戶名和密碼,那么就可以單獨的獨⽴出來,⽤戶定義的變量可以
很輕松的來解決這部分的問題。
Received KB/sec: 每秒從服務器端接收到的數據量
SentKB/sec: 每秒從客戶端發送的請求的數量


免責聲明!

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



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