更新時間:2020-04-08 來源:黑馬程序員 瀏覽量:
要實現(xiàn)Postman的數(shù)據(jù)驅(qū)動,主要分為五個大步驟
第一步:什么是數(shù)據(jù)驅(qū)動?
第二步:設(shè)計測試用例
第三步: 在Postman中編寫測試用例腳本
第四步:分析腳本,設(shè)計數(shù)據(jù)文件,并通過參數(shù)化關(guān)聯(lián)匹配數(shù)據(jù)參數(shù)
第五步:引用數(shù)據(jù)文件,執(zhí)行測試用例,實現(xiàn)數(shù)據(jù)驅(qū)動測試。推薦了解傳智播客軟件測試課程。
一. 什么是數(shù)據(jù)驅(qū)動?
目標:理解數(shù)據(jù)驅(qū)動的概念
步驟:無
執(zhí)行測試用例的過程,本質(zhì)上是執(zhí)行的不同數(shù)據(jù),不同輸入輸出的過程。所以,在計算機中,我們可以使用預先設(shè)定好的數(shù)據(jù)文件,來執(zhí)行測試用例,實現(xiàn)覆蓋測試點。
本文主要以TPshop商城的登陸接口為例,實現(xiàn)自動化測試的數(shù)據(jù)驅(qū)動登陸接口的測試。
二. 設(shè)計測試用例
目標:完成TPshop登陸接口的部分測試用例設(shè)計
步驟:分析登陸接口請求數(shù)據(jù)和響應數(shù)據(jù),設(shè)計測試用例
對登陸模塊進行單接口測試點設(shè)計測試用例,用例設(shè)計情況如下:
(注意:本文的驗證碼驗證部分,采用了萬能驗證碼 )
三. 編寫測試用例腳本
目標:使用Postman實現(xiàn)TPshop的登陸腳本編寫
步驟:
· 編寫TPshop商城的測試集和目錄結(jié)構(gòu)
·實現(xiàn)測試用例腳本
1.編寫TPshop商城的測試集
編寫TPshop商城的測試集有3個小步驟
? 新建一個測試集,名稱為TPshop商城
? 添加一個文件夾,名稱為登陸模塊
? 在登陸模塊文件夾下,新建5個文件夾,如圖所示
? 根據(jù)測試用例設(shè)計,在每個文件夾下添加獲取驗證碼接口和登陸接口,未展示部分依次類推
2.實現(xiàn)測試用例
按照我們的用例設(shè)計,主要有5個用例和1個前置條件需要實現(xiàn),用例詳情如下:
? 實現(xiàn)獲取驗證碼接口(登陸的前置條件)
? 實現(xiàn)登陸成功測試用例腳本
? 實現(xiàn)用戶名不存在測試用例腳本
? 實現(xiàn)密碼錯誤測試用例腳本
? 實現(xiàn)用戶名長度超出11位測試用例腳本
? 實現(xiàn)密碼為空測試用例腳本
登陸的前置接口:獲取驗證碼接口的實現(xiàn)
獲取驗證碼接口使用的是Get請求,只有URL的請求參數(shù),沒有請求體,請求頭不用修改,Postman默認會填寫
請求方法、請求URL截圖:
獲取驗證碼接口的斷言分析
分析返回數(shù)據(jù),發(fā)現(xiàn)返回的是一個圖片
根據(jù)HTTP協(xié)議,服務器返回的圖片數(shù)據(jù)類型一般在響應頭中查看Content-Type,如下圖所示,發(fā)現(xiàn)響應頭中的Content-Type的類型為image/png
綜上,斷言代碼可以對請求頭中的Content-Type進行斷言,判斷是否為一個圖片,可以這么寫:
設(shè)計“登陸成功”測試案例
設(shè)置請求方法,請求URL和請求體
請求頭:
請求頭需要設(shè)置為:application/x-www-form-urlencoded(其實也是點擊上圖中的x-www-form-urlencoded就能自動生成)
其他相關(guān)請求頭參數(shù)使用Postman默認設(shè)置的
登陸成功的返回值為:
根據(jù)返回值分析,可以簡單的斷言status和msg以及http響應狀態(tài)碼就可以簡單判斷是否登陸成功(這里為了簡化流程,并未判斷數(shù)據(jù)準確性)
所以斷言代碼可以按照下圖進行設(shè)計:
設(shè)計“用戶名不存在測試用例”
接下來的4個接口測試用例腳本,都是一樣的模式
設(shè)置請求頭、請求體、URL請求參數(shù)、請求方法如圖所示:
用戶名不存在的斷言代碼:
設(shè)計“密碼錯誤”測試案例
請求頭,請求體,URL請求參數(shù),請求方式:
密碼錯誤的斷言代碼:
設(shè)計“用戶名長度超出11位”測試案例
請求頭,請求體,URL請求參數(shù),請求方式:
用戶名超出11位的斷言代碼
設(shè)計密碼為空的測試案例
請求頭,請求體,URL請求參數(shù),請求方式:
密碼為空的返回值為:
密碼為空斷言代碼:
使用Collection Runner批量運行編寫的測試用例
保存后,我們在Collection Runner中運行設(shè)計的測試用例腳本
進入Collection Runner后,什么都不用改,直接點擊底部的藍色按鈕運行(注意要翻到最底部才能看見運行按鈕):
查看運行效果:
可以看到,5個測試用例,獲取驗證碼的斷言有5個;其他測試接口有15個,一共20個斷言,都測試通過了!
這樣,設(shè)計接口測試用例就完成了
四. 數(shù)據(jù)驅(qū)動
目標:使用數(shù)據(jù)文件驅(qū)動登陸接口的用例
步驟:
·分析用例數(shù)據(jù),設(shè)計數(shù)據(jù)文件
·在TPshop測試腳本中,使用參數(shù)關(guān)聯(lián)技術(shù),關(guān)聯(lián)參數(shù)到數(shù)據(jù)文件中的數(shù)據(jù)
1、分析用例數(shù)據(jù),設(shè)計數(shù)據(jù)文件
根據(jù)之前的用例設(shè)計,登陸接口中,我們需要傳入服務器的數(shù)據(jù)有3條,分別是
? username
? password
? verify_code
斷言需要校驗的數(shù)據(jù)有3條,分別是
? HTTP響應狀態(tài)碼
? status
? msg。
按照分析,我們的數(shù)據(jù)文件也需要包括這幾個參數(shù),分別用于HTTP請求的輸入和輸出后的預期結(jié)果校驗。
根據(jù)Postman數(shù)據(jù)的格式要求,可以分為CSV和Json,這里使用CSV來設(shè)計,
根據(jù)上文分析,最終得出了如圖所示的數(shù)據(jù)文件:
username:登陸的手機號碼
password:密碼
verify_code:登陸的驗證碼(萬能驗證碼)
httpresponsecode:http響應狀態(tài)碼
status:請求成功后,返回的json數(shù)據(jù)中status的值
msg:請求成功后,返回的json數(shù)據(jù)中msg的值
case_name:描述我們這一組數(shù)據(jù)的測試點
這樣我們的數(shù)據(jù)文件就設(shè)計好了,接下來,要把數(shù)據(jù)文件引入到我們的TPshop商城項目的測試腳本中。
2、在TPshop測試腳本中,使用參數(shù)關(guān)聯(lián)技術(shù),關(guān)聯(lián)參數(shù)到數(shù)據(jù)文件中的數(shù)據(jù)。
我們的目標就是把數(shù)據(jù)文件中的6個參數(shù),分別關(guān)聯(lián)到請求數(shù)據(jù)和斷言數(shù)據(jù)中,怎么做呢,這里要介紹兩個方法
? 請求參數(shù)可以通過{{var}}來引用
? 斷言中的數(shù)據(jù),由于是在Tests中寫入的腳本,并不能直接通過{{var}}來引用,所以需要引用Postman的相關(guān)API進行調(diào)用,如:pm.variables.get("var")
登陸接口請求體參數(shù)化,修改登陸接口的請求數(shù)據(jù),如圖所示:
注意參數(shù)名稱要和數(shù)據(jù)文件中的名稱保持一致
登陸接口斷言代碼(圖貼不下)
// HTTP響應狀態(tài)碼
var http_response_code = pm.variables.get("http_response_code");
// 獲取返回的status
var response_status = pm.variables.get("status");
// 獲取返回的msg
var response_msg = pm.variables.get("msg");
// 引用獲取的HTTP返回狀態(tài)碼進行斷言
pm.test("HTTP返回響應狀態(tài)碼", function () {
pm.response.to.have.status(http_response_code);
});
// 引用獲取的status的值進行斷言
pm.test("返回數(shù)據(jù)中的status值為1", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.status).to.eql(response_status);
});
// 引用獲取的msg的值進行斷言
pm.test("返回數(shù)據(jù)中的message值為登陸成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.eql(response_msg);
});
這樣,我們對登陸接口進行了改動,使其能夠讀取數(shù)據(jù)文件中的數(shù)據(jù)。
然后我們再使用Collection Runner 單獨運行登陸成功接口,查看結(jié)果
選擇登陸成功模塊運行
注意和下圖保持一致,只運行登陸成功接口
選擇數(shù)據(jù)文件
點擊下圖中的Data Select File 選擇數(shù)據(jù)文件
選擇自己構(gòu)造的數(shù)據(jù)文件:tpshop_login.csv
數(shù)據(jù)文件結(jié)構(gòu)再貼一下
選擇成功后效果:
點擊Preview查看數(shù)據(jù)(必須做,如果數(shù)據(jù)文件不能Preview則需要解決數(shù)據(jù)問題,中文亂碼也需要解決)
然后點擊運行,查看結(jié)果:
運行完后,發(fā)現(xiàn)1個登陸接口運行了5次,比我們之前設(shè)計了5個測試用例要簡便得多,這樣,我們就實現(xiàn)了通過5條數(shù)據(jù),完成5個測試點的驗證。
問題:為什么能這么做。。
答:因為Postman每次迭代,會自動讀取下一行數(shù)據(jù),所以第一次迭代,運行的是第一條:
第二次迭代運行第二條:
依次類推,直到數(shù)據(jù)讀完
總結(jié)
通過以上5個步驟,我們通過使用Postman實現(xiàn)了數(shù)據(jù)驅(qū)動測試,我們回顧一下每個步驟的作用:
第一步:理解數(shù)據(jù)驅(qū)動的概念
第二步:設(shè)計測試用例
第三步:用Postman實現(xiàn)測試用例,編寫測試腳本
第四步:實現(xiàn)數(shù)據(jù)驅(qū)動
看完大家想必已經(jīng)迫不及待想要試一試了,趕快打開Postman來試一試吧!
猜你喜歡: