總結我所理解的接口測試,整理接口測試的點點滴滴,只為回首往事時不因虛度年華而悔恨,不因碌碌無為而羞恥。
一、問題:如何兩眼一抹黑的利用python做接口自動化測試
理解:這個問題,當初我在開始學python,并嘗試用python寫接口自動化測試時也許遇到,后來我發現以結果為導向,反推需要實現的功能是個很好的方法,先不管實現的好不好,腳本效率高不高,先做出能實現效果的版本。
二、問題:如何以結果為導向,反推需要實現的功能
理解:任務是“python+mysql實現http協議的接口測試”,目標是能自動比較結果(包括code和返回包參數完整性)
分析:要實現這個效果,涉及到的功能點有以下幾點:
1.python對mysql數據庫的操作,包括增、刪、改、查數據;
2.python發送http請求;
3.python處理返回包的結果;
4.mysql數據庫操作,包含sql語句;
具體實現過程:
1.mysql數據庫表的新建:
(1).我們需要一類表,存儲每個接口的測試用例數據和執行結果的記錄,包括的字段有用例級別(BVT,1,2,3)、請求類型(get/post)、接口地址、請求頭文件、請求參數、返回包、實際code結果、預期code結果,實際參數集、預期參數集,code對比結果、參數集對比結果、用例狀態、創建時間、更新時間、請求時長;
(2).配置表,存儲一些比較常用、且變化小的參數,比如默認用例級別、接口超時時間等;
(3).結果統計表,存儲每次執行后,每個接口的結果情況;
2.python對mysql數據庫的操作:
(1).此處需要預先封裝好python對mysql的基本操作類型,網上一招一大堆,可以直接拿來修改使用;
(2).根據實際情況,在定制一些操作類型,方便外部調用;
3.python發送http請求:
(1).此處需要封裝python本身對http請求的方法,等于再套一個殼子,而這個殼子里面包含了get方法、post方法、url鏈接有效性方法;
3.python處理http返回包
(1).此處可以根據配置來決定對返回包的測試程度,比如有以下3個級別(0-只測試code值,1-返回包參數完整性;2-返回包功能),通過配置值決定需要進行哪些程度的測試
(2).將不同的測試程度分裝到一個類中,分別以方法來定義不同的測試程度
(3).將不同程度的測試結果寫入數據庫測試用例表,即完成一條完整的測試用例數據
4.測試結果的統計
(1).配置不同的統計維度,其對應的不同的統計sql,這樣修改起來也比較方便,此處涉及到sql語句的參數化
(2).可以配合django使用web頁面來展示數據,頁面選擇不同的展示維度,后臺調用不同的統計sql,再將數據展示在頁面,或者以表格形式導出。