最近學(xué)習(xí)了茹炳晟的軟件測(cè)試52講,其中的API自動(dòng)化測(cè)試闺魏。作者介紹了自己API自動(dòng)化測(cè)試實(shí)踐的三個(gè)發(fā)展階段。
早期的基于 Postman 的 API 測(cè)試
Postman其實(shí)是手動(dòng)測(cè)試的工具,不能和Jenkins集成蜜暑。
基于 Postman 和 Newman 的 API 測(cè)試
Newman 其實(shí)就是一個(gè)命令行工具喂链,可以直接執(zhí)行 Postman導(dǎo)出的測(cè)試用例返十。可以和Jenkins集成椭微。
但是對(duì)于連續(xù)調(diào)用多個(gè)API的情況洞坑,第一個(gè)API的返回?cái)?shù)據(jù),作為第二個(gè)API的請(qǐng)求數(shù)據(jù)赏表,這種方式就不太適用了检诗。
基于代碼的API測(cè)試
作者在ebay開發(fā)了自己的HttpClient,后期為了使 API 測(cè)試的代碼更簡(jiǎn)潔易懂瓢剿,就基于 Rest-Assured封裝了全新的API自動(dòng)化測(cè)試框架逢慌。
根據(jù)公司業(yè)務(wù)上下文開發(fā)的自動(dòng)化測(cè)試框架,有以下優(yōu)點(diǎn):
1 可以靈活支持多個(gè) API 的順序調(diào)用间狂,方便數(shù)據(jù)在多個(gè) API之間傳遞
2?方便在 API 調(diào)用之前或者之后執(zhí)行額外的任意操作攻泼,可以在調(diào)用之前準(zhǔn)備測(cè)試數(shù)據(jù),調(diào)用之后清理現(xiàn)場(chǎng)等
3 支持?jǐn)?shù)據(jù)驅(qū)動(dòng)鉴象,測(cè)試數(shù)據(jù)和測(cè)試代碼解耦
4 更靈活的處理測(cè)試斷言
5 原生支持命令行測(cè)試執(zhí)行方式忙菠,和CI CD工具集成
自動(dòng)生成API測(cè)試代碼
不要被標(biāo)題嚇住,指的是基于 Postman 的 Collection 生成基于代碼的API測(cè)試代碼纺弊。其實(shí)現(xiàn)方法是解析Collection JSON文件的各個(gè)部分牛欢,然后根據(jù)自研 API 框架的代碼模板實(shí)現(xiàn)變量替換。
Response結(jié)果發(fā)生變化時(shí)的自動(dòng)識(shí)別
這里指的是API的后向兼容性淆游,新版本的API應(yīng)該能兼容老版本的API傍睹。
具體實(shí)現(xiàn)的思路是隔盛,在 API 測(cè)試框架里引入一個(gè)內(nèi)建數(shù)據(jù)庫(kù),推薦采用非關(guān)系型數(shù)據(jù)庫(kù)(比如 MongoDB)拾稳,然后用這個(gè)數(shù)據(jù)庫(kù)記錄每次調(diào)用的 request 和 response的組合吮炕,當(dāng)下次發(fā)送相同 request 時(shí),API 測(cè)試框架就會(huì)自動(dòng)和上次的response做差異檢測(cè)访得,對(duì)于有變化的字段給出警告龙亲。
思考與疑問
講師Response結(jié)果發(fā)生變化時(shí)的自動(dòng)識(shí)別,后向兼容性悍抑,針對(duì)的應(yīng)該是App的接口鳄炉。如果是web應(yīng)用的接口其實(shí)沒有必要,因?yàn)樗鼪]有版本的概念传趾。所以我們?cè)趯W(xué)習(xí)時(shí)迎膜,不能完全照搬,需要有自己的思考浆兰。