如何編寫介面測試用例?測試工程師必備技能!

博為峰網校發表於2018-11-29

自動化始終只是輔助測試工作的一個手段,對於測試人員而言,測試基礎和測試用例的設計才是核心。如果測試用例的覆蓋率或者質量不高,那將這部分用例實現為自動化用例的意義也就不大了。

如何編寫介面測試用例?測試工程師必備技能!

那麼,介面測試用例應該怎麼編寫呢?

1、介面測試

介面: 主要是子模組或者子系統間互動並相互作用的部分。

這裡說的介面是廣義的,客戶端與後臺服務間的協議;外掛間通訊的介面;模組間的介面;再小到一個類提供的方法;都可以理解為介面。因此,可以分析,系統間的介面包含三部分:輸入、處理邏輯、輸出。

介面測試: 是指標對模組或系統間介面進行的測試。

2、應該怎麼分析一個介面?

獲取介面文件: 和黑盒測試一樣,我們是從需求文件中去挖掘測試點,設計測試用例。對於介面測試,同樣是有對應的介面文件的。

分析介面文件,提取測試點:

1)輸入: 接受哪些引數、引數的型別、可選引數和必選引數等;根據輸入引數採用等價類、邊界值分析法等進行設計;

2)業務邏輯:對於一個介面,不同的輸入引數或組合,流程或狀態的轉移是不同,可以根據業務邏輯畫出流程圖或狀態轉移圖,確保每種狀態至少被訪問了一次;

3)輸出:根據文件規定的輸出,反向設計測試資料,使所有的輸出狀態都被包含了;

測試用例: 同時對輸入、業務邏輯、輸出進行考慮時,肯定會存在用例的冗餘,在最大限度覆蓋業務功能和規則下,選取最優用例集合。同時,需要考慮異常資料和場景。

3、怎麼確定用例的覆蓋率?

在沒有特殊要求的情況下,至少需要考慮以下內容:

1)業務功能覆蓋是否完整

2)業務規則覆蓋是否完整

3)引數驗證是否達到要求(邊界、業務規則)

4)介面異常場景覆蓋是否完整

如果介面需求還包含效能或者安全要求,還要對介面進行效能測試和安全測試,就需要考慮:效能指標是否滿足要求、安全指標是否滿足要求。

4、介面測試發現的典型問題

介面測試經常遇到的bug和問題,如下:

(1)傳入引數處理不當,導致程式crash;

(2)型別溢位,導致資料讀出和寫入不一致;

(3)因物件許可權未進行校驗,可以訪問其他使用者敏感資訊;

(4)狀態處理不當,導致邏輯出現錯亂;

(5)邏輯校驗不完善,可利用漏洞獲取非正當利益等。

5、如何編寫介面測試用例?

建立介面測試用例:

/home/csg/pyrequest-master/interface/add_event_test.py

如何編寫介面測試用例?測試工程師必備技能!

如何編寫介面測試用例?測試工程師必備技能!

如何編寫介面測試用例?測試工程師必備技能!

對上述程式碼進行分析:

1、在介面測試之前,呼叫test_data.py檔案中的init_data()方法,初始化資料庫中的測試資料;

2、建立AddEventTest測試類,繼承unittest.TestCase類;

3、建立測試用例,呼叫新增釋出會介面,並驗證介面返回的資料;

注意:

1、把JSON格式的結果轉化為字典賦值給self.result變數,加self的目的是在tearDown()方法中列印self.result變數,列印的結果可以在測試報告中顯示,即將介面返回資料列印出來;

2、如果不使用self,又想在報告中顯示每個介面返回資料,就只能是在每個用例中print出result,相比來說,還是第一種方法比較方便。

整合測試報告

當用例數量較多,就需要分類管理和執行,為解決這個問題,unittest單元測試框架提供了discover()方法,然後再適用HTMLTestRunner生成HTML格式的測試報告。

建立/home/csg/pyrequest-master/interface/run_tests.py檔案:

如何編寫介面測試用例?測試工程師必備技能!

對上述程式碼進行分析:

1、還是先呼叫test_data.py檔案中的init_data()函式來初始化測試資料;

2、unittest框架提供的discover()方法查詢interface目錄下,匹配到檔名*_test.py結尾的測試檔案;

3、now按一定格式生成當前時間;

4、將檔名命名為now當前時間_result.html並且儲存report目錄下;

5、HTMLTestRunner為unittest單元測試框架的擴充套件,利用它提供的HTMLTestRunner()類來代替unittest單元測試框架的TextTestRunner()類,執行discover中匹配到的測試用例,生成HTML格式的測試報告;

執行測試指令碼:python run_tests.py:

1、可能需要安裝configparser庫,pip install configparser;

2、在執行過程中,出現了錯誤:

如何編寫介面測試用例?測試工程師必備技能!

應該是資料表裡create_time欄位需要一個預設值,於是修改test_data.py檔案,給每個測試資料都增加create_time預設值為當前時間,再次執行就沒有這個錯誤了; 

3、但是繼續執行又出現了錯誤:

如何編寫介面測試用例?測試工程師必備技能!

問了下度娘,應該是讀取檔案的時候使用的是ASCII編碼,而不是utf-8,自己多餘,在每個測試用例的開頭都增加了-*- coding:utf-8 -*-,畫蛇添足了,去掉後再次執行就沒這個錯誤了; 

4. 但是執行結果全部是failed的,檢視具體的error資訊:

如何編寫介面測試用例?測試工程師必備技能!

原來還是要在每個測試資料前加上utf-8編碼的宣告,但是每個用例的註釋資訊不能是中文,奇怪了,沒深入研究,反正都修改為英文後,再次執行成功了。

完整的自動化測試報告如下圖所示:

如何編寫介面測試用例?測試工程師必備技能!

6、總結

其實,作者自己完全的封裝了一個類似Robot的工具,這個好處是拋開了框架的束縛,可以自由的編寫測試用例的內容,只要是python的程式碼,就可以採用這個工具,自由發揮測試內容,並且結果的展示也比較豐富和友好,如果不打算研究Robot的,其實可以用這個工具。

歡迎加入  51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ                     群:                    755431660


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2222183/,如需轉載,請註明出處,否則將追究法律責任。

相關文章