接口測(cè)試工具Postman使用實(shí)踐

      網(wǎng)友投稿 1124 2022-05-29

      接口測(cè)試工具postman使用實(shí)踐

      本篇文章內(nèi)容包括:

      接口的定義

      接口的分類(lèi)

      為何要進(jìn)行接口測(cè)試

      接口文檔示例

      Postman工具簡(jiǎn)介

      借助Postman完成HTTP請(qǐng)求接口測(cè)試

      Postman + Newman + Jenkins 實(shí)現(xiàn)接口自動(dòng)化測(cè)試

      一、接口定義

      接口的定義:接口泛指實(shí)體把自己提供給外界的一種抽象化物(可以為另一實(shí)體),用以將內(nèi)部操作分離出外部溝通方法,使其能在修改內(nèi)部邏輯時(shí)而不影響外界其他實(shí)體與其交互的方式。 在軟件測(cè)試中,我們常說(shuō)的接口一般指兩種:(1)GUI接口(Graphical User Interface):圖形用戶界面,人與程序的接口 ;(2) API接口(Application Programma Interface):應(yīng)用程序編程接口或程序間的接口。本書(shū)中提到的接口特指API接口。 API接口定義:應(yīng)用程序接口是一組定義、程序及協(xié)議的集合,通過(guò) API 接口實(shí)現(xiàn)計(jì)算機(jī)軟件之間的相互通信。API 的一個(gè)主要功能是提供通用功能集。程序員通過(guò)使用 API 函數(shù)開(kāi)發(fā)應(yīng)用程序,從而可以避免編寫(xiě)無(wú)用程序,以減輕編程任務(wù)。很多公司將開(kāi)發(fā)崗位分為前端工程師、后端工程師,他們之間是如何配合工作的呢?一般來(lái)說(shuō),雙方會(huì)協(xié)商接口的定義方式,然后其中一方定義接口(一般由后端定義接口的團(tuán)隊(duì)較多),另一方來(lái)調(diào)用接口,以實(shí)現(xiàn)預(yù)期功能。

      二、接口的分類(lèi)

      依據(jù)所遵循協(xié)議的不同,我們將常見(jiàn)接口簡(jiǎn)單分為以下3類(lèi): (1)HTTP接口:基于HTTP協(xié)議開(kāi)發(fā)的接口。這個(gè)并不能排除沒(méi)有使用其他的協(xié)議。 (2)WebService接口:Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過(guò)來(lái)的請(qǐng)求,輕量級(jí)的獨(dú)立的通訊技術(shù)。簡(jiǎn)單來(lái)說(shuō),假如要從第三方網(wǎng)站或服務(wù)器上獲取資源或信息,一般來(lái)說(shuō),對(duì)方不會(huì)直接將數(shù)據(jù)庫(kù)共享給你,他只能給你提供一個(gè)方法來(lái)獲取數(shù)據(jù),通過(guò)引用該接口就能達(dá)到同步數(shù)據(jù)的目的。 (3)RESTful接口:簡(jiǎn)稱 REST,是描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),其核心是面向資源,REST專門(mén)針對(duì)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)和開(kāi)發(fā)方式,以降低開(kāi)發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。

      接口測(cè)試工具Postman使用實(shí)踐

      基于B/S架構(gòu)的軟件系統(tǒng)接口大多數(shù)為HTTP接口,因此,本書(shū)將重點(diǎn)介紹HTTP接口測(cè)試方法。要測(cè)試HTTP接口,讓我們先來(lái)了解一下HTTP協(xié)議、HTTP請(qǐng)求和響應(yīng)的相關(guān)知識(shí)。

      三、為何要進(jìn)行接口測(cè)試

      1.接口測(cè)試必要性 當(dāng)今的系統(tǒng)復(fù)雜度不斷上升,傳統(tǒng)的測(cè)試方法成本急劇增加且測(cè)試效率大幅下降,所以就要做接口測(cè)試。同時(shí),接口測(cè)試相對(duì)容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成,且相對(duì)UI自動(dòng)化也比較穩(wěn)定,可以減少人工回歸測(cè)試人力成本與時(shí)間,縮短測(cè)試周期,支持后端快速發(fā)版需求。接口持續(xù)集成是為什么能低成本高收益的根源。現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的,從安全層面來(lái)說(shuō),只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過(guò)前面實(shí)在太容易), 需要后端同樣進(jìn)行控制,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證。前后端傳輸、日志打印等信息是否加密傳輸也是需要驗(yàn)證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。

      2.接口測(cè)試原理 模擬客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文,服務(wù)器接收請(qǐng)求報(bào)文后對(duì)相應(yīng)的報(bào)文做處理并向客戶端返回應(yīng)答,客戶端再接收應(yīng)答的一個(gè)過(guò)程。

      3.接口測(cè)試范圍 接口的功能、性能、安全性。重點(diǎn)關(guān)注數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,還包括處理的次數(shù)。

      接口測(cè)試對(duì)象是接口,但隨著系統(tǒng)復(fù)雜度越來(lái)越高,接口越來(lái)越多,完全覆蓋是一件很困難的事情。通常情況下主要測(cè)試最外層的兩類(lèi)接口:數(shù)據(jù)進(jìn)入系統(tǒng)的接口(調(diào)用外部系統(tǒng)的參數(shù)為本系統(tǒng)使用)、數(shù)據(jù)流出系統(tǒng)接口(驗(yàn)證系統(tǒng)處理后的數(shù)據(jù)是否正常)

      四、接口文檔示例

      1.接口文檔應(yīng)該包括哪幾部分?

      接口說(shuō)明

      調(diào)用的url

      請(qǐng)求方法(get、post)

      請(qǐng)求參數(shù),參數(shù)類(lèi)型、請(qǐng)求參數(shù)說(shuō)明

      返回參數(shù)說(shuō)明

      返回示例

      2.示例:

      注:上圖接口文檔工具為ShowDoc

      五、Postman工具簡(jiǎn)介

      1.Sidebar側(cè)邊欄 Postman側(cè)邊欄允許你查找、管理請(qǐng)求和集合。側(cè)邊欄分為兩個(gè)主要的選項(xiàng)卡,包括歷史和集合選項(xiàng)卡。 可以拖動(dòng)右邊的邊來(lái)調(diào)整側(cè)邊欄的寬度。側(cè)邊欄也可以隱藏到小屏幕(標(biāo)題欄 view—>toggle side bar)。 (1)歷史選項(xiàng)卡 通過(guò)Postman應(yīng)用程序發(fā)送的每個(gè)請(qǐng)求都保存在側(cè)邊欄的History選項(xiàng)卡中。 (2)集合選項(xiàng)卡 在側(cè)欄中創(chuàng)建和管理集合選項(xiàng)卡的集合。

      2.Header toolbar

      Postman的頂部工具欄包含以下選項(xiàng): (1)新建按鈕——可以新建請(qǐng)求,集合,環(huán)境等 (2)運(yùn)行按鈕-打開(kāi)集合運(yùn)行頁(yè)面 (3)導(dǎo)入按鈕——導(dǎo)入Postman文件、文件夾、form link等 (4)新窗口圖標(biāo)-打開(kāi)一個(gè)新的tab頁(yè)、新的窗口、新的runner等 (5)構(gòu)建器和團(tuán)隊(duì)庫(kù)選項(xiàng)卡——在請(qǐng)求生成器和Team Library視圖之間切換 (6)抓取API請(qǐng)求圖標(biāo)——使用postman抓取API請(qǐng)求 (7)同步狀態(tài)圖標(biāo)——同步API請(qǐng)求圖標(biāo) (8)用戶下拉——管理集合鏈接和你的個(gè)人資料或登錄/登出,你的Postman帳戶 (9)開(kāi)放API集合(點(diǎn)擊打開(kāi)一個(gè)網(wǎng)址) (10)通知圖標(biāo)-接收通知或廣播 (11)設(shè)置圖標(biāo)——管理Postman應(yīng)用程序設(shè)置,并找到其他支持資源 (12)?——分享按鈕

      3.Builder Postman通過(guò)選項(xiàng)卡布局,用于在構(gòu)建器中發(fā)送和管理API請(qǐng)求。上半部分是請(qǐng)求構(gòu)建器,下半部分是響應(yīng)查看器。 (1) Cookies——管理cookie模式是通過(guò)點(diǎn)擊cookie鏈接訪問(wèn)的。該特性允許你管理與請(qǐng)求相關(guān)的cookie。 (2) Code——生成的代碼片段模式通過(guò)保存按鈕下面的最右邊的Code鏈接。該特性允許你生成與請(qǐng)求相關(guān)的代碼片段,該請(qǐng)求支持20多種語(yǔ)言(http、java、go等語(yǔ)言)

      4.Console Postman有兩個(gè)控制臺(tái),可以幫助我們了解系統(tǒng)后臺(tái)到底發(fā)生了什么。 (1)Postman Console——包含HTTP請(qǐng)求和響應(yīng)的運(yùn)行日志。來(lái)自腳本的日志消息(如在console. Log中)。這個(gè)功能只能在Postman的本地應(yīng)用中使用。 (2)DevTools Console——可以在開(kāi)發(fā)期間記錄診斷信息。

      六、借助Postman完成HTTP請(qǐng)求接口測(cè)試

      1.借助Postman Echo 演示下各種請(qǐng)求的構(gòu)建方法 (1)Get 請(qǐng)求 https://postman-echo.com/get?foo1=bar1&foo2=bar2 HTTP GET請(qǐng)求方法是從服務(wù)器檢索數(shù)據(jù)。數(shù)據(jù)由惟一URI(統(tǒng)一資源標(biāo)識(shí)符)標(biāo)識(shí)。GET請(qǐng)求可以使用“查詢字符串參數(shù)”將參數(shù)傳遞給服務(wù)器。例如,在下列請(qǐng)求中,

      http://example.com/hi/there?hand=wave,參數(shù)“hand”的值等于“wave”。

      (2)POST:URI 傳參

      (3)POST:Form-data 傳參

      (4)POST:x-www-form-urlencoded傳參

      (5)POST:raw 傳參

      (6)POST:binary 傳參

      (7)Authentication Method——權(quán)限認(rèn)證方法

      GET Basic Auth

      增加auth信息

      DigestAuth

      Hawk Auth

      OAuth1.0(verify signature)

      (8)Headers——添加header

      2.接下來(lái),我們拿個(gè)開(kāi)放API來(lái)演示下單一接口測(cè)試流程 示例API:https://developers.douban.com/wiki/?title=book_v2#get_book

      步驟一:使用Postman工具發(fā)送該Get請(qǐng)求,如下圖:

      步驟二:添加測(cè)試

      上圖針對(duì)該API添加了3個(gè)測(cè)試 (1)要求響應(yīng)時(shí)間小于200ms (2)要求status code等于200 (3)要求Response body中包含字符串“金庸”

      注:當(dāng)然你還可以增加更多的測(cè)試點(diǎn)

      七、Postman + Newman + Jenkins 實(shí)現(xiàn)接口自動(dòng)化測(cè)試

      安裝Node.js

      安裝Newman

      查看Newman命令

      (2)部署Jenkins

      2.將接口保存到集合 點(diǎn)擊Save按鈕,將接口保存到一個(gè)集合(可以保存到一個(gè)現(xiàn)有集合中或者新建一個(gè)集合),如下圖:

      4.將集合保存到本地 將集合保存到本地,文件為.json格式,如下圖:

      5.命令行通過(guò)Newman 運(yùn)行集合 (1)打開(kāi)命令行窗口,運(yùn)行如下命令: D:\git-local>newman run MyCollection1.postman_collection.json -g globals.postman_globals1.json

      (2)執(zhí)行結(jié)果如下

      可以看到,其中兩條斷言passed,一條斷言failed,失敗的原因是,我們期望接口響應(yīng)時(shí)間小于200 ms,但是本次接口請(qǐng)求響應(yīng)時(shí)間是270 ms。

      6.通過(guò)Jenkins 調(diào)用Newman,執(zhí)行接口測(cè)試

      執(zhí)行一次構(gòu)建,構(gòu)建失敗(上面的斷言失敗,我們并未修復(fù)),查看構(gòu)建失敗原因。

      7.假設(shè)開(kāi)發(fā)修復(fù)了接口bug,接口響應(yīng)時(shí)間減少了,我們需要回歸測(cè)試。(我們將斷言響應(yīng)小于200 ms,修改成1000 ms,讓斷言passed)

      8.演示一個(gè)如何調(diào)用data file 參數(shù)化用例 我這里有一個(gè)集合,3個(gè)接口,第一個(gè)接口為登錄接口,第二個(gè)接口為獲取登錄用戶信息接口,第三個(gè)接口為修改密碼接口 登錄接口如下:

      測(cè)試腳本如下:

      參數(shù)化json文件內(nèi)容如下

      (1)好我們調(diào)用json文件,執(zhí)行下集合,結(jié)果如下:

      結(jié)果還不錯(cuò),執(zhí)行了3次,參數(shù)都是取自用例文件(json文件),斷言也取自用例文件。

      美中不足的是,第二個(gè)和第三個(gè)接口也跟著迭代了3次(這并不是我們期望的結(jié)果),這是因?yàn)榧线\(yùn)行器中的迭代次數(shù)是針對(duì)所有接口的設(shè)置。

      (2)那如果,我們想第一個(gè)接口運(yùn)行3遍,第二、三個(gè)接口只運(yùn)行一遍,該如何做呢?Postman 給我們提供了一個(gè)內(nèi)置方法,設(shè)置接口運(yùn)行順序postman.setNextRequest('');

      注意:迭代次數(shù)從0開(kāi)始 當(dāng)?shù)螖?shù)!==0時(shí),就停止本次迭代(意思就是,第一次迭代全運(yùn)行,第二次迭代開(kāi)始就不執(zhí)行第二、三個(gè)接口了),好,再次運(yùn)行集合,看看結(jié)果

      很好,第一次迭代,執(zhí)行了3個(gè)接口;第二、三次迭代只執(zhí)行了第一個(gè)接口。

      本文轉(zhuǎn)載自異步社區(qū)。

      HTTP API 自動(dòng)化測(cè)試

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:mongodb文檔基本操作簡(jiǎn)介
      下一篇:帶你詳細(xì)入門(mén)華為云會(huì)議【玩轉(zhuǎn)華為云】
      相關(guān)文章
      色欲aⅴ亚洲情无码AV蜜桃| 亚洲色大成网站www永久一区| 亚洲?V无码成人精品区日韩| 亚洲AV无码久久久久网站蜜桃 | 日日摸日日碰夜夜爽亚洲| 亚洲国产精品lv| 亚洲人成无码网站| 亚洲精品456播放| 校园亚洲春色另类小说合集| 婷婷亚洲综合五月天小说在线 | 亚洲第一精品在线视频| 亚洲AV无码乱码国产麻豆穿越 | 亚洲AV区无码字幕中文色| 亚洲成AV人片在线观看WWW| 国产AV无码专区亚洲AVJULIA| 国产精品亚洲A∨天堂不卡| 日韩va亚洲va欧洲va国产| 久久精品国产亚洲沈樵| 久久久久亚洲精品美女| 久久久无码精品亚洲日韩按摩 | 国产亚洲视频在线观看| 一本久到久久亚洲综合| 亚洲婷婷国产精品电影人久久| 色欲色欲天天天www亚洲伊| 怡红院亚洲红怡院在线观看| 亚洲精品国精品久久99热| 久久久久亚洲AV成人网| 国产成人亚洲综合无码精品 | 亚洲日韩国产一区二区三区在线| 亚洲人成人无码.www石榴| 亚洲av午夜国产精品无码中文字| 国产青草亚洲香蕉精品久久 | 亚洲国产日韩在线| 亚洲欧洲日韩国产一区二区三区| 久久亚洲最大成人网4438| 亚洲av无码无线在线观看| 亚洲欧洲一区二区三区| 国产日韩亚洲大尺度高清| 亚洲一区二区在线免费观看| 亚洲中文字幕无码av在线| 亚洲精品无码少妇30P|