1.接口分類(lèi)
接口分為兩種,一種是程序內(nèi)部的接口,另一種是系統(tǒng)對(duì)外的接口.
外部接口:從別的網(wǎng)站或服務(wù)器獲取資源信息,調(diào)用別人寫(xiě)好的方法,來(lái)獲取數(shù)據(jù),通過(guò)引用別人提供的接口,就能使用它寫(xiě)好的方法,從而達(dá)到數(shù)據(jù)貢獻(xiàn)的目的,如app調(diào)用接口,二手項(xiàng)目調(diào)用支付寶接口,調(diào)用微信接口等.
程序內(nèi)部接口:方法與方法直接,模塊與模塊直接進(jìn)行交互,程序內(nèi)部拋出的接口,eg:蜂鳥(niǎo)網(wǎng)論壇發(fā)帖,發(fā)帖時(shí),必須登錄,調(diào)用用戶登錄接口,蜂鳥(niǎo)網(wǎng)的登錄接口就是程序內(nèi)部的接口.
接口分類(lèi):webservice&http api(常用)
webservice :走的是soap協(xié)議通過(guò)http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的,我們?cè)跍y(cè)試的時(shí)候通常用工具進(jìn)行調(diào)用測(cè)試.
http api :走h(yuǎn)ttp協(xié)議,通過(guò)路徑區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串,有g(shù)et和post等方法.
報(bào)文:報(bào)文(message)是網(wǎng)絡(luò)中交換與傳輸?shù)臄?shù)據(jù)單元交掏,即站點(diǎn)一次性要發(fā)送的數(shù)據(jù)塊
通常url的構(gòu)成方式:域名/路徑?參數(shù)
json串表達(dá)方式{"key":"value"}
*cookie和session:
cookie:通俗理解,就是存在本地的鍵值對(duì)
session:通俗理解,就是存在服務(wù)器的鍵值對(duì)
2.接口測(cè)試必要性
可以發(fā)現(xiàn)很多前臺(tái)頁(yè)面發(fā)現(xiàn)不到的bug
檢查系統(tǒng)的異常處理能力
檢查系統(tǒng)的安全,穩(wěn)定性
前端改動(dòng),不影響接測(cè)試
3.接口測(cè)試流程
接口測(cè)試流程同功能測(cè)試流程一樣:
需求評(píng)審,熟悉業(yè)務(wù)和需求
開(kāi)發(fā)提供接口文檔
編寫(xiě)接口測(cè)試用例
用例評(píng)審
提測(cè)后開(kāi)始測(cè)試,提交測(cè)試報(bào)告
4.接口測(cè)試文檔包含內(nèi)容
接口說(shuō)明
調(diào)用url
請(qǐng)求方法(get/post)
請(qǐng)求參數(shù),參數(shù)類(lèi)型,請(qǐng)求參數(shù)說(shuō)明
返回參數(shù)說(shuō)明
如何測(cè)試http接口
url?參數(shù)1=value&參數(shù)2=value
這種是最簡(jiǎn)單的一種,問(wèn)號(hào)前面是請(qǐng)求url速侈,后面是請(qǐng)求的參數(shù)名和參數(shù)值,多個(gè)參數(shù)用&來(lái)連接
例如:https://api.douban.com/v2/book/search?q=鄒偉偉
還有一種就是入?yún)⑹莏son串的堵漱,那就不能拼接參數(shù)了西壮,需要借助工具來(lái)完成比如postman
get&post
get請(qǐng)求的話,直接在瀏覽器里輸入后回車(chē),直接請(qǐng)求结蟋,只要在瀏覽器里面直接能請(qǐng)求到的或听,都是get請(qǐng)求
如果是post的請(qǐng)求的話探孝,就不行了,就得借助工具來(lái)發(fā)送誉裆。
GET請(qǐng)求和POST請(qǐng)求的區(qū)別:
1顿颅、GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中足丢。
2粱腻、GET的URL會(huì)有長(zhǎng)度上的限制庇配,則POST的數(shù)據(jù)則可以非常大。
3绍些、POST比GET安全捞慌,因?yàn)閿?shù)據(jù)在地址欄上不可見(jiàn)。
4柬批、一般get請(qǐng)求用來(lái)獲取數(shù)據(jù)啸澡,post請(qǐng)求用來(lái)發(fā)送數(shù)據(jù)。(get 比如打開(kāi)一個(gè)網(wǎng)頁(yè),打開(kāi)蜂鳥(niǎo)論壇,后面都會(huì)帶有參數(shù),就是一個(gè)最基本的get請(qǐng)求.)
其實(shí)上面這幾點(diǎn)氮帐,只有最后一點(diǎn)說(shuō)的是比較靠譜的嗅虏,第一點(diǎn)post請(qǐng)求也可以把數(shù)據(jù)放到url里面,get請(qǐng)求其實(shí)也沒(méi)長(zhǎng)度限制上沐,post請(qǐng)求看起來(lái)參數(shù)是隱式的皮服,稍微安全那么一些些,但是那只是對(duì)于小白用戶來(lái)說(shuō)的参咙,就算post請(qǐng)求冰更,你通過(guò)抓包也是可以抓到參數(shù)的。所以上面這些面試的時(shí)候你說(shuō)出來(lái)就行了
http狀態(tài)碼
1XX:指示信息--表示請(qǐng)求已接受,繼續(xù)處理.
2XX:成功---表示請(qǐng)求已經(jīng)被成功,接收,理解,接受
3XX:重定向---要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
4XX:客戶端錯(cuò)誤---請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn).
5XX:服務(wù)器錯(cuò)誤---服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
接口用例設(shè)計(jì)
一.通過(guò)性驗(yàn)證:首席保證這個(gè)接口功能是好用的,也就是正常通過(guò)性能測(cè)試,按照接口文檔上的參數(shù),進(jìn)行正常傳入,是否可以正確的返回參數(shù).
二.參數(shù)組合:現(xiàn)在有一個(gè)操作商品的接口昂勒,有個(gè)字段type,傳1的時(shí)候代表修改商品舟铜,商品id戈盈、商品名稱(chēng)、價(jià)格有一個(gè)是必傳的谆刨,type傳2的時(shí)候是刪除商品塘娶,商品id是必傳的,這樣的痊夭,就要測(cè)參數(shù)組合了刁岸,type傳1的時(shí)候,只傳商品名稱(chēng)能不能修改成功她我,id虹曙、名稱(chēng)、價(jià)格都傳的時(shí)候能不能修改成功
三.接口安全:
1番舆、繞過(guò)驗(yàn)證酝碳,比如說(shuō)購(gòu)買(mǎi)了一個(gè)商品,它的價(jià)格是300元恨狈,那我在提交訂單時(shí)候疏哗,我把這個(gè)商品的價(jià)格改成3元,后端有沒(méi)有做驗(yàn)證禾怠,更狠點(diǎn)返奉,我把錢(qián)改成-3贝搁,是不是我的余額還要增加?
2芽偏、繞過(guò)身份授權(quán)雷逆,比如說(shuō)修改商品信息接口,那必須得是賣(mài)家才能修改哮针,那我傳一個(gè)普通用戶关面,能不能修改成功,我傳一個(gè)其他的賣(mài)家能不能修改成功
3十厢、參數(shù)是否加密等太,比如說(shuō)我登陸的接口,用戶名和密碼是不是加密蛮放,如果不加密的話缩抡,別人攔截到你的請(qǐng)求,就能獲取到你的信息了包颁,加密規(guī)則是否容易破解瞻想。
4、密碼安全規(guī)則娩嚼,密碼的復(fù)雜程度校驗(yàn)
四.異常驗(yàn)證:
異常的蘑险,也就是我不按照你接口文檔上的要求輸入?yún)?shù),來(lái)驗(yàn)證接口對(duì)異常情況的校驗(yàn)岳悟。比如說(shuō)必填的參數(shù)不填佃迄,輸入整數(shù)類(lèi)型的,傳入字符串類(lèi)型贵少,長(zhǎng)度是10的呵俏,傳11,總之就是你說(shuō)怎么來(lái)滔灶,我就不怎么來(lái)普碎,其實(shí)也就這三種,必傳非必傳录平、參數(shù)類(lèi)型麻车、入?yún)㈤L(zhǎng)度。
接口用例包含的內(nèi)容
咱們測(cè)試接口的話斗这,肯定要寫(xiě)測(cè)試用例绪氛,寫(xiě)測(cè)試用例的話,就要有一個(gè)用例模板涝影,那需要有哪些字段呢枣察?
1、項(xiàng)目是哪個(gè)項(xiàng)目的
2、模塊這個(gè)接口是屬于哪個(gè)功能模塊的
3序目、用例id
4臂痕、接口名稱(chēng)
5、用例標(biāo)題用例是干嘛的
6猿涨、請(qǐng)求方式GET/POST
7握童、請(qǐng)求url,url地址
8、請(qǐng)求參數(shù)
9叛赚、前置條件有依賴(lài)的時(shí)候澡绩,比如說(shuō)要測(cè)登錄失敗3次的
10、結(jié)果驗(yàn)證預(yù)期結(jié)果
11俺附、請(qǐng)求報(bào)文
12肥卡、返回報(bào)文
13、測(cè)試結(jié)果通過(guò)/失敗
14事镣、測(cè)試人員