1.單接口測(cè)試
1.1 參數(shù)校驗(yàn)
根據(jù)接口文檔,進(jìn)行業(yè)務(wù)參數(shù)的校驗(yàn)
1.1.1 單個(gè)參數(shù)校驗(yàn)
隨機(jī)型:在指定范圍或指定長(zhǎng)度內(nèi)任意取值
枚舉型:依次取每一個(gè)值田晚,例如會(huì)籍卡卡種(plus聯(lián)名卡蛔六、站內(nèi)尊享、站內(nèi)純享等)、會(huì)員級(jí)別(V0-V5)
邊界值:對(duì)取值范圍內(nèi)的最大湿滓、最小敌厘、最大+1台猴、最小-1取值
異常值:null、類(lèi)型最大值和最小值、空字符(常見(jiàn)饱狂,非空校驗(yàn))
默認(rèn)值:對(duì)某些非必填參數(shù)曹步,采用默認(rèn)值
非法值:類(lèi)型不匹配、超出類(lèi)型范圍休讳、超出操作系統(tǒng)限制讲婚、系統(tǒng)關(guān)鍵字
1.1.2 多個(gè)參數(shù)組合校驗(yàn)
參數(shù)與參數(shù)之間有業(yè)務(wù)關(guān)聯(lián)時(shí),需組合校驗(yàn)俊柔,例如第三方會(huì)員直充接口:
"accountType": 0, //1=手機(jī)號(hào)筹麸,2=pin,3=身份證號(hào)
"account": "", //賬號(hào)
組合校驗(yàn):accountType=1時(shí)婆咸,account校驗(yàn)1開(kāi)頭的11位數(shù)字竹捉;
accountType=2時(shí),account僅做非空校驗(yàn)尚骄;
accountType=3時(shí)块差,account校驗(yàn)18-20位數(shù)值;
accountType=4時(shí)倔丈,accountType為非法值憨闰。
1.2接口調(diào)用成功
1.2.1 查詢(xún)接口
查詢(xún)接口,調(diào)用成功腳本必須覆蓋需五;
可固定入?yún)in或者從上游接口的返回?cái)?shù)組中取數(shù)查詢(xún)驗(yàn)證
1.2.2 操作接口
操作接口往往無(wú)法單接口調(diào)用成功鹉动,依據(jù)情況看是否要覆蓋調(diào)用成功腳本:
例:線(xiàn)上環(huán)境部分操作接口不適合做自動(dòng)化調(diào)用,適合前臺(tái)頁(yè)面操作宏邮;
有些操作接口可以用上下接口串聯(lián)的形式泽示,達(dá)到接口調(diào)用成功的效果,示例見(jiàn)2
后置操作:
操作接口的調(diào)用成功腳本蜜氨,需要編輯后置操作:
例:新增地址操作成功后械筛,加上刪除該地址的后置操作,否則新增接口腳本長(zhǎng)期回歸后飒炎、同一測(cè)試pin下地址會(huì)冗余埋哟,還會(huì)達(dá)到地址上限而新增失敗
- 多接口串聯(lián)測(cè)試(業(yè)務(wù)流測(cè)試)
將上下多個(gè)接口串聯(lián),模擬真實(shí)場(chǎng)景的業(yè)務(wù)流測(cè)試郎汪;
上一個(gè)接口的返回值赤赊,作為下一個(gè)接口的入?yún)ⅲㄔO(shè)置變量)請(qǐng)求;
操作接口后面往往需要加“等待時(shí)間:Thread.sleep(300)”再請(qǐng)求下一個(gè)接口煞赢。
場(chǎng)景一:刪除收貨地址
接口調(diào)用步驟
給指定測(cè)試pin新增一個(gè)收貨地址 → 查詢(xún)?cè)損in收貨地址列表 → 取返回值的第一個(gè)收貨地址id作為刪除地址接口入?yún)⑴准疲瑒h除該地址
優(yōu)點(diǎn)
如果僅對(duì)刪除收貨地址接口進(jìn)行固定入?yún)⒌慕涌趫?zhí)行,該腳本無(wú)法復(fù)用照筑,接口無(wú)法刪除一個(gè)已被刪除的地址id
場(chǎng)景二:取消售后申請(qǐng)
接口調(diào)用步驟
選取指定測(cè)試pin可申請(qǐng)售后的訂單號(hào) → 申請(qǐng)售后 → 查詢(xún)售后申請(qǐng)列表查詢(xún) → 選取第一條返回結(jié)果爷辱,取消售后申請(qǐng)
注意點(diǎn)
1° 訂單號(hào)選電器等保修期長(zhǎng)的訂單录豺,可保證較長(zhǎng)效期內(nèi)該腳本可復(fù)用
2° 提交售后申請(qǐng)需要調(diào)售后中臺(tái)朦肘,故在申請(qǐng)售后腳本后面饭弓,需要加3秒等待時(shí)間再進(jìn)行下一步操作
3.斷言(期望結(jié)果)
一個(gè)完整的接口測(cè)試,包括:請(qǐng)求->獲取返回結(jié)果→斷言媒抠,斷言是接口自動(dòng)化中至關(guān)重要的一個(gè)環(huán)節(jié)弟断,用于驗(yàn)證測(cè)試用例是否執(zhí)行通過(guò)。
如果斷言寫(xiě)的過(guò)于簡(jiǎn)單趴生,如僅校驗(yàn)響應(yīng)碼阀趴,往往無(wú)法佐證用例測(cè)試通過(guò)。
3.1 斷言設(shè)計(jì)思路
3.1.1 響應(yīng)碼
檢查響應(yīng)碼是否符合預(yù)期苍匆,用來(lái)判斷測(cè)試用例是否執(zhí)行成功
3.1.2 關(guān)鍵字段
驗(yàn)證關(guān)鍵字段值是否符合預(yù)期刘急,用來(lái)判斷測(cè)試用例是否執(zhí)行成功
3.1.3 正則匹配
當(dāng)一個(gè)接口返回的內(nèi)容較多,并且有一定規(guī)律時(shí)浸踩,可通過(guò)正則表達(dá)式校驗(yàn)接口返回的信息叔汁,從而判定測(cè)試用例是否執(zhí)行成功
3.1.4 數(shù)據(jù)庫(kù)匹配核對(duì)
比如對(duì)查詢(xún)一個(gè)接口返回的數(shù)據(jù)進(jìn)行驗(yàn)證時(shí),可通過(guò)編寫(xiě)sql語(yǔ)句查詢(xún)結(jié)果检碗,
然后將sql語(yǔ)句執(zhí)行后數(shù)據(jù)庫(kù)返回的結(jié)果與接口返回的結(jié)果進(jìn)行核對(duì)据块,以此來(lái)判定測(cè)試用例是否執(zhí)行成功
注:該方式需用代碼連庫(kù)實(shí)現(xiàn),當(dāng)前Deeptest和穹天平臺(tái)均未實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)
3.1.5 通過(guò)相關(guān)接口進(jìn)行輔助驗(yàn)證
操作接口折剃,接查詢(xún)接口輔助驗(yàn)證
例:解綁手機(jī)號(hào)接口另假,解綁手機(jī)號(hào)后,想驗(yàn)證手機(jī)號(hào)是否解綁成功怕犁,可以調(diào)用獲取用戶(hù)手機(jī)號(hào)接口边篮,來(lái)驗(yàn)證手機(jī)號(hào)解綁成功
4.變量
4.1 常用變量類(lèi)型
4.1.1 數(shù)組
數(shù)組可以是數(shù)值或者json數(shù)組,輸入多個(gè)變量值奏甫,用','分隔戈轿,每次調(diào)用接口隨機(jī)從數(shù)組中取一個(gè)數(shù)值作為入?yún)?/p>
適用于枚舉類(lèi)型或邊界值測(cè)試
4.1.2 當(dāng)前日期
有些接口需要傳當(dāng)前日期作為入?yún)ⅲ藭r(shí)當(dāng)前日期字段適合設(shè)置變量扶檐。
4.1.3 時(shí)間戳
第三方直充會(huì)員接口凶杖,入?yún)imestamp需校驗(yàn)當(dāng)前時(shí)間前后5分鐘內(nèi),所以該字段只適用于獲取當(dāng)前時(shí)間戳變量款筑,寫(xiě)死的數(shù)值無(wú)法調(diào)用成功
"timestamp": 1622617182000, //當(dāng)前時(shí)間戳
4.1.4 動(dòng)態(tài)變量
例:.data.data.resultList[0].saleServiceInfoVo.serviceId}}智蝠,取上一個(gè)接口的返回值作為本接口入?yún)?/p>
4.1.5 隨機(jī)數(shù)
固定位數(shù)的隨機(jī)數(shù)
5.數(shù)據(jù)鏡像
將大量測(cè)試pin或不同訂單狀態(tài)做成鏡像數(shù)據(jù),即所有相關(guān)的表數(shù)據(jù)固定奈梳,需要新建鏡像數(shù)據(jù)庫(kù)杈湾,存所有相關(guān)表、指定訂單號(hào)/pin的表數(shù)據(jù)攘须,每次reset至鏡像數(shù)據(jù)漆撞。可用job定期或手動(dòng)reset數(shù)據(jù)。
接口自動(dòng)化可將reset鏡像數(shù)據(jù)作為前置條件浮驳,來(lái)免除單接口測(cè)試的前置接口調(diào)用悍汛,更快速的達(dá)到多場(chǎng)景測(cè)試效果。
當(dāng)前阻礙:基礎(chǔ)數(shù)據(jù)庫(kù)不在我們這邊至会,例如用戶(hù)信息表离咐,訂單數(shù)據(jù)表,所以無(wú)法達(dá)到數(shù)據(jù)鏡像效果