您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Java如何編寫接口測試”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java如何編寫接口測試”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
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編碼的聲明,但是每個用例的注釋信息不能是中文,奇怪了,沒深入研究,反正都修改為英文后,再次運行成功了。
完整的自動化測試報告如下圖所示:
讀到這里,這篇“Java如何編寫接口測試”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。