超詳細——接口測試總結(jié)與分享

金字塔模型回顧

通過之前對金字塔結(jié)構(gòu)的學(xué)習(xí),大概了解到了金字塔模型想告訴我們的幾個道理:

1.越底層,越穩(wěn)定。

金字塔主要觀點認為單元測試的穩(wěn)定性高稚茅,需要多投入。

2.越底層平斩,越高效亚享。

程序的問題,最終還得落在具體的代碼上绘面,所以底層的測試更容易發(fā)現(xiàn)問題欺税。

3.越底層,越低成本揭璃。

越底層測試能越早發(fā)現(xiàn)問題晚凿,越早發(fā)現(xiàn)問題,修復(fù)的成本自然越低瘦馍。

4.越底層歼秽,越難實施。

越底層的實現(xiàn)對技術(shù)專業(yè)性要求越高情组,這點跟第三點有點矛盾燥筷,往往越專業(yè)的人才也意味著人力成本越高。

綜合下金字塔模型院崇,我們提出了橄欖模型(不倒翁模型)肆氓,拿接口測試和UI層測試以及單元測試做了比較,最終認定接口(API)測試可以獲得較高的投資回報底瓣。

  接口測試

  什么是接口(API)

API全稱Application Programming Interface谢揪,這里面我們其實不用去關(guān)注AP,只需要I上就可以捐凭。一個API就是一個Interface拨扶。我們無時不刻不在使用interfaces。我們乘坐電梯里面的按鈕是一個interface茁肠。我們開車一個踩油門它也是一個interface屈雄。我們計算機操作系統(tǒng)也是有很多的接口。(這是目前個人找到比較好理解的一段解釋)

接口就是一個位于復(fù)雜系統(tǒng)之上并且能簡化你的任務(wù)官套,它就像一個中間人讓你不需要了解詳細的所有細節(jié)。那我們今天要講的谷歌搜索系統(tǒng),它提供了搜索接口奶赔,簡化了你的搜索任務(wù)惋嚎。再像用戶登錄頁面,我們只需要調(diào)用我們的登錄接口站刑,我們就可以達到登錄系統(tǒng)的目的另伍。

現(xiàn)在市面上有非常多種風(fēng)格的Web API,目前最流行的是也容易訪問的一種風(fēng)格是REST或者叫RESTful 風(fēng)格的API绞旅。從現(xiàn)在開始摆尝,以下我提到的所有API都是指RESTful風(fēng)格的API。

 什么是接口測試和為什么要做接口測試

接口測試是測試系統(tǒng)組件間接口的一種測試因悲。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點堕汞。測試的重點是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程晃琳,以及系統(tǒng)間的相互邏輯依賴關(guān)系等讯检。

現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的,從安全層面來說卫旱,只依賴前端進行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過前端太容易了)人灼, 需要后端同樣進行控制,在這種情況下就需要從接口層面進行驗證顾翼。

如今系統(tǒng)越來越復(fù)雜投放,傳統(tǒng)的靠前端測試已經(jīng)大大降低了效率,而且現(xiàn)在我們都推崇測試前移适贸,希望測試能更早的介入測試灸芳,那接口測試就是一種及早介入的方式。例如傳統(tǒng)測試取逾,你是不是得等前后端都完成你才能進行測試耗绿,才能進行自動化代碼編寫。 而如果是接口測試砾隅,只需要前后端定義好接口误阻,那這時自動化就可以介入編寫接口自動化測試代碼,手工測試只需要后端代碼完成就可以介入測試后端邏輯而不用等待前端工作完成晴埂。

 接口測試的策略

接口測試也是屬于功能測試究反,所以跟我們以往的功能測試流程并沒有太大區(qū)別,測試流程依舊是:
1.測試接口文檔(需求文檔)
2.根據(jù)接口文檔編寫測試用例(用例編寫完全可以按照以往規(guī)則來編寫儒洛,例如等價類劃分精耐,邊界值等設(shè)計方法)
3. 執(zhí)行測試,查看不同的參數(shù)請求琅锻,接口的返回的數(shù)據(jù)是否達到預(yù)期卦停。

接口測試點

  來個實例

假如我們現(xiàn)在拿到了如下的一個接口文檔(豆瓣圖書開源API:https://developers.douban.com/wiki/?title=book_v2

從文檔中我們可以大體知道這個接口的一些信息向胡,例如接口是GET請求,請求協(xié)議是https惊完,請求的接口服務(wù)器地址是api.douban.com僵芹,接口的路徑是/v2/book/search,接口可以帶有四個參數(shù)q(查詢的關(guān)鍵字)小槐,tag(查詢的tag)拇派,start(取結(jié)果的offset),count(取結(jié)果的條數(shù))凿跳,如果接口請求正常返回狀態(tài)200件豌,返回大體如下結(jié)果:


{
    "start": 0,
    "count": 10,
    "total": 30,
    "books" : [Book, ]
}

假設(shè)這個文檔是完善的(個人認為開發(fā)文檔還可以把參數(shù)類型寫上)這時我們根據(jù)這個文檔,我們設(shè)計了如下一個測試用例:

用q=自動化測試控嗜,start=0茧彤,count=1作為參數(shù)請求搜索圖書接口,那么接口請求的狀態(tài)碼應(yīng)該是200躬审,reponse應(yīng)該返回count=1,start=0等等棘街。

最后我們?nèi)?zhí)行測試用例,假設(shè)我現(xiàn)在沒有別的接口測試用例工具承边,我們就通過瀏覽器來測試這個GET請求的接口遭殉,那么我就可以在瀏覽器低質(zhì)欄輸入:https://api.douban.com/v2/book/search?q=自動化測試&start=0&count=1,并判斷返回信息是否有誤博助。

JSONView 引入

我們發(fā)現(xiàn)直接從Chrome打開我們的查詢圖書的接口請求险污,返回的 數(shù)據(jù)為JSON格式,但是瀏覽器顯示排版難以閱讀富岳,這時我們可以考慮安裝一些插件來便于我們閱讀蛔糯,例如JSONView插件:

https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc 。插件安裝完后我們再次請求搜索圖書接口窖式,我們看到格式化后的排版:

當(dāng)然類似的格式化JSON的插件工具非常多蚁飒,可以自己找個喜歡方便的便可。

 Postman 引入

我們剛剛通過瀏覽器來測試我們的一個GET請求的接口的一個測試用例萝喘,但是平時我們的接口請求方法除了GET還有POST淮逻,PUT,DELETE等等阁簸,那么瀏覽器畢竟不是專業(yè)的接口測試軟件爬早,而且它也無法測試POST這類型的的接口,那么我們就需要找一個專業(yè)的接口測試軟件:Postman启妹。

 Postman 的安裝

以前的Postman 除了mac版本都需要在Chrome的插件安裝筛严,但現(xiàn)在也推出Win和liunx的PC版,所以我們現(xiàn)在只需要到官方網(wǎng)站:https://www.getpostman.com/ 去根據(jù)自己的操作系統(tǒng)下載對應(yīng)的版本便可饶米。

 首次使用

建議去注冊個賬號桨啃,登錄使用车胡,可以不同電腦上方便數(shù)據(jù)同步。

 GET請求

 POST 請求

POST 請求例子照瘾,通過Postman 配置好請求方法吨拍,地址,參數(shù)后發(fā)起請求网杆,最后如下:

也許你也有疑問,如果開發(fā)沒有完備的接口文檔伊滋,我如何知道他API的信息碳却?

這時我們就得通過一些抓包工具抓取這些API信息。

 常見抓包工具

HTTP抓包工具:Fiddler笑旺、Charles昼浦、Firebug、開發(fā)者工具等等筒主。关噪。。

Chrome開發(fā)者工具簡單演示

1.打開Chrome 瀏覽器乌妙,按下F12快捷打開Chrome開發(fā)者工具

2.點擊Network 標(biāo)簽

3.勾選 Preserve log選項使兔,確保頁面刷新不會把已抓到的請求清空

4.打開網(wǎng)站首頁,輸入登錄名和密碼藤韵,點擊登錄

5.查看開發(fā)者工具虐沥,可以找到如下圖Login的請求接口

6.查看Login 請求的詳細信息

請求方法:POST

請求的URL:http://test.logwing.com/Home/Login

請求參數(shù)格式:Content-Type: application/x-www-form-urlencoded

請求參數(shù):UserName=XXX&Password=XXXX&CheckCode=&Remember=false&LoginCheckCode=7119

請求結(jié)果類型:Content-Type: application/json; charset=utf-8

請求結(jié)果:

更多關(guān)于Chrome開發(fā)者工具幫助中文幫助文檔可以參考:https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools

 Fiddler

Chrome開發(fā)者工具依賴于Chrome瀏覽器,也只能抓取Chrome瀏覽器發(fā)起的請求泽艘,如果我們想獲取所有程序發(fā)起的請求欲险,我們就可以通過Fiddler來抓取。

 簡介

Fiddler(中文名稱:小提琴)是一個HTTP的調(diào)試代理匹涮,以代理服務(wù)器的方式天试,監(jiān)聽系統(tǒng)的Http網(wǎng)絡(luò)數(shù)據(jù)流動,F(xiàn)iddler可以也可以讓你檢查所有的HTTP通訊然低,設(shè)置斷點喜每,以及Fiddle所有的“進出”的數(shù)據(jù)(我一般用來抓包),Fiddler還包含一個簡單卻功能強大的基于JScript .NET事件腳本子系統(tǒng),它可以支持眾多的HTTP調(diào)試任務(wù)脚翘。

 工作原理

Fiddler是以代理WEB服務(wù)器的形式工作的,瀏覽器與服務(wù)器之間通過建立TCP連接以HTTP協(xié)議進行通信灼卢,瀏覽器默認通過自己發(fā)送HTTP請求到服務(wù)器,它使用代理地址:127.0.0.1, 端口:8888. 當(dāng)Fiddler開啟會自動設(shè)置代理来农, 退出的時候它會自動注銷代理鞋真,這樣就不會影響別的程序。不過如果Fiddler非正常退出沃于,這時候因為Fiddler沒有自動注銷涩咖,會造成網(wǎng)頁無法訪問海诲。解決的辦法是重新啟動下Fiddler。

 簡單演示

抓取http請求

1.啟動Fiddler檩互。

2.點擊Fiddler主界面右下角的監(jiān)聽程序特幔,選擇ie瀏覽器則該系統(tǒng)上所有的瀏覽器發(fā)起的http請求都將被抓取。

3.打開chrome瀏覽器 闸昨,打開官網(wǎng)首頁蚯斯,輸入用戶名密碼登錄。

4.查看Fiddler主面板饵较,可以查看到Login請求拍嵌。

5.查看Login請求的信息

可以查看到跟Chrome插件查看到類似的信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末循诉,一起剝皮案震驚了整個濱河市横辆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茄猫,老刑警劉巖狈蚤,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異划纽,居然都是意外死亡脆侮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門阿浓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來他嚷,“玉大人,你說我怎么就攤上這事芭毙〗畋停” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵退敦,是天一觀的道長粘咖。 經(jīng)常有香客問我,道長侈百,這世上最難降的妖魔是什么瓮下? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮钝域,結(jié)果婚禮上讽坏,老公的妹妹穿的比我還像新娘。我一直安慰自己例证,他們只是感情好路呜,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般胀葱。 火紅的嫁衣襯著肌膚如雪漠秋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天抵屿,我揣著相機與錄音庆锦,去河邊找鬼。 笑死轧葛,一個胖子當(dāng)著我的面吹牛搂抒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尿扯,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼燕耿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姜胖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤淀散,失蹤者是張志新(化名)和其女友劉穎右莱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體档插,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡慢蜓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郭膛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨抡。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖则剃,靈堂內(nèi)的尸體忽然破棺而出耘柱,到底是詐尸還是另有隱情,我是刑警寧澤棍现,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布调煎,位于F島的核電站,受9級特大地震影響己肮,放射性物質(zhì)發(fā)生泄漏士袄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一谎僻、第九天 我趴在偏房一處隱蔽的房頂上張望娄柳。 院中可真熱鬧,春花似錦艘绍、人聲如沸赤拒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽需了。三九已至跳昼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肋乍,已是汗流浹背鹅颊。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墓造,地道東北人堪伍。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像觅闽,于是被迫代替她去往敵國和親帝雇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蛉拙,服務(wù)發(fā)現(xiàn)尸闸,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 自古以來孕锄,我們對海洋的認識主要集中于"興漁鹽之利吮廉,通舟楫之便"。至于海洋可以作為走向世界通道畸肆、作為經(jīng)濟貿(mào)易重要渠道...
    HELLO派閱讀 1,184評論 0 0