Parasoft:利用自動(dòng)化來創(chuàng)建高覆蓋率的API測試套件
應(yīng)用程序編程接口(API)是應(yīng)用程序的服務(wù)層。它們連接數(shù)據(jù)層和表示層(UI),并驅(qū)動(dòng)用戶與應(yīng)用程序交互的方式。
如果API無法正確響應(yīng)用戶活動(dòng),則說明該應(yīng)用程序已損壞。開發(fā)人員和測試人員有責(zé)任確保所連接的API在其應(yīng)用程序中正常工作。
API測試對于識(shí)別應(yīng)用程序多層中的缺陷并確保無縫的客戶體驗(yàn)是必不可少的。 API測試包括:
- 服務(wù)測試
- 合同測試
- 組件測試
- 場景測試
- 負(fù)載/性能測試
- 安全測試
- 全渠道測試
執(zhí)行API測試具有挑戰(zhàn)性,因?yàn)樗枰环N技術(shù)方法來針對各種消息格式和協(xié)議設(shè)計(jì)測試用例。它還需要了解組織的業(yè)務(wù)規(guī)則,以一起正確使用正確的API。嘗試使用手動(dòng)方法測試API非常耗時(shí),并且可能導(dǎo)致測試推遲到開發(fā)周期的后期。
自動(dòng)化的API測試使您能夠?qū)?yīng)用程序進(jìn)行防彈防御。它可以盡早發(fā)現(xiàn)錯(cuò)誤,評估構(gòu)建的強(qiáng)度,并導(dǎo)致更快的軟件發(fā)布。由于API測試可以自動(dòng)化并且可以連續(xù)運(yùn)行,因此您可以確保應(yīng)用程序符合業(yè)務(wù)期望,同時(shí)還可以驗(yàn)證功能準(zhǔn)確性。
自動(dòng)化API測試的利弊
有了正確的API測試工具和流程,您的團(tuán)隊(duì)將獲得自動(dòng)化的所有好處。沒有它們,API測試會(huì)很快變得不堪重負(fù)。
優(yōu)點(diǎn)
- 提供端到端方案的可維護(hù)的自動(dòng)化。
- 打開開發(fā)人員與測試之間的溝通渠道。
- 減少診斷和修復(fù)時(shí)間。
缺點(diǎn)
- 測試人員不知道如何測試API或如何使用API。
- 需要專業(yè)技能和工具才能獲得全面的測試范圍。
- 沒有人愿意這樣做。
您可以通過將高級測試技術(shù)集成到現(xiàn)有測試中來克服這些挑戰(zhàn)。首先,讓我們看一下API測試的創(chuàng)建。
創(chuàng)建API測試的挑戰(zhàn)
建立API測試自動(dòng)化實(shí)踐的最大挑戰(zhàn)之一就是創(chuàng)建API測試。適當(dāng)?shù)臏y試提出了入門(或擴(kuò)展現(xiàn)有的API測試套件)的障礙。
此問題的一部分是純粹基于技術(shù)知識(shí)或書面API規(guī)范(如果存在)編寫API測試所需的領(lǐng)域知識(shí)。這不是測試人員的常用領(lǐng)域。大多數(shù)具備必要知識(shí)的開發(fā)人員都不會(huì)參與此級別的測試。他們在其他地方有優(yōu)先事項(xiàng)。
考慮兩種互補(bǔ)的方法:
- 自上而下的方法。測試方案是根據(jù)常規(guī)應(yīng)用程序的使用和測試創(chuàng)建的。
- 自下而上的方法。測試基于設(shè)計(jì)意圖。
結(jié)合使用自頂向下和自底向上方法進(jìn)行API測試創(chuàng)建
大多數(shù)應(yīng)用程序提供并使用多個(gè)API。有些是眾所周知的。有些甚至可能被記錄在案。引擎蓋下通常有很多活動(dòng)部件,因此開始進(jìn)行API測試非常困難。
在自上而下的方法中,API交互是通過工具自動(dòng)化發(fā)現(xiàn)的,這是通常使用和集成測試的一部分。
另一個(gè)攻擊角度是自下而上的方法,是根據(jù)設(shè)計(jì)意圖創(chuàng)建API測試。它通常是組件測試的一部分,并借助工具進(jìn)行輔助。
自上而下(集成測試)和自下而上(組件測試)方法的結(jié)合克服了測試創(chuàng)建的障礙,并增加了API測試的覆蓋范圍。請參見下圖。
按用途創(chuàng)建API測試
捕獲API測試方案的最佳方法之一是在生產(chǎn)和測試中都使用產(chǎn)品的現(xiàn)有用法。利用智能記錄和回放功能,可以創(chuàng)建可重復(fù)使用的測試和方案。
使用SOAtest Smart API Test Generator等工具,您可以記錄在應(yīng)用程序內(nèi)部發(fā)生的API交互。該工具使用機(jī)器學(xué)習(xí)將復(fù)雜的流量組織成API使用模式。這樣就可以使用現(xiàn)有的手動(dòng)測試來創(chuàng)建一套API測試,以使用UI提取、過濾和創(chuàng)建API測試方案。
然后,SOAtest使用AI來識(shí)別模式并建立數(shù)據(jù)關(guān)系以創(chuàng)建API測試模板。您可以修改和重復(fù)使用帶有變體的模板。這些測試可用于安全性和性能測試。更重要的是,這些測試一旦創(chuàng)建,便會(huì)與UI和基礎(chǔ)應(yīng)用程序分離,并且其依賴關(guān)系可以僅通過API測試來行使。
將API流量記錄和分析到測試場景中,可以擴(kuò)展到使用Selenium等工具進(jìn)行的自動(dòng)化UI測試。發(fā)起API調(diào)用的應(yīng)用程序的任何使用,無論是手動(dòng)還是自動(dòng)的,都可以用來創(chuàng)建API測試。也可以將錄制的方案與可追溯性要求相關(guān)聯(lián)。
記錄后,可以在SOAtest中對這些方案進(jìn)行調(diào)查和修改,如下所示。
SOAtest檢測各種API調(diào)用和發(fā)生的數(shù)據(jù)交互。然后可以根據(jù)需要修改方案和數(shù)據(jù)有效載荷。一旦理解了模式,就可以將斷言插入場景中以驗(yàn)證正確的值和行為。
完全基于現(xiàn)有測試技術(shù)創(chuàng)建即用型API測試套件的能力可以快速創(chuàng)建具有重用和擴(kuò)展功能的測試。這是通過API測試的最大障礙之一的捷徑。
通過(服務(wù))設(shè)計(jì)創(chuàng)建API測試
您可能會(huì)想,“我們不知道API的設(shè)計(jì)。其中大多數(shù)都沒有記錄!”在大多數(shù)情況下,這是正確的。但是,仍然可以通過查看應(yīng)用程序中顯式或隱式的服務(wù)定義和協(xié)定,將現(xiàn)有信息中的API測試組合在一起,以幫助從下至上擴(kuò)展API測試的覆蓋范圍。
就API規(guī)范而言,大多數(shù)服務(wù)在swagger文檔或WSDL中都有定義。SOAtest可以閱讀這些定義并創(chuàng)建API測試方案模板。它包括定義中所有客戶端的測試用例。您可以編輯和操作模板以創(chuàng)建有意義的API測試。
SOAtest提供了許多用于從模板創(chuàng)建無腳本測試的選項(xiàng),包括基于隨機(jī)數(shù)的參數(shù)化數(shù)據(jù)或先前的測試結(jié)果,如下例所示。
通過使用簡單的復(fù)制和粘貼技術(shù),無腳本的測試創(chuàng)建以及靈活的測試數(shù)據(jù)管理,SOAtest提供了一種構(gòu)建測試套件的簡便方法。這并不是要取代自上而下的方法,而是要對其進(jìn)行補(bǔ)充。如果手動(dòng)或UI測試缺少API的重要部分(由覆蓋結(jié)果告知),則自下而上的方法將填補(bǔ)這些空白。但是,如果不了解覆蓋范圍,就很難確定要測試的內(nèi)容和缺少的內(nèi)容。
了解測試范圍
覆蓋范圍取決于上下文,意味著幾件事。通常,它是代碼、API和要求范圍。您需要了解所有這些內(nèi)容,以清晰了解測試工作的完成程度。
- 單元測試——關(guān)注的是代碼覆蓋率。有多少代碼具有與執(zhí)行相關(guān)的測試?
- API——重要的是要知道要測試哪些,以及每個(gè)API的使用程度。
- 需求——每個(gè)需求都必須進(jìn)行測試,以證明其正確實(shí)施。
這些重疊的問題在項(xiàng)目生命周期的不同時(shí)間都很重要。例如,如果您要跟蹤的是API測試覆蓋率,則重要的是要確保測試充分覆蓋了API,并在缺少的地方進(jìn)行現(xiàn)有測試。最好的方式是從服務(wù)定義中進(jìn)行查看,如下圖所示。
SOAtest跟蹤執(zhí)行的每個(gè)測試以及涵蓋的API:完全、部分或根本不包括。知道缺少哪些測試,可以讓我們根據(jù)服務(wù)定義進(jìn)行自下而上的測試,或者在可能的情況下基于新的基于UI的測試。它還指出測試失敗的地方(紅色),將我們的注意力轉(zhuǎn)移到需要更新或植入中有問題的測試。
Parasoft DTP(開發(fā)測試平臺(tái))充當(dāng)各種測試實(shí)踐結(jié)果的中央存儲(chǔ)庫和樞紐,并根據(jù)不同類型的覆蓋范圍提供了項(xiàng)目所在位置的高級視圖,如以下儀表板所示。
此視圖合并了靜態(tài)代碼分析、單元測試、API以及手動(dòng)和自動(dòng)UI測試的匯總結(jié)果。這是測試金字塔的全部色域。它從各個(gè)方面提供了完整的覆蓋范圍:API、需求和代碼覆蓋范圍。
從JIRA中保存的用戶故事的角度考慮需求范圍。功能測試儀表板(如下所示)包括JIRA Story Status小部件,這是跟蹤需求覆蓋率的一種方法。
更仔細(xì)地查看JIRA狀態(tài),鼠標(biāo)懸停信息指示通過、未通過、未完成或未通過測試的測試數(shù)量。
您可以在詳細(xì)的可跟蹤性報(bào)告中進(jìn)一步深入了解,以找出缺少哪些需求,未通過其測試等等。
您可以通過深入研究可追溯性報(bào)告來進(jìn)一步調(diào)查,以了解哪些測試正在影響這個(gè)故事。
此外,您可以根據(jù)需要將此覆蓋范圍鏈接到API和代碼覆蓋范圍。您可以從此處導(dǎo)航至API測試,以確定需要進(jìn)行哪些更改以及需要進(jìn)行哪些其他測試。這種全面的匯總視圖提供了最完整的測試狀態(tài)信息。隨著開發(fā)人員聚集在一個(gè)完整的應(yīng)用程序上,隨著時(shí)間的推移,測試覆蓋率“增長”,新的代碼被API和為相關(guān)需求創(chuàng)建的單元測試“覆蓋”。
總結(jié)
API測試的重要性已為軟件開發(fā)組織所認(rèn)可,但是他們經(jīng)常難以充分采用該實(shí)踐。努力的一部分是建立一組測試,因?yàn)槭謩?dòng)測試的創(chuàng)建很復(fù)雜并且需要熟悉的技術(shù)知識(shí)。甚至采用API測試的團(tuán)隊(duì)也面臨著增加其API測試覆蓋面的挑戰(zhàn),因?yàn)槠渲性S多沒有記錄在案。
諸如SOAtest之類的高級功能測試工具可以基于分析手動(dòng)測試和常規(guī)應(yīng)用程序使用中的使用行為,使用自上而下的方法來幫助自動(dòng)化API測試創(chuàng)建。這種智能的測試生成功能可幫助團(tuán)隊(duì)快速,輕松地根據(jù)現(xiàn)有實(shí)踐創(chuàng)建測試。
使用SOAtest自動(dòng)化可以同時(shí)采用互補(bǔ)的自下而上的方法,以根據(jù)服務(wù)定義構(gòu)建無腳本測試。隨著完整的覆蓋率分析,您可以使用自上而下和自下而上的技術(shù)隨著時(shí)間的推移來擴(kuò)展API測試的覆蓋率。由于API測試的工作水平遠(yuǎn)低于UI測試,因此您可以放心,所構(gòu)建的一致而全面的測試將持續(xù)很長時(shí)間。