Jmeter接口測試與數據驅動


一. 背景

數據驅動Data Driven Testing(DDT),是一種用於創建自動化測試的方法,或者說是一種架構, 本質是輸入數據和用這些數據獲取測試結果, 使測試邏輯和測試數據分離.

DDT的優點是測試工程師不必為每一個輸入數據創建一個單獨的測試用例, 測試在一個實例中創建, 並且輸入測試數據和預期結果在表格文件中獲取.

 

二. Jmeter 數據驅動

首先創建url.csv文件作為輸入測試數據, 內容如下:

以上內容保存退出后也可以用文本編輯器編輯, 注意標點符號

我是mac os, 保存目錄為/Users/louiezhou/home/url.csv

csv數據設置文件中要用到這個路徑

被測接口如下:

API文檔來源: https://docs.postman-echo.com/?version=latest#078883ea-ac9e-842e-8f41-784b59a33722

接下來到jmeter里, 首先創建一個線程組

在該線程組下創建一個普通http請求, 命名為postman-echo_header, 用於和數據驅動比較

 

添加一個循環控制器

循環數量和數據表格文件中用例數量推薦保持一致.

 

在循環控制器下添加csv 數據文件設置

在循環控制器下添加if 控制器,命名為if_get

jmeter 5.0 + 版本, if控制器和old version 略有不同.

此處添加if主要是判斷如果是get方法就走這個if_get控制器, 如果是post方法, 就走if_post控制器.

 

在if_get控制器下添加一個http請求

命名規則為: ${caseSeq}_${apiSeq}_${apiName}

用例編號_API版本_API名稱, 這樣命名更為直觀,便於理解

 

${apiType} =https 為API請求協議

${host} =postman-echo.com  在用戶自定義變量中定義

${url}=/get

${param}=  foo1=bar1

拼接完整的是: https://postman-echo.com/get?foo1=bar1  

 

再來看if控制器的if_post

仍然是在循環控制器下新建一個if控制器,命名為if_post

 

在if_post下新建一個http請求, 命名規則同if_get下http一致

${param}={“foo1”:”bar1”, “foo2”:”bar2”}

拼接完整的請求是:

https://postman-echo.com/post

POST data:

{"foo1":"bar1","foo2":"bar2"}

因為是post方式, 入參方式與get有所區別, 因此還需要在該http下聲明一個http信息管理頭

主流程到這里就完成了, 接下來看下零碎的地方

給每個http請求加上斷言

雖然他們的預期值都是變量${expectValue}, 但實際值是不同的

用例C001的預期值:${expectValue}: foo1=bar1

用例C002的預期值${expectValue}:foo2=bar2

用例C003的預期值${expectValue}: {“foo1”:”bar1”,”foo2”:”bar2”}

 

再來看下用戶自定義變量

目錄層級結構

添加相應的監聽即可執行了.

 

接下來看執行結果

 

 

在數據表格文件中還有些參數沒有用到, 比如priority字段, 可以根據需求適當添加相應判斷, 本篇幅僅為拋磚引玉, 如您有更好的idea, 歡迎拋過來.

 

最后來一碗雞湯:

你現在的生活水平,是你三年前的工作狀態決定的;而你現在的努力程度,會決定你三年后的生活;軟件行業是個逆水行舟,不進則退的行業,既然選擇了這個行業,那么就要努力地“敲”下去。

 

今日精選推薦

JMeter接口測試-if控制器

JMeter數據庫操作

Jmeter接口測試-正則表達式

JMeter中文返回亂碼

Jmeter接口測試-參數化

JMeter接口測試-基礎

測試-感想

 

 

咨詢工作加微信

掃描二維碼

 

歡迎自薦和推薦, 需要的微信推送簡歷!

請猛戳下面二維碼了解更多


免責聲明!

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



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