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接口測試-基礎

測試-感想



諮詢工作加微信

掃描二維碼


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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章