API(應(yīng)用程序接口)正逐漸成為很多軟件開(kāi)發(fā)的中心,不同的系統(tǒng)、應(yīng)用通過(guò)API連接、傳輸數(shù)據(jù)、互相交互。越多越多的系統(tǒng)從MVC架構(gòu)轉(zhuǎn)向微服務(wù)架構(gòu),各個(gè)微服務(wù)之間通過(guò)Rest API進(jìn)行交互。對(duì)于企業(yè)來(lái)說(shuō),相比產(chǎn)品開(kāi)發(fā)完成后,進(jìn)行UI測(cè)試,API測(cè)試更容易發(fā)現(xiàn)問(wèn)題,更可能在早期階段發(fā)現(xiàn)問(wèn)題。并且API測(cè)試成本更低,更容易實(shí)現(xiàn)自動(dòng)化測(cè)試,并且有更多的成熟的自動(dòng)化測(cè)試工具可以使用,比如RestBird、Postman、SmartBear等,大大提高效率。通過(guò)本文你可以了解到:
- 什么是API接口測(cè)試?API測(cè)試和UI測(cè)試有什么區(qū)別?
- 為什么現(xiàn)在越來(lái)越重視API接口測(cè)試?
- API測(cè)試有哪些類(lèi)型?
- Restbird、Postman等工具加速API自動(dòng)化測(cè)試。
1.什么是API接口測(cè)試?API測(cè)試和UI測(cè)試有什么區(qū)別?
API應(yīng)用一般分為三層:數(shù)據(jù)層、服務(wù)(API)層、展現(xiàn)(UI)層。API層,即業(yè)務(wù)邏輯層,一般包括用戶(hù)業(yè)務(wù)邏輯、用戶(hù)和服務(wù)、數(shù)據(jù)、應(yīng)用功能交互規(guī)則。API直接觸及數(shù)據(jù)層和展現(xiàn)層,API測(cè)試是開(kāi)發(fā)測(cè)試團(tuán)隊(duì)可持續(xù)、自動(dòng)化測(cè)試最佳切入點(diǎn)。有助于大幅提高軟件交付質(zhì)量、系統(tǒng)穩(wěn)定性。目前,傳統(tǒng)測(cè)試更聚焦UI層測(cè)試,但接口測(cè)試的優(yōu)勢(shì)和價(jià)值目前已經(jīng)被普遍認(rèn)可。
- API測(cè)試:通常向一個(gè)和多個(gè)API發(fā)送請(qǐng)求,并驗(yàn)證響應(yīng),以檢查性能、安全、功能正確性、返回狀態(tài)等。
- UI測(cè)試:通常聚焦驗(yàn)證Web/App的界面展示、按鈕/控件的操作、通過(guò)控件操作驗(yàn)證功能等。
- 與UI測(cè)試相比,API測(cè)試更多聚焦業(yè)務(wù)邏輯、數(shù)據(jù)響應(yīng)、安全、性能瓶頸等。
2.為什么現(xiàn)在越來(lái)越重視API接口測(cè)試?
- 測(cè)試介入階段更早,更容易發(fā)現(xiàn)問(wèn)題 :通過(guò)API測(cè)試,只要核心邏輯設(shè)計(jì)完畢,就可以通過(guò)API測(cè)試驗(yàn)證響應(yīng)的正確性和數(shù)據(jù)。無(wú)需等待各個(gè)團(tuán)隊(duì)完成自己的工作和整個(gè)軟件開(kāi)發(fā)完成。
- 更容易測(cè)試管理:UI界面會(huì)因?yàn)橛脩?hù)的訪(fǎng)問(wèn)方式和終端的變化而變化(比如瀏覽器、訪(fǎng)問(wèn)設(shè)備、屏幕尺寸等),因此測(cè)試工程師需要不斷重新測(cè)試或者重寫(xiě)自動(dòng)化測(cè)試代碼。甚至有的圖形錯(cuò)誤造成無(wú)法測(cè)試核心功能。API測(cè)試更容易控制,甚至幾秒就可以重構(gòu)一個(gè)測(cè)試。
- 更容易定位問(wèn)題:API測(cè)試更容易定位Bug。這在開(kāi)發(fā)、集成,尤其是不同團(tuán)隊(duì)之間配合非常重要,可以快速定位問(wèn)題,解決問(wèn)題。
- 更節(jié)省測(cè)試時(shí)間:300個(gè)UI測(cè)試大概需要30個(gè)小時(shí),300個(gè)API接口測(cè)試僅僅需要3分鐘。這意味花費(fèi)更少的時(shí)間發(fā)現(xiàn)bug,可以立即修復(fù)bug。
一個(gè)案例
1)下面是UI級(jí)別測(cè)試示例:一個(gè)相當(dāng)簡(jiǎn)單和普通的測(cè)試。訪(fǎng)問(wèn)一個(gè)網(wǎng)站、填寫(xiě)表單、提交表單,認(rèn)證后進(jìn)入下一個(gè)頁(yè)面。
在UI測(cè)試層面,即使最簡(jiǎn)單的測(cè)試也會(huì)面臨很多的挑戰(zhàn)。首先,受到瀏覽器和網(wǎng)絡(luò)連接的限制,每次運(yùn)行測(cè)試的時(shí)候,都需要等瀏覽器加載網(wǎng)站。其次,自動(dòng)化測(cè)試,頁(yè)面中的任何元素都可能改變,造成測(cè)試失敗。有時(shí)候界面錯(cuò)誤造成無(wú)法測(cè)試核心服務(wù)邏輯。這些但嚴(yán)重耗費(fèi)測(cè)試工程師時(shí)間和拖慢項(xiàng)目進(jìn)度。如果你想把所有可能性全部測(cè)試一遍,可能會(huì)出現(xiàn)上萬(wàn)個(gè)排列組合。
2)通過(guò)API接口測(cè)試,整個(gè)測(cè)試只有一個(gè)步驟。
3.API測(cè)試有哪些類(lèi)型?
1)單元測(cè)試:測(cè)試領(lǐng)域有很多人喜歡定義概念,給大家?guī)?lái)很多困擾。API單元測(cè)試最簡(jiǎn)單的定義,通過(guò)一個(gè)簡(jiǎn)單的請(qǐng)求,獲得一個(gè)或者多個(gè)響應(yīng)。通常這種測(cè)試可以通過(guò)一個(gè)命令行或者使用Restbird API工具快速完成。
2)集成測(cè)試:API接口是內(nèi)部系統(tǒng)、三方服務(wù)集成的核心,API接口測(cè)試最頻繁、最重要的往往是集成測(cè)試。
3)端到端測(cè)試:端到端測(cè)試可以幫助我們驗(yàn)證幾個(gè)不同API連接之間的數(shù)據(jù)和信息流。
4)性能測(cè)試:API請(qǐng)求響應(yīng)時(shí)間、事務(wù)響應(yīng)時(shí)間、并發(fā)用戶(hù)數(shù)、吞吐量、TPS、資源利用率等。API性能是系統(tǒng)整體性能等基石。
4.Restbird、Postman等工具加速API自動(dòng)化測(cè)試
相比UI測(cè)試,API更容易實(shí)現(xiàn)自動(dòng)化測(cè)試,從而大大提高測(cè)試效率,提高研發(fā)交付質(zhì)量。你可以自己撰寫(xiě)測(cè)試腳本,也可以使用第三方API測(cè)試工具,如Restbird、Postman、Runsope、Curl、Cfix、Check等,這些三方工具可以很好的幫助工程師實(shí)現(xiàn)自動(dòng)化測(cè)試。比如Restbird不僅支持http的get、put、post、delete、head、patch、options等請(qǐng)求外;還支持Python、JAVAScript、Golang編程;svn、git版本管理、CI/CD集成。合理運(yùn)用三方工具,能快速實(shí)現(xiàn)API測(cè)試自動(dòng)化,并極大提高API測(cè)試效率。