如何編寫介面測試用例?測試工程師必備技能!
自動化始終只是輔助測試工作的一個手段,對於測試人員而言,測試基礎和測試用例的設計才是核心。如果測試用例的覆蓋率或者質量不高,那將這部分用例實現為自動化用例的意義也就不大了。
那麼,介面測試用例應該怎麼編寫呢?
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 介面測試用例編寫和測試關注點
- 測試工程師必備:掌握這5種設計方法快速編寫測試用例~思路分析工程師
- 【編測編學】介面測試必備面試題(上)面試題
- 【編測編學】介面測試必備面試題必背(下)面試題
- 【轉】測試用例編寫(功能測試框架)框架
- 服務端測試開發必備技能:Mock測試服務端Mock
- 測試人高效工作必備:如何提高溝通技能?
- 測試開發必備技能:安全測試漏洞靶場實戰
- postman寫測試用例Postman
- 軟體測試用例編寫(含思路)
- 初步瞭解URL(介面測試必備)
- 軟體測試工程師必備技工程師
- 測試面試-測試用例面試
- 乾貨 | Dubbo 介面測試技術,測試開發進階必備
- 測試中,介面測試的必要性與介面測試的基礎用例設計
- 開發人員必備的技能——單元測試
- 軟體測試用例的設計和編寫
- 第8課—設計測試用例編寫技巧
- 【編測編學】分享一套好用的功能測試用例編寫框架框架
- 大資料測試工程師入門級必備技能,你get了嗎?大資料工程師
- Web自動化-Selenium自動化測試-4-編寫測試用例Web
- 高階測試工程師必備技術:用Git版本控制自動化測試程式碼工程師Git
- 測試用例
- 如何編寫功能測試報告測試報告
- 如何編寫優秀的測試程式碼|單元測試
- 測試工程師必學:測試人員如何深入瞭解專案工程師
- 測試開發工程必備技能之一:Mock的使用Mock
- 快速測試 API 介面的新技能API
- postman的批次執行:用於多條介面測試用例批次執行,輸出介面測試測試結果Postman
- 介面測試是什麼?如何做好介面測試?
- 測試工程師必知的10大測試法則工程師
- 如何寫好測試用例以及go單元測試工具testify簡單介紹Go
- Jmeter介面測試例項-牛刀小試JMeter
- 軟體測試必備 - 14個介面與自動化測試練習網站網站
- 測試開發工程師修煉手冊—測試技能大盤點工程師
- 『測試基礎』| 如何理解測試用例管理和缺陷管理?
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- 介面測試測試流程