總結(jié)我所理解的接口測(cè)試,整理接口測(cè)試的點(diǎn)點(diǎn)滴滴,只為回首往事時(shí)不因虛度年華而悔恨,不因碌碌無(wú)為而羞恥。
一、問(wèn)題:如何兩眼一抹黑的利用python做接口自動(dòng)化測(cè)試
理解:這個(gè)問(wèn)題,當(dāng)初我在開始學(xué)python,并嘗試用python寫接口自動(dòng)化測(cè)試時(shí)也許遇到,后來(lái)我發(fā)現(xiàn)以結(jié)果為導(dǎo)向,反推需要實(shí)現(xiàn)的功能是個(gè)很好的方法,先不管實(shí)現(xiàn)的好不好,腳本效率高不高,先做出能實(shí)現(xiàn)效果的版本。
二、問(wèn)題:如何以結(jié)果為導(dǎo)向,反推需要實(shí)現(xiàn)的功能
理解:任務(wù)是“python+mysql實(shí)現(xiàn)http協(xié)議的接口測(cè)試”,目標(biāo)是能自動(dòng)比較結(jié)果(包括code和返回包參數(shù)完整性)
分析:要實(shí)現(xiàn)這個(gè)效果,涉及到的功能點(diǎn)有以下幾點(diǎn):
1.python對(duì)mysql數(shù)據(jù)庫(kù)的操作,包括增、刪、改、查數(shù)據(jù);
2.python發(fā)送http請(qǐng)求;
3.python處理返回包的結(jié)果;
4.mysql數(shù)據(jù)庫(kù)操作,包含sql語(yǔ)句;
具體實(shí)現(xiàn)過(guò)程:

1.mysql數(shù)據(jù)庫(kù)表的新建:
(1).我們需要一類表,存儲(chǔ)每個(gè)接口的測(cè)試用例數(shù)據(jù)和執(zhí)行結(jié)果的記錄,包括的字段有用例級(jí)別(BVT,1,2,3)、請(qǐng)求類型(get/post)、接口地址、請(qǐng)求頭文件、請(qǐng)求參數(shù)、返回包、實(shí)際code結(jié)果、預(yù)期code結(jié)果,實(shí)際參數(shù)集、預(yù)期參數(shù)集,code對(duì)比結(jié)果、參數(shù)集對(duì)比結(jié)果、用例狀態(tài)、創(chuàng)建時(shí)間、更新時(shí)間、請(qǐng)求時(shí)長(zhǎng);

(2).配置表,存儲(chǔ)一些比較常用、且變化小的參數(shù),比如默認(rèn)用例級(jí)別、接口超時(shí)時(shí)間等;

(3).結(jié)果統(tǒng)計(jì)表,存儲(chǔ)每次執(zhí)行后,每個(gè)接口的結(jié)果情況;
2.python對(duì)mysql數(shù)據(jù)庫(kù)的操作:
(1).此處需要預(yù)先封裝好python對(duì)mysql的基本操作類型,網(wǎng)上一招一大堆,可以直接拿來(lái)修改使用;
(2).根據(jù)實(shí)際情況,在定制一些操作類型,方便外部調(diào)用;

3.python發(fā)送http請(qǐng)求:
(1).此處需要封裝python本身對(duì)http請(qǐng)求的方法,等于再套一個(gè)殼子,而這個(gè)殼子里面包含了get方法、post方法、url鏈接有效性方法;


3.python處理http返回包
(1).此處可以根據(jù)配置來(lái)決定對(duì)返回包的測(cè)試程度,比如有以下3個(gè)級(jí)別(0-只測(cè)試code值,1-返回包參數(shù)完整性;2-返回包功能),通過(guò)配置值決定需要進(jìn)行哪些程度的測(cè)試

(2).將不同的測(cè)試程度分裝到一個(gè)類中,分別以方法來(lái)定義不同的測(cè)試程度

(3).將不同程度的測(cè)試結(jié)果寫入數(shù)據(jù)庫(kù)測(cè)試用例表,即完成一條完整的測(cè)試用例數(shù)據(jù)
4.測(cè)試結(jié)果的統(tǒng)計(jì)
(1).配置不同的統(tǒng)計(jì)維度,其對(duì)應(yīng)的不同的統(tǒng)計(jì)sql,這樣修改起來(lái)也比較方便,此處涉及到sql語(yǔ)句的參數(shù)化
(2).可以配合django使用web頁(yè)面來(lái)展示數(shù)據(jù),頁(yè)面選擇不同的展示維度,后臺(tái)調(diào)用不同的統(tǒng)計(jì)sql,再將數(shù)據(jù)展示在頁(yè)面,或者以表格形式導(dǎo)出。