接口測試:什么是接口測試?怎樣做接口測試?
什么是接口測試?
接口測試是測試系統組件間接口的一種方式,接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。
所謂接口,是指同一個系統中模塊與模塊間的數據傳遞接口、前后端交互、跨系統跨平臺跨數據庫的對接。
而接口測試,則是通過接口的不同情況下的輸入,去對比輸出,看看是否滿足接口規范所規定的功能、安全以及性能方面的要求。
為什么要做接口測試?
接口測試有以下幾個優點:
-
相比系統測試,更早介入測試,提高效率
-
可以發現前端測試不了的問題,提高版本質量
-
接口標準化了,更容易實現自動化和持續集成,降低測試成本
因此在軟件測試招聘崗位的要求中,無論是功能測試、自動化測試、性能測試亦或測試開發崗位,接口測試都是必須掌握的?。。。?!
如何開展接口測試?
接口測試的開展一般包含5個部分:接口文檔分析、接口用例設計、執行接口用例、定位bug提交并跟蹤、輸出接口測試報告。
1. 接口文檔分析
接口文檔一般是由后端開發提供,可以是在線的swagger也可以是word。若開發未提供接口文檔,則可通過抓包工具fiddler或charles去抓取接口信息進行分析,進行接口測試。
獲取到接口文檔后,我們需要理清楚每個接口包含的請求、響應信息,概括為 接口信息五要素:
-
接口地址 url:http-請求協議,api.demo.com-域名或ip,8080-端口號,/login-資源路徑
-
請求方法:看開發定義的請求方法是什么,測試就對應用什么方法。restful 風格中常見的請求方法為 post、get、put、patch、delete 等,也有一些不規范的公司只用 get、post 這兩種。
-
請求頭 headers:發送請求到服務器,包含的頭部信息。常見的 content-type、token、User-Agent等或者帶上一些反爬的措施。
-
請求體 body/params:發送請求到服務器,具體傳遞的數據。例如要完成登錄接口的調用,請求體包含手機號 phone、密碼pwd、驗證碼 code 等等。
-
響應內容:接口文檔中描述的響應內容,與接口測試的實際結果做比較,可以判斷當前接口是否通過。響應內容包含:響應碼-http狀態碼、響應頭、響應體等等。
2. 接口用例設計
接口用例設計跟功能測試思維相通,需要:
-
清楚項目業務!!! 這個是重點,如果業務部清除,只能是胡亂測試,浪費產品,研發,測試大家自身的時間
-
用例設計8大方法:等價類、邊界值、場景法、狀態遷移法、錯誤推測法等等一大堆。
-
用例設編寫常用模板:常見的有yarm,Excel,MySQL,xmind。推薦使用excel,方便快捷,復制粘貼簡單!
-
常用測試工具:純Python/ target=_blank class=infotextkey>Python腳本、postman、jmeter;建議使用純python,可以鍛煉自己的代碼能力,提升自審的綜合能力!
以下是使用excel編寫的一個簡單的登錄功能的接口用例模板參考:
用例編號 | 接口地址 | 請求方法 | 請求頭 | 請求體 | 前置腳本 | 后置腳本 | 預期結果 | 實際結果 | 測試結果 |
---|---|---|---|---|---|---|---|---|---|
TC01 | /login | POST | Application/json | {"phone":"13800000000","pwd":"12345678","code":"1234"} | 參數加密 | 參數提取 | {"code":200,"msg":"OK","data":{"id":1,"name":"test"}} | 同預期 |
3. 執行接口用例,進行接口測試
接口測試原理:
模擬客戶端(瀏覽器)發送請求到服務器,服務器接收請求并處理,返回響應到客戶端, 客戶端接收響應這樣的一個過程。
通過接口測試原理可知,進行接口測試需要借助工具或代碼。主流的接口測試工具有python、Jmeter、postman等。使用工具編寫腳本,需要結合接口項目具體應用場景來設計,運用關聯、參數化、斷言等技術。
例如,使用postman工具來執行登錄功能的接口用例,步驟如下:
-
在postman中創建一個新的請求,填寫接口地址url和請求方法POST
-
在Headers選項卡中添加請求頭Content-Type:application/json
-
在Body選項卡中選擇raw模式(json),輸入請求體數據
-
點擊Send按鈕發送請求,查看響應內容
-
在Tests選項卡中編寫斷言腳本,驗證響應內容是否符合預期
-
在Collection Runner中批量執行多個接口用例,并生成測試報告
4. 發現bug、定位、提交并跟蹤
怎么判斷是否是bug呢?
-
接口測試中響應結果錯誤,返回了錯誤的code碼、msg信息:
判斷請求:請求地址、方式、請求頭、請求正文是否正確,如果不正確則修改對應請求信息再做發送;如果正確,則說明是服務器端問題
進一步查看服務器日志、數據庫信息,并整理信息提交bug
-
接口測試中響應結果,code碼、msg正確,但返回的data數據不正確:
查看數據庫數據正確完整性,并結合服務器日志,整理信息提交bug
-
接口測試中響應結果正確,比如:增刪改業務操作:
需進一步確認到數據庫層面,數據增刪改的正確性
-
考慮安全性:一般接口對請求會做出一些限制,比如請求次數、請求頻率限制;涉及敏感信息是否加密
5. 接口測試報告
接口測試報告的整理這個看公司要求。
有些公司是在整個項目測試結束后,整理一份統一的測試報告。
有些公司會要求輸出階段性的測試報告。
接口測試報告一般包含以下內容:
-
測試目的:說明本次測試的目標和范圍
-
測試環境:說明測試所使用的硬件、軟件、網絡等條件
-
測試工具:說明測試所使用的工具或代碼
-
測試結果:說明測試執行的總體情況,包括通過率、失敗率、缺陷數等
-
測試分析:說明測試發現的問題和建議,以及對測試過程和效果的評價
-
測試附件:提供相關的測試文檔和數據
如果公司有自己的平臺或者框架,一般都是直接將測試報告結果自動發送處理或者手動導出發郵件或者釘釘、企業微信之類的提交,也有一些不太規范的公司,直接就是測試人員自己看測試結果,看完就結束整個過程(吐槽一下:這種公司一般開發、產品都不怎么關心接口質量,比較多的是關心前端輸入不導致出錯,具體說就是質量意識不強?。∽髡呱囊约白髡叩拇蟛糠峙笥言诠ぷ髦杏龅降拇蟛糠侄际沁@種公司 )!!
總之:接口測試是軟件測試中不可或缺的一部分,它可以有效地提高軟件質量和開發效率。