1 什么是接口測試?
接口測試是測試系統(tǒng)組件間接口的一種測試锋玲。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個
子系統(tǒng)之間的交互點仗哨。測試的重點是要檢查數(shù)據(jù)的交換桥言、傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等谋国。
2 為什么要做接口測試载矿?
接口測試介于單元測試與系統(tǒng)測試之間,單元測試一般由開發(fā)完成(不要相信開發(fā))
接口是各種系統(tǒng)功能的基礎(chǔ),一旦接口出現(xiàn)問題可能會引起許多系統(tǒng)功能的問題并且不容易定位
開展接口測試可以及早發(fā)現(xiàn)問題闷盔,有效降低測試成本
接口一般較UI相對穩(wěn)定弯洗,利于進行自動化和持續(xù)集成
3 接口測試都測什么?
接口測試一般有以下崗位實施:
手工測試崗:先提測接口再提出功能逢勾,兼做接口自動化
服務(wù)端測試崗:梳理代碼牡整,審核接口實現(xiàn)邏輯是否與業(yè)務(wù)設(shè)計一致,技術(shù)實現(xiàn)邏輯的合理性溺拱,異常流測試逃贝,接口壓測及安全性測試
測試開發(fā)崗:專職做接口(或UI)的自動化用例開發(fā),測試工具開發(fā)
4 業(yè)務(wù)邏輯
4 怎樣掌握接口測試迫摔?
1 了解OSI網(wǎng)絡(luò)模型沐扳,TCP/UDP協(xié)議,掌握HTTP/HTTPS協(xié)議句占,了解RPC, Web Service及REST沪摄,理解Session和Cookie
2 掌握常用的接口測試工具如curl命令,Postman,Jmeter,LR,SoupUI,AB等
3 掌握基本的抓包工具如Chrome開發(fā)者工具,Fiddler,Charles,Wireshark,tcpdumps等
4掌握一門編程語言Python或Java
5 了解Nginx, Apache, Tomcat等服務(wù)器中間件
6 掌握數(shù)據(jù)庫基本查詢命令,及一些NoSQL(如Redis)操作纱烘,用于檢查響應(yīng)結(jié)果
7 掌握基本的Linux日子查詢和篩選命令
5 接口測試重難點
動態(tài)變量參數(shù)化
接口依賴及中間變量問題
異步接口結(jié)果驗證問題
相應(yīng)參數(shù)及嵌套很多的驗證問題
接口測試框架的穩(wěn)定性問題
資源清理問題
多接口場景測試
6? 常見軟件默認端口
Apache/Nginx(HTTP服務(wù)): 80? https:443
Tomcat: 8080
Oracle: 1521
MySQL: 3306
SQL Server: 1433
PostgreSQL: 5432
MongoDB: 27017
Redis: 6379
Memcached: 11211
查看端口命令
Windows: netstat -ano|findstr 端口號
Linux: netstat -ano|grep 端口號
7 常見接口類型杨拐?
HTTP接口,RPC接口擂啥,Web Service接口哄陶, Dubble接口,RESTful接口哺壶,其中RESTful接口是基于HTTP接口的屋吨,Web Service及Dubble屬于RPC接口
HTTP接口:通過HTTP協(xié)議傳輸?shù)慕涌冢梢詡鬏斘谋颈韱螖?shù)據(jù)山宾,也可以傳輸Json類型的對象數(shù)據(jù)或xml類型的數(shù)據(jù)
RPC: 遠程方法調(diào)用至扰,隨著分布式系統(tǒng)的出現(xiàn),當(dāng)你需要調(diào)用部署到其他服務(wù)器上的方法時塌碌,需要用到RPC渊胸。RPC只是提出了這樣一個問題,有很多種解決方案台妆,比如WebService(基于SOAP協(xié)議)翎猛, REST(基于HTTP協(xié)議)。
SOAP: 簡單面向?qū)ο髤f(xié)議接剩,基于HTTP切厘,使用xml作為默認傳輸格式
Web Service: 基于SOAP協(xié)議的一種RPC實現(xiàn)方案。相比傳統(tǒng)的HTTP接口只傳輸文本請求和文本相應(yīng)懊缺,通過Web Service可以直接拿到遠程的一個對象疫稿,并能夠直接調(diào)用該對象的屬性和方法培他,比HTTP更高級。
REST/RESTful API: REST遗座,表述性狀態(tài)轉(zhuǎn)移舀凛。一種HTTP接口的設(shè)計風(fēng)格,將一切接口視為資源途蒋,要求接口路徑同意管理猛遍,分版本管理,規(guī)定了GET/POST等請求以及HTTP狀態(tài)碼的使用規(guī)范号坡,默認使用JSON格式傳輸懊烤。RESTful API即滿足REST風(fēng)格即設(shè)計規(guī)范的API接口
8 接口測試的流程
1 熟悉API接口文檔
2 編寫測試用你
3? 利用接口測試工具,根據(jù)測試用例進行API手工測試或者接口自動化測試
注意事項:沒有接口文檔宽堆,讓開發(fā)提供
9 接口測試文檔
增加課程接口
用來創(chuàng)建一個新的培訓(xùn)課程
請求語法
POST /api/mgr/sq_mgr/ HTTP/1.1
Content-Type:?? application/x-www-form-urlencoded
url請求參數(shù)
無url請求參數(shù)
請求體內(nèi)容
action?? 必填???? 填寫add_course腌紧,表明是為了創(chuàng)建課程
data???? 必填???? 存儲創(chuàng)建課程的信息,包括名稱畜隶、描述壁肋、顯示次序。
為json格式代箭。例如:
{
? "name":"初中化學(xué)",
?"desc":"初中化學(xué)課程",
? "display_idx":"4"
}
響應(yīng)語法
HTTP/1.1 200 OK
Content-Type: application/json
頭部信息
Content-Type 必填 正常情況下該值將被設(shè)為application/json墩划,表示返回 JSON 格式的文本信息涕刚。
響應(yīng)內(nèi)容
如果請求成功嗡综,返回json格式的消息體,如下所示杜漠,retcode值為0表示添加成功极景,id是新加課程對應(yīng)的ID號
{
??? "retcode": 0
??? "id" : 1212
}
說明
增加課程的名稱如果已經(jīng)存在,則會創(chuàng)建失敗返回結(jié)果為
{
??? "retcode": 2,
??? "reason": "同名課程已經(jīng)存在"
}
10 接口測試樣例
11 第三方接口測試庫(python)
內(nèi)置庫:httplib,urllib2
第三方庫:cn.python-requests.org/zh-CN/latest/