接口測(cè)試 | 接口測(cè)試基礎(chǔ)



一龄砰、接口測(cè)試簡(jiǎn)介

1.1 接口的定義及分類

??接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試眷蜓。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)蚁袭。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換黎炉,傳遞和控制管理過(guò)程玷室,以及系統(tǒng)間的相互邏輯依賴關(guān)系等

接口分類 說(shuō)明
系統(tǒng)內(nèi)部接口 模塊間的相互調(diào)用(灰盒測(cè)試)
系統(tǒng)外部接口 1. 軟件接口:

? 服務(wù)器接口

??瀏覽器與服務(wù)器的接口桃煎,通過(guò)http協(xié)議來(lái)實(shí)現(xiàn)瀏覽器和服務(wù)器間的數(shù)據(jù)傳遞

? 外部接口

??常見(jiàn)的典型例子就是第三方登錄篮幢、第三方支付等,通過(guò)調(diào)用第三方接口并返回當(dāng)前系統(tǒng)

2. 硬件接口

目前比較流行的接口測(cè)試是軟件接口測(cè)試

1.2 接口測(cè)試

  • 接口測(cè)試屬于黑盒測(cè)試
接口測(cè)試 說(shuō)明
原理 通過(guò)測(cè)試程序模擬客戶端向服務(wù)器發(fā)送請(qǐng)求为迈,服務(wù)器收到請(qǐng)求后做出相應(yīng)的處理并將響應(yīng)信息發(fā)送給客戶端三椿,客戶端接收響應(yīng)數(shù)據(jù)的過(guò)程
本質(zhì) 本質(zhì)是基于某種協(xié)議,發(fā)送一個(gè)Request請(qǐng)求給服務(wù)器曲尸,然后服務(wù)器返回一個(gè)Response響應(yīng)數(shù)據(jù)赋续,然后對(duì)響應(yīng)數(shù)據(jù)進(jìn)行分析,判斷是否與我們的預(yù)期是否一致另患,從而驗(yàn)證功能是否正確纽乱,這就是接口測(cè)試

1.2.1 網(wǎng)站架構(gòu)的設(shè)計(jì)風(fēng)格

??隨著互聯(lián)網(wǎng)的不斷發(fā)展,網(wǎng)站設(shè)計(jì)風(fēng)格逐漸統(tǒng)一于RESTFUL架構(gòu)風(fēng)格,HTTP就是該風(fēng)格的典型應(yīng)用

REST(表現(xiàn)層狀態(tài)轉(zhuǎn)化)最大特點(diǎn):

  • ? 資源
    ??網(wǎng)絡(luò)上的一個(gè)實(shí)體或者說(shuō)是網(wǎng)絡(luò)上的一個(gè)信息宰睡,它可以是一段文本吨些、一張圖片、一種服務(wù)等
    ??資源總是通過(guò)某種載體反應(yīng)其內(nèi)容薯嗤,文本可以用txt格式表現(xiàn),也可以用HTML格式纤泵、XML格式骆姐、二進(jìn)制格式等
    ??JSON是現(xiàn)在最常用的資源表示格式
  • ? 統(tǒng)一接口(地址)
    ??RESTFUL風(fēng)格規(guī)定,數(shù)據(jù)的元操作捏题,即CRUD(create玻褪、read、update公荧、delete)即數(shù)據(jù)的增刪改查操作带射,分別對(duì)應(yīng)于HTTP方法,就統(tǒng)一了數(shù)據(jù)操作的接口
HTTP方法 類似于 說(shuō)明
GET SELECT 用來(lái)獲取資源(一項(xiàng)或多項(xiàng))
POST UPDATE 用來(lái)新建資源循狰,也可以用來(lái)更新資源
PUT CREATE 用來(lái)更新資源
DELETE DELETE 用來(lái)刪除資源
  • ? URI
    統(tǒng)一資源標(biāo)識(shí)符窟社,URL是URI的子集
    ??可以用一個(gè)URI指向資源券勺,即每一個(gè)URI都對(duì)應(yīng)一個(gè)特定的資源;要想獲取這個(gè)資源灿里,訪問(wèn)它的URI就可以
  • ? 無(wú)狀態(tài)
    ??所有的資源都可以通過(guò)URI定位关炼,而且這個(gè)定位與其他資源無(wú)關(guān),也不會(huì)因?yàn)槠渌Y源的變化而改變

綜上所述:

  1. 在RESTFUL中一切都認(rèn)為是資源钠四,每個(gè)資源都有對(duì)應(yīng)的URI標(biāo)識(shí)
  2. 客戶端通過(guò)GET盗扒、POST、PUT缀去、DELETE等http方法對(duì)資源進(jìn)行操縱侣灶,即客戶端通過(guò)http協(xié)議與服務(wù)器通信,并獲取資源信息

二缕碎、HTTP協(xié)議

超文本傳輸協(xié)議

HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議

HTTP特點(diǎn) 說(shuō)明
支持C/S的模式
簡(jiǎn)單快速 客戶向服務(wù)器請(qǐng)求服務(wù)時(shí)褥影,只需傳送請(qǐng)求方法和路徑

請(qǐng)求方法常用的有GET、HEAD咏雌、POST

每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同

由于HTTP協(xié)議簡(jiǎn)單凡怎,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快
靈活 HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象

正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記
無(wú)連接 無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求

服務(wù)器處理完客戶的請(qǐng)求赊抖,并收到客戶的應(yīng)答后统倒,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間
無(wú)狀態(tài) HTTP協(xié)議是無(wú)狀態(tài)協(xié)議

無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力

缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息氛雪,則它必須重傳房匆,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面报亩,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快

2.1 URL

格式:http://host[:port][abc_path]

2.2 請(qǐng)求與響應(yīng)

HTTP消息由客戶端到服務(wù)器的請(qǐng)求和服務(wù)器到客戶端的響應(yīng)組成

請(qǐng)求消息和響應(yīng)消息都是由

  1. 開(kāi)始行
    對(duì)于請(qǐng)求消息——請(qǐng)求行浴鸿,對(duì)于響應(yīng)消息——狀態(tài)行
  2. 消息報(bào)頭(可選)
    也稱請(qǐng)求頭
    對(duì)于請(qǐng)求消息——請(qǐng)求報(bào)頭,對(duì)于響應(yīng)消息——響應(yīng)報(bào)頭
  3. 消息正文(可選)
    也稱請(qǐng)求實(shí)體或響應(yīng)實(shí)體
    對(duì)于請(qǐng)求消息——請(qǐng)求正文弦追,對(duì)于響應(yīng)消息——響應(yīng)正文
  4. 空行(只有CRLF的行)

2.2.1 消息內(nèi)容說(shuō)明

名稱 說(shuō)明
請(qǐng)求消息

請(qǐng)求行
1. 請(qǐng)求方法

2. 請(qǐng)求地址

3. 協(xié)議/協(xié)議版本CRLF

eg:

GET https://www.fiddler2.com/UpdateCheck.aspx?isBeta=False HTTP/1.1
響應(yīng)消息

狀態(tài)行
1. 協(xié)議/協(xié)議版本

2. 狀態(tài)碼

3. 狀態(tài)原因

eg:

HTTP/1.1 200 OK
消息報(bào)頭 每一個(gè)報(bào)頭域都是由【名字+:+空格+值】組成岳链,消息報(bào)頭域的名字是大小寫(xiě)無(wú)關(guān)的

響應(yīng)消息

請(qǐng)求正文
服務(wù)器返回的資源的內(nèi)容
  • 請(qǐng)求正文與消息報(bào)頭由空行隔開(kāi)
  • 響應(yīng)正文與消息報(bào)頭由空行隔開(kāi)
  • GET沒(méi)有請(qǐng)求正文信息

提示:

  • CRLF 回車(chē)換行(\r\n)

參閱:

2.2.2 響應(yīng)消息狀態(tài)代碼

三位數(shù)字組成掸哑,第一個(gè)數(shù)字定義了響應(yīng)的類別,且有五種可能取

響應(yīng)的狀態(tài)碼類型 說(shuō)明
1xx 指示信息–表示請(qǐng)求已接收零远,繼續(xù)處理
2xx 成功苗分,表示請(qǐ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)求
常見(jiàn)狀態(tài)代碼 狀態(tài)描述 說(shuō)明
200 OK 客戶端請(qǐng)求成功
400 Bad Request 客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤躺枕,不能被服務(wù)器所理解
401 Unauthorized 請(qǐng)求未經(jīng)授權(quán)服猪,這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
403 Forbidden 服務(wù)器收到請(qǐng)求供填,但是拒絕提供服務(wù)
404 Not Found 請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL
500 Internal Server Error 服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable 服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求罢猪,一段時(shí)間后可能恢復(fù)正常

eg:

HTTP/1.1 200 OK (CRLF)

2.2.3 消息報(bào)頭

HTTP消息報(bào)頭包括普通報(bào)頭近她、請(qǐng)求報(bào)頭、響應(yīng)報(bào)頭膳帕、實(shí)體報(bào)頭


三粘捎、開(kāi)展接口測(cè)試

3.1 獲取接口文檔

跟開(kāi)發(fā)要接口文檔

eg:

應(yīng)包括異常處理數(shù)據(jù)

提示:

3.2 構(gòu)造測(cè)試數(shù)據(jù),編寫(xiě)測(cè)試用例

  1. 編號(hào)
  2. 測(cè)試標(biāo)題
  3. 輸入
  4. 與其輸出

3.3 正式開(kāi)展測(cè)試

  • 安裝第三方庫(kù)
    pip3 install requests
  • 演示代碼
  1. 構(gòu)造接口地址
  2. 構(gòu)造請(qǐng)求參數(shù)
  3. 發(fā)送get/post請(qǐng)求
  4. 獲取響應(yīng)數(shù)據(jù)
# 導(dǎo)包
import requests
from jsonpath_rw import jsonpath, parse


if __name__ == '__main__':
    # 構(gòu)造接口地址
    qgtq_url = "http://v.juhe.cn/weather/index"
    # 構(gòu)造請(qǐng)求參數(shù)
    para1 = {"cityname": "蘇州", "key": "6156dedaef9f2"}
    # 發(fā)送get請(qǐng)求
    r = requests.get(qgtq_url, para1)
    print("狀態(tài)碼:", r.status_code)
    # 獲取響應(yīng)數(shù)據(jù)(該接口中默認(rèn)JSON)
    res = r.json()
    print(res, "\n")
    # 利用jsonpath_rw處理JSON數(shù)據(jù)危彩,獲取其中的today的數(shù)據(jù)
    jsonpath_expr = parse('result[*].today[*]')
    mes = [match.value for match in jsonpath_expr.find(res)][0]
    for i in mes.items():
        print(i[0], ":", i[1])
    # print("\n", res["result"])
    # print("\n", res["result"]["today"])
    # print("\n", res["result"]["today"]["weather"])

3.4 實(shí)戰(zhàn)

3.4.1 配置WebTours網(wǎng)站

平臺(tái) 下載地址
官網(wǎng) https://marketplace.microfocus.com/appdelivery/content/web-tours-sample-application

Strawberry Perl 1. http://strawberryperl.com/releases.html

2. https://www.lanzous.com/i62w99i
WebTours https://www.lanzous.com/i62wehg

參閱:

3.4.2 WebTours

有屬于參數(shù)關(guān)聯(lián)的接口

  1. 導(dǎo)包
  2. 構(gòu)造接口地址
  3. 構(gòu)造請(qǐng)求參數(shù)
  4. 發(fā)送接口請(qǐng)求
s = requests.session()
s.請(qǐng)求方法(url,params)
  1. 使用正則表達(dá)式匹配接口響應(yīng)數(shù)據(jù)的內(nèi)容
re.findall()
  1. 構(gòu)造接口地址
  2. 構(gòu)造請(qǐng)求參數(shù)
  3. 發(fā)送接口請(qǐng)求
s.請(qǐng)求方法(url,params)
  1. 打印結(jié)果

更新中......


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末攒磨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汤徽,更是在濱河造成了極大的恐慌娩缰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谒府,死亡現(xiàn)場(chǎng)離奇詭異拼坎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)完疫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)泰鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人壳鹤,你說(shuō)我怎么就攤上這事盛龄。” “怎么了器虾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵讯嫂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我兆沙,道長(zhǎng)欧芽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任葛圃,我火速辦了婚禮千扔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘库正。我一直安慰自己曲楚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布褥符。 她就那樣靜靜地躺著龙誊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喷楣。 梳的紋絲不亂的頭發(fā)上趟大,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天鹤树,我揣著相機(jī)與錄音,去河邊找鬼逊朽。 笑死罕伯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叽讳。 我是一名探鬼主播追他,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼岛蚤!你這毒婦竟也來(lái)了邑狸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涤妒,失蹤者是張志新(化名)和其女友劉穎推溃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體届腐,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铁坎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犁苏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硬萍。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖围详,靈堂內(nèi)的尸體忽然破棺而出朴乖,到底是詐尸還是另有隱情,我是刑警寧澤助赞,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布买羞,位于F島的核電站,受9級(jí)特大地震影響雹食,放射性物質(zhì)發(fā)生泄漏畜普。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一群叶、第九天 我趴在偏房一處隱蔽的房頂上張望吃挑。 院中可真熱鬧,春花似錦街立、人聲如沸舶衬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逛犹。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虽画,已是汗流浹背掠手。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狸捕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓众雷,卻偏偏與公主長(zhǎng)得像灸拍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砾省,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)知識(shí) What's 滲透測(cè)試 滲透測(cè)試(penetration test)并沒(méi)有一個(gè)標(biāo)準(zhǔn)的定義鸡岗,國(guó)外一些安全組...
    作業(yè)沒(méi)寫(xiě)完閱讀 1,006評(píng)論 0 1
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,671評(píng)論 2 20
  • 北京視聯(lián)動(dòng)力國(guó)際信息技術(shù)有限公司 崗位職責(zé):1、負(fù)責(zé)Android機(jī)頂盒新功能的開(kāi)發(fā)编兄。2轩性、參與JNI接口的設(shè)計(jì)3、...
    Elder閱讀 231評(píng)論 0 0
  • 引言 HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議狠鸳,由于其簡(jiǎn)捷揣苏、快速的方式,適用于分布式超媒體信息系統(tǒng)件舵。它于19...
    北京小六閱讀 766評(píng)論 0 8
  • 大家早上好铅祸! 今日秋分坑质,秋分,“分”即為“半”临梗,此時(shí)涡扼,全球晝夜等長(zhǎng)。古籍《春秋繁露》記載:秋分者盟庞,陰陽(yáng)相半也吃沪,故晝...
    陽(yáng)光溫溫閱讀 471評(píng)論 0 2