8. 利用Xebium進(jìn)行API測(cè)試

說(shuō)到API測(cè)試,很多人會(huì)問(wèn)伐庭,為什么要自己coding粉渠,集成進(jìn)Xebium分冈,用Postman或者其他HTTP接口測(cè)試的工具不就可以了嗎?老實(shí)說(shuō)霸株,我之前也用這些來(lái)做測(cè)試雕沉,但隨著項(xiàng)目發(fā)展,你要維護(hù)的內(nèi)容越來(lái)越多去件,尤其不便的是坡椒,一套隨時(shí)可用的數(shù)據(jù)和判斷依據(jù)的變動(dòng),很讓人抓狂尤溜。為什么不和db和界面上抓取的內(nèi)容來(lái)當(dāng)作API接口的輸入輸出來(lái)動(dòng)態(tài)引入呢倔叼?而且一套系統(tǒng)進(jìn)行管理也更讓人理解,更方便易用宫莱,由于是web界面丈攒,測(cè)試做完腳本,程序員在開(kāi)發(fā)期也可以直接當(dāng)作調(diào)試使用授霸,如果是了解腳本的PM巡验,自己可以先寫(xiě)輸入輸出,敏捷的目標(biāo)不就可以更進(jìn)一步嗎碘耳?

說(shuō)做就做显设,同樣的利用SLIM的特點(diǎn),只要自己寫(xiě)相關(guān)的測(cè)試中間件的類(lèi)辛辨,實(shí)現(xiàn)http或者h(yuǎn)ttps發(fā)送請(qǐng)求捕捂,構(gòu)造http頭,cookie部分和body斗搞,返回的response利用JsonPath或者XPath來(lái)解析判斷返回?cái)?shù)據(jù)的內(nèi)容或者順序結(jié)構(gòu)指攒,這樣就能把API測(cè)試集成進(jìn)來(lái)。

從API調(diào)用的知識(shí)點(diǎn)來(lái)說(shuō)僻焚,自然要熟悉HTTP請(qǐng)求的相關(guān)知識(shí)幽七,一般來(lái)說(shuō)網(wǎng)絡(luò)上的請(qǐng)求都是通過(guò)TCP或者UDP發(fā)送,商用的web都通過(guò)http/https協(xié)議來(lái)發(fā)送的溅呢,游戲很多用UDP協(xié)議發(fā)送,這些知識(shí)留待大家自己摸索猿挚。

我們直接用代碼來(lái)說(shuō)話(huà):


public class HttpUtil {


? ? public HttpUtil(String method, String url, Map headers) {}? //構(gòu)造http咐旧,method=GET||POST (其他像PUT或者DELETE幾乎不用)


? ??public void setHttpHeaders(Map headers) {} //如果構(gòu)造沒(méi)有傳值的話(huà),也可以在之后傳绩蜻,map的key-value同http的頭定義(Content-Type必須要有)


? ??public void setHttpCookies(Map cookies) {} //其實(shí)這段也可以放入http head铣墨,如果要區(qū)分也可以單獨(dú)傳入


? ??public void setHttpBody(String body) {} //根據(jù)頭中定義的contenty-type來(lái)傳入body數(shù)據(jù)發(fā)送到后端


? ??public int excute() throws Exception {} //http請(qǐng)求發(fā)送,返回的是狀態(tài)碼办绝,如200伊约,404等


? ??public String getResponseContent() {} //返回response內(nèi)容


? ??public String getCookieValueByKey(String key) {} //根據(jù)key返回cookie中的value


? ??public String getHeadValueByKey(String key) {} //根據(jù)key返回head中的value


? ??public String getJpathValues(String jpath) {} //根據(jù)輸入的1或多個(gè)JsonPath(姚淆,分隔)來(lái)返回具體值


? ??public int getCountInJSON(String jpath) {} //JsonPath的length()函數(shù)返回list個(gè)數(shù)


? ??public String getXpathValues(String xpath) {} //根據(jù)輸入的1或多個(gè)XPath(,分隔)來(lái)返回具體值


}


具體的代碼實(shí)現(xiàn)可以直接看代碼屡律,Xebium中直接調(diào)用如上方法腌逢,設(shè)置參數(shù)或者返回?cái)?shù)據(jù),來(lái)判斷內(nèi)容的正確性超埋。具體例子如下(點(diǎn)導(dǎo)航欄Test可以執(zhí)行用例):

Xebium-API測(cè)試腳本
Xebium頁(yè)面的渲染表現(xiàn)效果

上述用例中搏讶,note一行執(zhí)行時(shí)會(huì)忽略,相當(dāng)于注釋行霍殴。

依然把源碼貼出媒惕,大家可以參考,如果需要支持更多的HTTP Method或者需要實(shí)現(xiàn)什么特定的功能来庭,可以直接修改實(shí)現(xiàn):

https://pan.baidu.com/s/1WX6ESXLKmvruOZYvgH_GSA



其實(shí)照這個(gè)測(cè)試集成的思路妒蔚,會(huì)發(fā)現(xiàn),任何的測(cè)試工作只要可以用代碼來(lái)實(shí)現(xiàn)調(diào)用的其實(shí)都可以集成進(jìn)Xebium月弛,一個(gè)統(tǒng)一的測(cè)試環(huán)境不僅使流程變得更為規(guī)范肴盏,同時(shí)也讓腳本和數(shù)據(jù)的維護(hù)變得容易,也節(jié)約大家的時(shí)間(有些公司尊搬,本身的測(cè)試系統(tǒng)一套一套的叁鉴,如果是新人摸索這些系統(tǒng)并且日常工作中進(jìn)行切換,那是相當(dāng)?shù)暮臅r(shí)耗力)佛寿。

API接口的應(yīng)用非常廣泛幌墓,如果你用RabbitMQ,Kafka等冀泻,甚至于平時(shí)的網(wǎng)頁(yè)常侣,只要是依賴(lài)網(wǎng)絡(luò)的HTTP或者HTTPS協(xié)議,都可以適用弹渔。

另外胳施,大家如果用的不順手,自己開(kāi)發(fā)自己的套件肢专,再做一些小工具做解析舞肆,轉(zhuǎn)碼等等的事,讓事情更簡(jiǎn)單博杖,使用更方便椿胯,這才是測(cè)試開(kāi)發(fā)更需要急迫去做的事。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剃根,一起剝皮案震驚了整個(gè)濱河市哩盲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖廉油,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠险,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抒线,警方通過(guò)查閱死者的電腦和手機(jī)班巩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)十兢,“玉大人趣竣,你說(shuō)我怎么就攤上這事『滴铮” “怎么了遥缕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宵呛。 經(jīng)常有香客問(wèn)我单匣,道長(zhǎng),這世上最難降的妖魔是什么宝穗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任户秤,我火速辦了婚禮,結(jié)果婚禮上逮矛,老公的妹妹穿的比我還像新娘鸡号。我一直安慰自己,他們只是感情好须鼎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布鲸伴。 她就那樣靜靜地躺著,像睡著了一般晋控。 火紅的嫁衣襯著肌膚如雪汞窗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天赡译,我揣著相機(jī)與錄音仲吏,去河邊找鬼。 笑死蝌焚,一個(gè)胖子當(dāng)著我的面吹牛裹唆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播只洒,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼品腹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了红碑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎析珊,沒(méi)想到半個(gè)月后羡鸥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忠寻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年惧浴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕剃。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衷旅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵朋,到底是詐尸還是另有隱情柿顶,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布操软,位于F島的核電站嘁锯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏聂薪。R本人自食惡果不足惜家乘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藏澳。 院中可真熱鬧仁锯,春花似錦、人聲如沸翔悠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凉驻。三九已至腻要,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涝登,已是汗流浹背雄家。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胀滚,地道東北人趟济。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像咽笼,于是被迫代替她去往敵國(guó)和親顷编。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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