https://www.cnblogs.com/yuxiuyan/tag/分層測試/
介面測試是通過測試模組介面來檢測模組整體邏輯是否符合預期的測試方法。
介面測試主要用於檢測外部模組和模組介面資料交換、關鍵業務資料狀態變化。
測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及模組間的相互邏輯依賴關係等。
在我們現在的業務中,主要包含了兩種型別的介面測試,分別是單模組介面測試和子系統介面測試。
介面測試程式碼與被測試的介面同源,在測試程式碼中將依賴的外部服務mock掉,資料庫不mock,測試程式碼與被測試程式碼在同一個程序。
介面測試程式碼與被測試的介面同源,測試程式碼與被測試程式碼在不同程序。
介面測試以保證系統的正確穩定為目標,重要性主要體現在:
驗證場景有限:只能驗證預期範圍內的問題,介面測試是根據產品需求和後端架構而產生的,設計的所有用例均是介面設計人員所預期到的結果,無法測試出一些不可預見的問題。
依賴測試分析: 介面測試效果對測試分析的依賴性極大。
介面測試的用例設計和單元測試有相似之處,都需要用到邊界值法、等價類法等基本測試方法。
設計介面測試用例的出發點是要驗證介面實現的功能和效能指標是否與介面檔案保持一致。
同時,測試介面需要具有良好的容錯機制,能在接收到各種異常輸入資料時做到錯誤定位。
對一個系統做介面測試,識別出合理的測試物件才能保證介面測試達到預期效果,甚至能達到事半功倍的效果。
一個系統可能有很多的層次結構,也就有了不同層級的許多介面,如果對每個介面分別進行測試,時間和人力消耗較大,且用例數量大,用例的維護成本很大。
分析出系統的關鍵模組和核心介面,並對其進行完整的測試,能以最小的測試投入,達到最好的測試效果。
介面測試用例的內容包括:輸入引數組合、預期結果、實際執行結果以及備註的其他相關資訊,如:測試功能點說明,測試環境說明等。
預期結果包括介面返回值以及介面的輸出引數的內容。
輸入引數的組合應遵循等價類法和邊界值法等常用用例設計方法,以最少的用例數量覆蓋所有典型引數組合,做到每條用例覆蓋不同的測試點,且每條用例都不可被取代。
介面測試的依據往往是需求規格說明書等軟體設計檔案,測試手段是把介面內的程式邏輯看作一個黑盒,只根據介面定義來編寫測試程式碼,相當於把一個介面當作一個函數來進行測試,為了確保測試的覆蓋率,可能會使用到單元測試的用例設計方法。
根據該介面實現的功能分析出該介面的正常用例包括哪幾種輸入引數的組合,從而在用例中構造相應的引數組合來覆蓋所有的正常分支。
輸入引數分為兩種型別:
對介面輸入引數的組合,需要考慮兩點:
選取一條正常用例的資料作為基礎資料,然後遍歷所有的輸入引數,針對每一個輸入引數,分別使用等價類法,邊界值法等用例設計方法列舉出該引數的所有異常值。
該用例除了該引數為異常外,其餘引數均保持正常值不變,以保證測試結果僅由異常的那一個引數導致。
當所有輸入引數都使用上述方法設計了對應的異常用例之後,進一步補充不方便在用例檔案中輸入的異常引數到測試指令碼中,通過 switch 分支判斷,在測試指令碼中將無法通過檔案讀取的異常輸入值(如:錯誤指標等),直接賦值給介面的輸入引數,測試某些指標型別的資料錯誤是否被及時捕獲並返回正確無歧義的錯誤碼。
1. 注意錯誤碼返回
在介面設計中,任何時候都應該返回定義好的錯誤碼,絕不能讓程式異常退出,或者把未經任何處理的異常資訊直接丟擲。
程式的異常退出,會產生惡劣的使用者體驗,也無法進行錯誤排查。
把未經處理的異常資訊丟擲,有可能把不應該被使用者感知的資訊暴露出來,比如資料庫相關資訊,從而產生安全隱患。
2. 錯誤碼的準確性很重要
錯誤碼的準確性對介面呼叫失敗原因的定位有非常重要的意義,將極大降低後續維護成本,錯誤碼的設定應當準確,無歧義,一種錯誤型別一個錯誤碼,儘量將錯誤碼編得更細,更有利於錯誤排查。
3. 錯誤碼應該是明確含義的
錯誤碼應當在介面設計檔案中有明確定義,並且在不同介面中保持一致。