接口相關的概念
什么是接口(接口的分類):
- API應用程序編程接口 :硬件的驅動程序 , 數(shù)據(jù)庫系統(tǒng)的訪問接口
- GUI用戶圖形界面 人與軟件之間的交互界面
- Webservice 接口 (soup 、 rmi 、 rpc 協(xié)議)
- Http request接口 Get,Post,Put,Delete 等)(重點)
- 要知道http協(xié)議——報文的內容、請求頭、請求行、請求體、請求方式(get、post)、狀態(tài)碼
接口測試的必要性
為什么要做接口測試
- 系統(tǒng)數(shù)量多、復雜度增高,同時保持各自獨立性。
- 系統(tǒng)間調用存在數(shù)據(jù)交互,發(fā)現(xiàn)頁面操作發(fā)現(xiàn)不了的 Bug 。
- 接口之間訪問時,對接口數(shù)據(jù)的準確性要求很高。
- 檢查系統(tǒng)的異常處理
- 檢查系統(tǒng)的安全性,穩(wěn)定性
- 前端變了,接口測好了,后端不要變
- 接口測試主要測試接口覆蓋率
接口測試的覆蓋范圍
面試問:接口測試都測試什么內容/接口測試從哪些方面去考慮:(答以下內容)
接口測試的定義
- 測試系統(tǒng)組件間接口的一種測試。
- 主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內部各個子系統(tǒng)之間的交互點。
- 是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關系等。
- 接口測試本質:(問:接口測試是什么,回答本質)1.發(fā)送一個 request ,然后服務器響應2.服務端返回一個 response ,對 response 進行分析。
- (面試時問:接口測試的bug——答:錯誤碼與定義的錯誤不匹配)
- 界面上操作的按鈕,只要與后臺數(shù)據(jù)有聯(lián)系,就是接口
- 系統(tǒng)與系統(tǒng)之間也有接口
- 一個系統(tǒng)需要調用其他產(chǎn)品的功能(接口),就成它為外部接口——一個軟件需要用到微信或者支付寶掃碼,就叫調用微信、支付寶的接口
接口測試依據(jù)
- 接口名稱
- 接口功能
- 接口類別
- 提交者、提交時間、需求來源及時間要求
- 認證說明
- 請求限制說明
- 請求參數(shù)說明
- 相關約束
- 注意事項
- 調用示例
- 返回數(shù)據(jù)格式
- 返回結果示例
- 錯誤代碼及返回說明
接口測試范圍&內容
接口文檔說明
api文檔內容
聚合網(wǎng)地址:https://www.juhe.cn/
錯誤碼參照
接口返回數(shù)據(jù)
常用工具
- 典型商業(yè)工具:loadrunner 、 soapui
- 典型開源工具 : jmeter 、 httpclient 、 jsoup、python中的 urllib2 、 urllib 庫或 requests
- 擴展插件:Poster ( firefox 、 Postman(Chrome) 目前有獨立安裝版本
接口抓包工具
- 請求捕獲( Firebug 、 Fiddler 、 BurpSuite 、 Httpwatch
- 請求變更 (Poster 、 Postman 、 HttpRequest 、 TemperData
- Http抓包:HTTP Analyzer
- 通用數(shù)據(jù)抓包:MiniSniffer
接口測試原理
- 模擬客戶端對服務器進行多連接
- 偽造報文欺騙服務器認證機制
- 了解服務器認證機制
- 了解客戶 服務器之間的交流報文結構
- 合理的技術構造報文結構
- HTTP request、 Webservice 應用居多。
http協(xié)議
- 支持客戶 服務器模式
- 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有 GET 、 HEAD 、 POST 每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。由于HTTP 協(xié)議簡單,使得 HTTP 服務器的程序規(guī)模小,因而通信速度很快;
- 靈活:HTTP 允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀?Content Type 加以標記;
- 無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間;
- 無狀態(tài):HTTP 協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
- Keep Alive :長連接和短連接
發(fā)包工具
- Temper Data
- IBM Rational HTTP Request Editor
接口測試分層
- 單一接口功能的測試
- 單系統(tǒng)模塊內部通過接口基于業(yè)務測試
- 各系統(tǒng)、各模塊之間通過接口訪問的業(yè)務測試
接口測試工具介紹
- 是走 http 協(xié)議,通過路徑來區(qū)分調用的方法,
- 請求報文都是 key value 形式的,返回報文一般都是 json 串,有 get 和 post 等方法,這也是最常用的兩種請求方式。
- 可以使用的工具有 Postman 、 HttpRequest 、JMeter 、 Loadrunner 等
- 是走 soap 協(xié)議通過 http 傳輸,
- 請求報文和返回報文都是 xml 格式的,我們在測試的時候都用通過工具才能進行調用,測試。
- 可以使用的工具有SoapUI 、 JMeter 、 Loadrunner等
postman(只能測http協(xié)議的接口)
- 是谷歌的一款接口測試插件,
- 它使用簡單,支持用例管理,支持 get 、 post 、文件上傳、響應驗證、變量管理、環(huán)境參數(shù)管理等功能,
- 可以批量運行,并支持用例導出、導入。
- 最近 2 年也有獨立安裝的應用程序,只能測試 Http 協(xié)議的接口。
環(huán)境搭建
jmeter(能測所有的)
- 是一款 Java 編寫的免費開源的工具,它主要用來做接口,性能測試,
- 相比 Loadrunner 來說,它內存占用小,免費開源,輕巧方便、無需安裝,越來越被大眾所喜愛。
- 它的執(zhí)行需要 JDK 環(huán)境,可以測試多種協(xié)議接口。
postman使用
建立響應請求
此處為語雀視頻卡片,點擊鏈接查看:建立響應請求.mp4
前提是要在黑窗口建立連接不關閉:python manage.py runserver 0.0.0.0:8000
查詢發(fā)布會接口舉例
接口文檔如下:
數(shù)據(jù)庫內容如下
用eid查詢后返回數(shù)據(jù)庫中相應的內容
用name查詢后返回值如下
正確的eid和錯誤的那么
返回值不同狀態(tài)碼的對比
此處為語雀視頻卡片,點擊鏈接查看:返回值不同狀態(tài)碼的對比.mp4
斷言
前置腳本定義變量
管理環(huán)境參數(shù)化
此處為語雀視頻卡片,點擊鏈接查看:參數(shù)化 的設置.mp4
用接口的方式添加數(shù)據(jù)
導出Json文件