您好,登錄后才能下訂單哦!
一. 背景
數(shù)據(jù)驅(qū)動(dòng)Data Driven Testing(DDT),是一種用于創(chuàng)建自動(dòng)化測(cè)試的方法,或者說(shuō)是一種架構(gòu), 本質(zhì)是輸入數(shù)據(jù)和用這些數(shù)據(jù)獲取測(cè)試結(jié)果, 使測(cè)試邏輯和測(cè)試數(shù)據(jù)分離.
DDT的優(yōu)點(diǎn)是測(cè)試工程師不必為每一個(gè)輸入數(shù)據(jù)創(chuàng)建一個(gè)單獨(dú)的測(cè)試用例, 測(cè)試在一個(gè)實(shí)例中創(chuàng)建, 并且輸入測(cè)試數(shù)據(jù)和預(yù)期結(jié)果在表格文件中獲取.
二. Jmeter 數(shù)據(jù)驅(qū)動(dòng)
首先創(chuàng)建url.csv文件作為輸入測(cè)試數(shù)據(jù), 內(nèi)容如下:
以上內(nèi)容保存退出后也可以用文本編輯器編輯, 注意標(biāo)點(diǎn)符號(hào)
我是mac os, 保存目錄為/Users/louiezhou/home/url.csv
csv數(shù)據(jù)設(shè)置文件中要用到這個(gè)路徑
被測(cè)接口如下:
get方法:?https://postman-echo.com/get?foo1=bar1??
get方法:?https://postman-echo.com/get?foo2=bar2
post方法:?https://postman-echo.com/post? 入?yún)"foo1":"bar1","foo2":"bar2"}
API文檔來(lái)源:?https://docs.postman-echo.com/?version=latest#078883ea-ac9e-842e-8f41-784b59a33722
接下來(lái)到j(luò)meter里, 首先創(chuàng)建一個(gè)線(xiàn)程組
在該線(xiàn)程組下創(chuàng)建一個(gè)普通http請(qǐng)求, 命名為postman-echo_header, 用于和數(shù)據(jù)驅(qū)動(dòng)比較
添加一個(gè)循環(huán)控制器
循環(huán)數(shù)量和數(shù)據(jù)表格文件中用例數(shù)量推薦保持一致.
在循環(huán)控制器下添加csv 數(shù)據(jù)文件設(shè)置
在循環(huán)控制器下添加if 控制器,命名為if_get
jmeter 5.0 + 版本, if控制器和old version 略有不同.
此處添加if主要是判斷如果是get方法就走這個(gè)if_get控制器, 如果是post方法, 就走if_post控制器.
在if_get控制器下添加一個(gè)http請(qǐng)求
命名規(guī)則為: ${caseSeq}_${apiSeq}_${apiName}
用例編號(hào)_API版本_API名稱(chēng), 這樣命名更為直觀(guān),便于理解
?
${apiType} =https 為API請(qǐng)求協(xié)議
${host} =postman-echo.com? 在用戶(hù)自定義變量中定義
${url}=/get
${param}=? foo1=bar1
拼接完整的是: https://postman-echo.com/get?foo1=bar1??
再來(lái)看if控制器的if_post
仍然是在循環(huán)控制器下新建一個(gè)if控制器,命名為if_post
在if_post下新建一個(gè)http請(qǐng)求, 命名規(guī)則同if_get下http一致
${param}={“foo1”:”bar1”, “foo2”:”bar2”}
拼接完整的請(qǐng)求是:
https://postman-echo.com/post
POST data:
{"foo1":"bar1","foo2":"bar2"}
因?yàn)槭莗ost方式, 入?yún)⒎绞脚cget有所區(qū)別, 因此還需要在該http下聲明一個(gè)http信息管理頭
主流程到這里就完成了, 接下來(lái)看下零碎的地方
給每個(gè)http請(qǐng)求加上斷言
雖然他們的預(yù)期值都是變量${expectValue}, 但實(shí)際值是不同的
用例C001的預(yù)期值:${expectValue}: foo1=bar1
用例C002的預(yù)期值${expectValue}:foo2=bar2
用例C003的預(yù)期值${expectValue}: {“foo1”:”bar1”,”foo2”:”bar2”}
再來(lái)看下用戶(hù)自定義變量
目錄層級(jí)結(jié)構(gòu)
添加相應(yīng)的監(jiān)聽(tīng)即可執(zhí)行了.
接下來(lái)看執(zhí)行結(jié)果
在數(shù)據(jù)表格文件中還有些參數(shù)沒(méi)有用到, 比如priority字段, 可以根據(jù)需求適當(dāng)添加相應(yīng)判斷, 本篇幅僅為拋磚引玉, 如您有更好的idea, 歡迎拋過(guò)來(lái).
最后來(lái)一碗雞湯:
你現(xiàn)在的生活水平,是你三年前的工作狀態(tài)決定的;而你現(xiàn)在的努力程度,會(huì)決定你三年后的生活;軟件行業(yè)是個(gè)逆水行舟,不進(jìn)則退的行業(yè),既然選擇了這個(gè)行業(yè),那么就要努力地“敲”下去。
今日精選推薦
JMeter接口測(cè)試-if控制器
JMeter數(shù)據(jù)庫(kù)操作
Jmeter接口測(cè)試-正則表達(dá)式
JMeter中文返回亂碼
Jmeter接口測(cè)試-參數(shù)化
JMeter接口測(cè)試-基礎(chǔ)
測(cè)試-感想
咨詢(xún)工作加微信
掃描二維碼
歡迎自薦和推薦, 需要的微信推送簡(jiǎn)歷!
請(qǐng)猛戳下面二維碼了解更多
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。