一歼疮、為什么要做接口測(cè)試
由于如今的系統(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)證的闭树,特別是涉及到用戶的隱私信息耸棒,如身份證,銀行卡等报辱。
接口測(cè)試的目的是測(cè)試接口与殃,尤其是那些與系統(tǒng)相關(guān)聯(lián)的外部接口,測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換碍现,傳遞和控制管理過(guò)程幅疼,還包括處理的次數(shù)。外部接口測(cè)試一般是作為系統(tǒng)測(cè)試來(lái)看待的昼接。
二爽篷、如何做接口測(cè)試
可以通過(guò)接口測(cè)試工具來(lái)對(duì)接口進(jìn)行測(cè)試
接口測(cè)試工具有:apipost、jmeter等
在開(kāi)始做接口測(cè)試之前慢睡,有必要了解一下接口的分類逐工。這里的分類,主要是HTTP請(qǐng)求方法分類漂辐。下面有很多種分類泪喊,我們最常見(jiàn)的有GET/POST/PUT/DELETE四種方法,工作中接口最多是GET和POST方法髓涯。
三袒啼、接口測(cè)試的意義
1. 更早的發(fā)現(xiàn)問(wèn)題
隨著敏捷測(cè)試的盛行,我們都知道測(cè)試工作要盡早的介入到項(xiàng)目開(kāi)發(fā)周期中,因?yàn)樵皆绲陌l(fā)現(xiàn) bug蚓再,修復(fù)的成本就越低滑肉。
然而功能測(cè)試一般都要等到系統(tǒng)提供可測(cè)試的 UI 界面后才能進(jìn)行,單元測(cè)試又要求較高的專業(yè)性和人力成本摘仅,所以選擇接口測(cè)試來(lái)更早的介入測(cè)試靶庙。
接口測(cè)試可以在功能界面未開(kāi)發(fā)出來(lái)之前對(duì)系統(tǒng)的接口進(jìn)行測(cè)試,從而更早的發(fā)現(xiàn)總是并以更低的成本修復(fù)問(wèn)題实檀。
2. 縮短產(chǎn)品周期
接口測(cè)試更早的介入惶洲,可以更早的發(fā)現(xiàn)并解決 bug,從而使得留到后期功能測(cè)試階段的 bug 數(shù)量減少膳犹,最終縮短整個(gè)項(xiàng)目的上線時(shí)間恬吕,有助于實(shí)現(xiàn)敏捷測(cè)試。
3. 發(fā)現(xiàn)更底層的問(wèn)題
系統(tǒng)中的有些 bug 如果想通過(guò) UI 層功能測(cè)試會(huì)比較困難须床,或者構(gòu)造測(cè)試數(shù)據(jù)和測(cè)試條件非常復(fù)雜铐料,而通過(guò)接口測(cè)試可以更簡(jiǎn)單、更全面的覆蓋到底層的代碼邏輯豺旬,從而發(fā)現(xiàn)一些隱藏 bug钠惩。
尤其是一些異常的、極端的情況族阅,可以用接口測(cè)試很容易的驗(yàn)證篓跛。
四、接口測(cè)試用例設(shè)計(jì)
首先坦刀,明確出發(fā)點(diǎn)愧沟。和所有的測(cè)試一樣,接口測(cè)試出發(fā)點(diǎn)是你要證明所測(cè)的程序是錯(cuò)誤的鲤遥。以這個(gè)出發(fā)點(diǎn)為導(dǎo)向沐寺,你的設(shè)計(jì)行為就會(huì)盡量朝這個(gè)方向發(fā)展,更易發(fā)現(xiàn)問(wèn)題盖奈,不會(huì)出現(xiàn)大方向的偏差混坞。
其次,選擇好測(cè)試對(duì)象钢坦。對(duì)于一個(gè)系統(tǒng)做接口測(cè)試選擇好的測(cè)試對(duì)象是接口測(cè)試關(guān)鍵究孕。一個(gè)系統(tǒng)有無(wú)數(shù)的接口,每個(gè)接口如果分別測(cè)試爹凹,那將是很痛苦的一件事情蚊俺,不光繁瑣浪費(fèi),而且任何一個(gè)內(nèi)部接口的變動(dòng)逛万,都將導(dǎo)致我們用例的不可用。這里推薦把整個(gè)系統(tǒng)作為一個(gè)整體,選擇整個(gè)系統(tǒng)提供給外部使用宇植、交互的最外層接口作為你的測(cè)試對(duì)象得封,以此為測(cè)試對(duì)象的用例將有很好的健壯性,并且更高效指郁。另外忙上,根據(jù)數(shù)據(jù)的流向,又可將這些最外層的接口分為兩類:一類是數(shù)據(jù)進(jìn)入系統(tǒng)的接口闲坎;一類是數(shù)據(jù)流出系統(tǒng)的接口疫粥。進(jìn)入系統(tǒng)的接口實(shí)際是我們用例的執(zhí)行調(diào)用的接口⊙可通過(guò)變化參數(shù)對(duì)這些接口進(jìn)行調(diào)用梗逮,模擬外部的使用;而流出的接口則是我們用例真正該驗(yàn)證的點(diǎn)绣溜。數(shù)據(jù)從哪里流出慷彤,流出時(shí)的狀態(tài)如何,此時(shí)系統(tǒng)又是什么狀態(tài)都是我們所應(yīng)該驗(yàn)證的怖喻。
然后底哗,確認(rèn)完整的測(cè)試對(duì)象的功能:確認(rèn)外部接口提供給使用這些接口的外部用戶什么樣的功能,外部用戶真正需要什么樣的功能锚沸。此兩個(gè)功能一定要準(zhǔn)確詳細(xì)跋选,用例的設(shè)計(jì)要嚴(yán)格按照測(cè)試對(duì)象功能設(shè)計(jì)才是正確的用例。
最后當(dāng)出發(fā)點(diǎn)哗蜈、對(duì)象前标、功能都確定了,就可以真正設(shè)計(jì)用例了恬叹。下面詳細(xì)介紹下如何去設(shè)計(jì)一個(gè)結(jié)構(gòu)好候生、可讀性高、滲透性強(qiáng)的接口測(cè)試用例绽昼。
接口測(cè)試用例設(shè)計(jì)和其他測(cè)試用例設(shè)計(jì)一樣唯鸭,都應(yīng)該本著盡可能的發(fā)現(xiàn)bug的目標(biāo)。用例設(shè)計(jì)的內(nèi)容應(yīng)該包括:主要測(cè)試功能點(diǎn)硅确、測(cè)試環(huán)境目溉、測(cè)試數(shù)據(jù)、執(zhí)行操作以及預(yù)期結(jié)果菱农。
1)接口測(cè)試環(huán)境分為兩種:一種是程序內(nèi)部的環(huán)境缭付;一種是程序的所調(diào)用外部接口的環(huán)境。用例在設(shè)計(jì)環(huán)境上有一個(gè)原則即:設(shè)計(jì)真實(shí)而危險(xiǎn)的環(huán)境循未,不忽視偶發(fā)環(huán)境陷猫。真實(shí),即你的用例在測(cè)試某種功能時(shí),應(yīng)該去思考這種情況發(fā)生時(shí)內(nèi)部绣檬、外部環(huán)境是什么足陨,通過(guò)各種手段將最準(zhǔn)確的環(huán)境模擬出來(lái)。危險(xiǎn)娇未,即在這種環(huán)境下系統(tǒng)出問(wèn)題的概率會(huì)很大墨缘。在設(shè)計(jì)用例環(huán)境時(shí),如果兩種環(huán)境都能達(dá)到你本用例的要求零抬,更推薦選擇更危險(xiǎn)的環(huán)境镊讼。所謂偶發(fā),即這種環(huán)境出現(xiàn)的概率很小平夜。不要因?yàn)檫@種環(huán)境很少出現(xiàn)就無(wú)視它蝶棋,開(kāi)發(fā)很可能也是這種想法,此處很有可能隱藏著問(wèn)題褥芒。
2)接口測(cè)試測(cè)試數(shù)據(jù)分為接口參數(shù)數(shù)據(jù)和用例執(zhí)行所需系統(tǒng)數(shù)據(jù)嚼松。數(shù)據(jù)的設(shè)計(jì)學(xué)問(wèn)大,不要在設(shè)計(jì)锰扶、準(zhǔn)備測(cè)試用例的數(shù)據(jù)上偷懶献酗。要通過(guò)好的測(cè)試數(shù)據(jù)使用例查錯(cuò)的功能充分發(fā)揮。接口參數(shù)數(shù)據(jù)需對(duì)每個(gè)參數(shù)根據(jù)測(cè)試接口的實(shí)際的功能進(jìn)行分析坷牛,在符合業(yè)務(wù)邏輯的情況下進(jìn)行邏輯組合排列罕偎,不要遺漏了某些邊界值和錯(cuò)誤點(diǎn)的數(shù)據(jù)。每個(gè)用例執(zhí)行所需系統(tǒng)數(shù)據(jù)和接口參數(shù)數(shù)據(jù)盡可能的采用不一樣的數(shù)據(jù)京闰,使用例更容易發(fā)現(xiàn)問(wèn)題颜及。
3)測(cè)試功能點(diǎn),如果一個(gè)接口功能復(fù)雜時(shí)推薦對(duì)接口用例進(jìn)行結(jié)構(gòu)劃分蹂楣,這樣子用例具有更好的可讀性和維護(hù)性俏站。接口劃分原則為以接口提供的功能點(diǎn)的不同進(jìn)行合適粒度的劃分。同一功能點(diǎn)的用例又可根據(jù)測(cè)試環(huán)境的不同痊土、數(shù)據(jù)的不同進(jìn)行用例的填充肄扎。
4)接口測(cè)試用例執(zhí)行操作非常簡(jiǎn)單,就是所測(cè)接口的調(diào)用赁酝。
5)預(yù)期結(jié)果驗(yàn)證犯祠,這也是接口用例設(shè)計(jì)的很關(guān)鍵的一步,應(yīng)該細(xì)而不冗余酌呆。所謂細(xì)衡载,用例中應(yīng)詳細(xì)列出應(yīng)該驗(yàn)證的點(diǎn)。每個(gè)用例均需驗(yàn)證隙袁,不要因?yàn)榍皫讉€(gè)用例有驗(yàn)證就認(rèn)為全部是正確的痰娱。避免一個(gè)用例中重復(fù)做相同的驗(yàn)證弃榨,提高測(cè)試用例的效率。
Apipost官方鏈接:https://console.apipost.cn/register?utm_source=10008