掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
從基本概念上說(shuō),API的作用是:通過(guò)任何形式的通信手段,促進(jìn)兩種不同應(yīng)用程序之間實(shí)現(xiàn)交互。例如,在Web應(yīng)用上所使用到的API,我們往往稱之為“Web服務(wù)”。如今,隨著應(yīng)用技術(shù)的進(jìn)步和種類的增多,API已經(jīng)成為了編程代碼中的重要組成部分。在開發(fā)各種應(yīng)用項(xiàng)目時(shí),編程人員往往會(huì)通過(guò)使用API來(lái)與數(shù)據(jù)庫(kù)或其他的模塊進(jìn)行通信。這就是為什么作為測(cè)試人員的我們,必須通過(guò)測(cè)試API,以求獲得最大的測(cè)試覆蓋率(test coverage)的原因。

創(chuàng)新互聯(lián)一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)頁(yè)設(shè)計(jì)、小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、重慶APP軟件開發(fā)是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來(lái)見(jiàn)證!
而作為集成測(cè)試的一部分,API自動(dòng)化可以協(xié)助加速測(cè)試的進(jìn)程并提高效率。由于目前大多數(shù)公司都在業(yè)務(wù)層面上使用到了RESTful微服務(wù)和API,因此對(duì)于API的測(cè)試已經(jīng)成為了任何發(fā)布測(cè)試計(jì)劃中的關(guān)鍵環(huán)節(jié)之一。
簡(jiǎn)單來(lái)說(shuō),API實(shí)際是一種服務(wù),它可以幫助兩種不同的應(yīng)用程序?qū)崿F(xiàn)順暢的相互通信。大多數(shù)API被用于抽象各種業(yè)務(wù)邏輯,并引導(dǎo)到應(yīng)用程序訪問(wèn)其對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
從邏輯上講,我們可以將整個(gè)軟件系統(tǒng)分為三個(gè)層次:
1. 表示層 - 這是展示給最終用戶的某個(gè)用戶界面(GUI)。質(zhì)量保證人員(Quality Assurance,QA)對(duì)于該層次進(jìn)行功能測(cè)試。
2. 業(yè)務(wù)層 - 這是通過(guò)編寫邏輯代碼,來(lái)實(shí)現(xiàn)各種應(yīng)用的用戶接口。就實(shí)現(xiàn)技??術(shù)而言,各類代碼和算法屬于在這個(gè)層面上。當(dāng)然API也處于這個(gè)層次。
3. 數(shù)據(jù)庫(kù)層 - 存儲(chǔ)的是應(yīng)用程序的各種數(shù)據(jù)信息。
換句話說(shuō),API是軟件互聯(lián)世界的中樞神經(jīng)。它通過(guò)運(yùn)用各種工具、協(xié)議、標(biāo)準(zhǔn)和代碼集,將數(shù)字世界“粘合”在一起。由于API不但動(dòng)態(tài)靈活,而且功能強(qiáng)大,因此它讓各種軟件產(chǎn)品更為簡(jiǎn)便、更具有移動(dòng)性,不同組件能夠以一種無(wú)縫集成的方式進(jìn)行協(xié)同運(yùn)作。那么,針對(duì)API的測(cè)試則可以從服務(wù)級(jí)別和集成級(jí)別兩個(gè)方面進(jìn)行展開。
API的測(cè)試策略
就不同人員的關(guān)注點(diǎn)而言,開發(fā)人員一般傾向于只測(cè)試他們正在開發(fā)的軟件功能;一般測(cè)試人員則只負(fù)責(zé)做功能性的單元測(cè)試、以及端到端的協(xié)同測(cè)試。然而在如今DevOps的持續(xù)開發(fā)與測(cè)試環(huán)節(jié)中,測(cè)試人員更應(yīng)該專注于在軟件使用過(guò)程中所進(jìn)行的各種API調(diào)用,以便觀察和記錄在系統(tǒng)做出響應(yīng)之前所接收的不同輸出。而且,其中最重要的是:應(yīng)測(cè)試API在不同條件下是否能返回正確的響應(yīng)或輸出值。一般而言,此類輸出可以被分為如下三類:
當(dāng)然,也可能根本沒(méi)有任何輸出、或發(fā)生了完全不可預(yù)測(cè)的結(jié)果。因此,測(cè)試人員就要在整個(gè)應(yīng)用程序的開發(fā)過(guò)程中起到關(guān)鍵性的作用,他們需要通過(guò)數(shù)據(jù)驅(qū)動(dòng)型測(cè)試,來(lái)提高整體測(cè)試的覆蓋率和準(zhǔn)確性。
API測(cè)試的類型
正如我們通常需要根據(jù)目標(biāo)產(chǎn)品具有哪些功能,提前設(shè)定好進(jìn)行何種類型的測(cè)試一樣,測(cè)試人員往往也需要首先確定好將在API上執(zhí)行哪種類型的測(cè)試。如下是常見(jiàn)的API測(cè)試種類:
Web服務(wù)與API協(xié)議
上面我們提到了Web服務(wù),它主要是由兩種類型的服務(wù)(或稱為協(xié)議)所組成:
REST(Representational State Transfer) - 是一種輕量級(jí)的協(xié)議,它使用URL來(lái)獲取所有需要的信息。與下面將要介紹的SOAP相比,它不但更新了、而且克服了SOAP上存在的所有問(wèn)題。REST使用如下四種HTTP方法來(lái)執(zhí)行各項(xiàng)任務(wù):
1. Get - 獲取信息。例如,在位置映射的API中獲取經(jīng)度和緯度的信息。
2. Post - 在資源中插入一些數(shù)據(jù)。
3. Put - 更新目標(biāo)資源。
4. Delete - 從資源中進(jìn)行刪除。
由于其架構(gòu)簡(jiǎn)單且輕巧,因此REST如今已被廣為使用。
SOAP(Simple Object Access Protocol) API - 它使用XML來(lái)進(jìn)行消息交換。而執(zhí)行該任務(wù)所需的所有信息,都是由Web服務(wù)描述語(yǔ)言(Web Service Description Language,WSDL)所給定的。SOAP的擴(kuò)展性和與XML相關(guān)的標(biāo)準(zhǔn)性,造成了SOAP相對(duì)來(lái)說(shuō)比較“重”。而它相比REST的優(yōu)勢(shì)在于:它具有內(nèi)置的錯(cuò)誤處理功能,并且可以與其他協(xié)議(如SMTP)協(xié)同使用。
API的測(cè)試步驟
市面上有許多針對(duì)API的測(cè)試工具。在測(cè)試人員接手API之初,他們應(yīng)當(dāng)先參考其相應(yīng)的文檔,以判定目標(biāo)是屬于REST、還是SOAP API、或者它根本就不是基于Web的API,這些詳細(xì)的信息都應(yīng)當(dāng)被記錄在配套的文檔之中。因此,API的測(cè)試基本流程為:
1. 參考文檔(上面已經(jīng)提及)
2. 先編寫功能性、或服務(wù)級(jí)別的相關(guān)用例
3. 編寫各種集成測(cè)試
4. 在API足夠穩(wěn)定、且完成了上述的測(cè)試步驟之后,我們可以開始進(jìn)行安全、性能和負(fù)載類型的測(cè)試。
具體說(shuō)來(lái),我們可以按照如下的順序進(jìn)行:
1. 典型的API文檔一般會(huì)包含與API相關(guān)的所有信息,其中包括:請(qǐng)求的格式、響應(yīng)的類型、錯(cuò)誤的代碼、用到的資源、必需的參數(shù)、可選的參數(shù)、headers等方面。而對(duì)于這類文檔,我們則可以使用諸如開源的swagger、Dapperdox和ReDoc等工具來(lái)進(jìn)行日常維護(hù)。
2. 之后我們就可以著手為API編寫服務(wù)級(jí)別的測(cè)試用例了。例如,如果某個(gè)API使用了n個(gè)參數(shù)來(lái)獲取響應(yīng),其中m是必要參數(shù),而其他都是可選參數(shù),那么其對(duì)應(yīng)的測(cè)試用例應(yīng)該去嘗試不同的參數(shù)組合,以驗(yàn)證各種響應(yīng)結(jié)果。而另一種測(cè)試用例則可能需要驗(yàn)證headers;和在不啟用身份驗(yàn)證的情況下運(yùn)行API,以檢驗(yàn)其產(chǎn)生的錯(cuò)誤代碼。
3. 接下來(lái)便是集成測(cè)試的步驟了。您需要測(cè)試目標(biāo)API的所有依賴項(xiàng)、及其功能。同時(shí),我們還可能需要測(cè)試該API的各種響應(yīng),從其他API、或方法處預(yù)計(jì)返回的數(shù)據(jù),以及該API在失效時(shí)的各種狀態(tài)與輸出信息。
4. 一旦目標(biāo)API的表現(xiàn)穩(wěn)定、并完成了所有功能性的測(cè)試,那么測(cè)試人員就可以開始進(jìn)行與負(fù)載、安全和性能相關(guān)的各種深度測(cè)試了。
API自動(dòng)化測(cè)試工具
如今隨著DevOps的盛行,我們通常在每次進(jìn)行發(fā)布之前,都可能需要對(duì)一些測(cè)試用例,如回歸用例,執(zhí)行重復(fù)性的測(cè)試。因此,這就需要測(cè)試人員實(shí)現(xiàn)一些自動(dòng)化的任務(wù)。
市面上有許多針對(duì)API自動(dòng)化的工具,我們?cè)诖肆信e幾個(gè)典型的:
下面,我將通過(guò)一個(gè)實(shí)例來(lái)詮釋API功能測(cè)試所需要遵循的基本步驟。在該示例中,我使用的是由CloudQA所提供的一款較為新穎且流行的工具--TruAPI。
步驟1
為了產(chǎn)生一個(gè)API請(qǐng)求,您首先需要選擇一種Method Type,并在此粘貼目標(biāo)API的URL。您既可以按下發(fā)送按鈕,將請(qǐng)求發(fā)送到給目標(biāo)API;也可以按下Add API Test按鈕,以保存該請(qǐng)求:
為了方便看到效果,您可以試著使用如下Method Type和API URL:
第2步 - API的請(qǐng)求信息:
第3步 - 使用身份驗(yàn)證發(fā)送API請(qǐng)求:
添加斷言(Assertions):
在自動(dòng)化過(guò)程中,使用斷言來(lái)驗(yàn)證各種輸出是非常重要的。如果您想在API Runner中添加斷言,那么請(qǐng)選擇Assertions選項(xiàng)卡。在此,您可以添加一到多個(gè)斷言。
下面是添加斷言的簡(jiǎn)單步驟:
1. 選擇響應(yīng)類型
2. 選擇斷言的條件
3. 輸入需要檢查的值
4. 完成斷言的添加
變量:
Variables選項(xiàng)卡可以被用于存儲(chǔ)那些根據(jù)API請(qǐng)求所產(chǎn)生的響應(yīng)接收值。如果您想保存各種響應(yīng),請(qǐng)選擇Variables選項(xiàng)卡,然后按照以下步驟進(jìn)行操作:
1. 添加變量
2. 為變量命名,以便其他團(tuán)隊(duì)容易理解
3. 輸入來(lái)自響應(yīng)body并存儲(chǔ)著數(shù)值的JSON路徑
4. 如果您想將變量中的存儲(chǔ)值用作預(yù)期的斷言,則可以在任何其他API的請(qǐng)求中使用變量:_name
查看或執(zhí)行某個(gè)已保存的API請(qǐng)求:
上面我們介紹的只是一個(gè)單獨(dú)的API執(zhí)行與自動(dòng)化。而在真實(shí)的場(chǎng)景中,我們經(jīng)常需要?jiǎng)?chuàng)建包含所有回歸測(cè)試用例在內(nèi)的API套件,并將其作為回歸測(cè)試的一部分來(lái)運(yùn)行。在敏捷開發(fā)的理念中,準(zhǔn)備好相應(yīng)的套件是至關(guān)重要的,只有這樣才能更好地與持續(xù)集成/持續(xù)交付(CI/CD)進(jìn)行整合。
另外,CloudQA附帶有豐富的說(shuō)明文檔。而且CloudQA提供的所有工具都是與“無(wú)代碼自動(dòng)化(Codeless automation)”的理念相一致的。這也就方便了那些手動(dòng)測(cè)試人員的使用。詳細(xì)文檔,請(qǐng)參見(jiàn):https://doc.cloudqa.io/TruAPI.html。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流