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的內部詳解 需要更改的配置
最后一步
這樣我們所有的配置都已經更改好了
可以進行接下來的生成測試報告工作了
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聚合報告組件的參數介紹
聚合報告的信息具體如下:
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秒