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