@
目錄
為什么要做接口自動化,怎樣做
一、為什么要做接口自動化
- UI能模擬用戶的真實行為,但是受外部的原因,如電腦卡頓,瀏覽器卡頓,網速,需求變動等,從而容易造成腳本執行失敗,維護成本較高,投入較高等問題
- 接口測試直接驗證模塊邏輯的正確性,去除UI干擾
- 接口測試難度低於UI測試,執行效率高於UI,可測試的代碼覆蓋率高,維護成本低,屬於低成本,高收益
- 有些項目產品數據列表的內容比較多,不好定位,難以開展UI自動化測試
- 接口自動化能夠解放人力,提升工作效率
二、了解一波接口
2.1 什么是接口
接口一般來講分為兩種:
- 程序內部的接口:方法與方法、模塊與模塊之間的交互,程序內部拋出的接口,如登錄發帖,發帖就必須要登錄,如果不登錄不能發帖,發帖和登錄這兩個模塊之間就要有交互,就會拋出一個接口,進行內部系統調用。
- 系統對外的接口:從別人的網站或服務器上獲取資源或信息,對方不會提供數據庫共享,只能提供一個寫好的方法來獲取數據,如購物網站和第三方支付之間,購物網站支付時可選擇第三方支付方法,但第三方不會提供自己的數據庫給購物網站,只會提供一個接口,供購物網站進行調用。
2.2 常用接口
- http接口走http協議,通過路徑來區分調用方法,請求報文一般是key-value形式的,返回報文一般是json串,常用的是get和post方法來請求。
- webservice接口走的soap協議,通過http傳輸,請求報文和返回報文都是xml格式的。
2.3 http登錄接口文檔范例
2.4 獲取接口關鍵信息
- 開發提供接口文檔/接口規范(正規流程),如上接口文檔范例;
說明:如果沒有接口規范/文檔(不正規流程),需要使用抓包工具,如Fiddler、wireshark、httpwatch或直接在谷歌或火狐瀏覽器F12等獲取接口關鍵信息;
- 接口關鍵信息:
- 協議類型:http/htts
- 請求URL/IP:如:網址:https://www.baidu.com/;ip:127.0.0.1
- 端口:http默認端口:80,https默認端口:443或自定義端口
- 請求方式:如post/get/put/delete
- 表頭信息:如內容類型Content-Type:application/json
- 請求參數:注意參數的傳參類型如json;參數的屬性如名稱、類型、是否必填,參數的個數;
- 響應結果:注意輸出內容的類型如json
返回狀態 | 描述 |
---|---|
1xx | 請求已被成功接收、理解、接受 |
2XX | 成功,操作被成功接收並完成響應 |
3xx | 重定向--要完成請求必須進行更進一步的操作 |
4xx | 客戶端錯誤--請求有語法錯誤或請求無法實現 |
5xx | 服務器端錯誤--服務器未能實現合法的請求 |
三、什么項目適合做接口自動化測試
- 任務需求明確,不會頻繁變動
- 項目周期較長,回歸測試頻繁(>=5次),開展自動化確實能提升測試效率及質量
- 產出的效益高於投入
- 測試預留的時間比較充裕
四、接口自動化關鍵點
- 開發測試腳本需充分考慮腳本的復用性
- 業務與數據分離
五 什么時候可以做接口自動化
- 需求評審完畢,接口需求明確穩定
- 版本升級項目發布之前的全流程回歸測試
六、與開發同步進行接口用例腳本開發
軟件開發未完成,接口還無法調試,測試如果需要同步開發接口,需根據接口文檔規范,利用MOCK SERVER等接口模擬工具模擬接口,從而進行接口自動化用例調試開發
七、接口自動化測試的流程
- 業務流程
- 評估投入與收益比,是否需要進行接口自動化
- 根據項目組成員的能力及項目屬性,選取適當的自動化工具或開發語言
- 分析業務,在功能測試用例提取主業務場景
- 先開發一個主業務場景腳本,根據需要補充其他業務場景
- 開發流程
- 提取腳本可重復項,封裝簡化腳本,利用公共類或公共函數等方法,提高腳本的利用率、可讀性及可維護性
- 提取腳本中可變的參數,修改成變量
- 利用csv、Excel、ini、數據庫、yaml等參數化數據信息,使業務與數據分離,實現數據驅動測試
- 引入日志,出現問題能迅速定位
- 添加斷言並生成可視化報告
- 利用Jenkins持續集成工具,實現自動打包,按時發布並執行,生成結果郵件發送給項目相關人