一、后臺服務的基本分層結構
二、 測試前的準備
1、了解接口的業務功能
2、接口的入參、個數、類型、是否有默認值
3、返回結果的結構、類型、范圍
4、了解有多少調用方,明確調用方的需求
三、接口測試在測什么
定義:接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
3.1 接口層
1、接口可用性:比如服務是不是通的,請求服務會不會timeout,或返回一些常見的錯誤碼,比如http404,500等
2、是否符合接口定義:比如請求參數可選,必選要求,返回結果參數集合是否正確,格式是否正確
3、接口參數取值是否符合業務定義:比如支付金額不能 <=0
3.2 業務邏輯
1、業務流程
2、業務處理的原子性:比如一次轉賬涉及到金額變更和流水記錄,當其中一個失敗是,兩個都要回滾
3、業務處理的并發控制:比如給同一個配送員“同時”進行多個配送單的結算,配送員的余額是一個共享資源
4、業務處理的防重控制:比如同一筆支付訂單不能支付兩次
3.3 數據存取
1、數據庫連接是否正常:連接參數是否正確
2、業務數據是否寫入到DB:比如有分庫分表邏輯的時候,是否寫入到正確的庫和表
3、讀取是否正常:是否能查詢到正確的業務數據
3.4 Data正確性
四、接口測試目標
1、覆蓋要求:接口層邏輯、業務邏輯、數據存取邏輯
2、正確性要求:響應結果、持久化數據存取正確、并發控制正確性、業務處理原子性、業務處理的防重正確性
五、接口測試方法
5.1 接口導向的集成測試—基本版
1、以接口的方式access服務
2、組合接口參數取值以滿足功能覆蓋要求
3、校驗接口返回結果以驗證服務的正確性
例子??
5.2 接口導向的集成測試—進階版
1、以接口的方式access服務
2、組合接口參數取值+外部參數(DB,依賴的服務返回)以滿足功能覆蓋要求
3、校驗接口返回結果+DB(或其他輸出形式)以驗證服務的正確性
5.3 接口導向的集成測試注意事項
1、服務的輸入參數不僅包括接口參數,還包括一些接口不可見的參數,比如DB,比如依賴服務的返回
2、服務的處理接口不僅包含接口返回結果,還包含一些接口不可見的處理結果,比如DB
六、接口測試工具
1、HTTP接口測試工具:POSTMAN、SOAPUI、curl命令
2、Thrift測試、MQ測試:自定義接口client+測試框架(比如java的testng、python的unittest)
七、接口自動化
7.1 Java自動化測試框架——TestNG
1、使用注解來表示case
2、支持測試用例分組執行
3、支持并發測試case編寫
4、提供了驗證函數:Assertions
5、生成測試結果報告
7.2 自動化執行與報告
1、整個測試項目目是基于maven構建的,使用Maven-SureFire-Plugin插件來執行case
2、在maven構建生命周期的test階段運行測試用例,產生兩種不同形式的測試結果報告:純文本與.xml文件?
3、命令:mvn test