翻譯|行業(yè)資訊|編輯:胡濤|2023-10-27 10:55:09.640|閱讀 84 次
概述:了解 Parasoft SOAtest 如何簡(jiǎn)化 GraphQL 測(cè)試的創(chuàng)建、管理和編排。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如果您采用測(cè)試自動(dòng)化,則可以實(shí)現(xiàn)簡(jiǎn)化的 GraphQL 測(cè)試。繼續(xù)閱讀,了解 Parasoft SOAtest 如何簡(jiǎn)化 GraphQL 測(cè)試的創(chuàng)建、管理和編排。測(cè)試 GraphQL 端點(diǎn)與任何其他端點(diǎn)測(cè)試一樣必要,自動(dòng)化測(cè)試可以提供幫助。讓我們探索如何通過(guò)測(cè)試自動(dòng)化來(lái)測(cè)試 GraphQL 端點(diǎn)!
GraphQL 是一種 API 查詢語(yǔ)言,由 Facebook 從 2012 年開(kāi)始開(kāi)發(fā),旨在解決一個(gè)特定問(wèn)題:隨著智能手機(jī)和移動(dòng)網(wǎng)絡(luò)瀏覽器的興起,使用 RESTful API 調(diào)用速度緩慢且效率低下,尤其是在移動(dòng)網(wǎng)絡(luò)上。對(duì)多個(gè)端點(diǎn)的多個(gè) API 調(diào)用需要時(shí)間,通常返回的信息要么多于必要的信息,要么返回的信息不足。返回的大量數(shù)據(jù)加上多次 API 調(diào)用,導(dǎo)致用戶體驗(yàn)不佳。
當(dāng) 2015 年應(yīng)用于 Facebook 的 iOS 應(yīng)用程序時(shí),科技界看到了新技術(shù)的優(yōu)勢(shì),導(dǎo)致許多領(lǐng)先公司迅速采用。2015 年,GraphQL 開(kāi)源,并于 2019 年創(chuàng)建了 GraphQL 基金會(huì),以進(jìn)一步開(kāi)發(fā)規(guī)范和參考實(shí)現(xiàn)。盡管最初設(shè)計(jì)時(shí)考慮的是移動(dòng)計(jì)算,但實(shí)施已擴(kuò)展到桌面和服務(wù)器計(jì)算。GraphQL 的采用范圍已擴(kuò)大到包括 GitHub、Pinterest、Intuit、Coursera 和 Shopify 等公司和組織。
與傳統(tǒng)的 REST API 接口相比,GraphQL 可以提供許多優(yōu)勢(shì)。雖然每種技術(shù)實(shí)現(xiàn)都需要權(quán)衡,但 GraphQL 在檢索信息方面提供了更大的靈活性。一個(gè)編寫良好的 GraphQL 查詢可以返回需要使用 HTTP 請(qǐng)求進(jìn)行多個(gè) RESTful API 調(diào)用的信息。研究人員和開(kāi)發(fā)人員發(fā)現(xiàn),與使用 RESTful API 獲取相同數(shù)據(jù)相比,GraphQL 調(diào)用返回的數(shù)據(jù)集小 90% 以上。
使用 RESTful API 檢索數(shù)據(jù)時(shí),您通常必須進(jìn)行多個(gè) API 調(diào)用才能獲取您要查找的所有信息。例如,如果您要登錄銀行,您首先需要獲取您的客戶編號(hào)。一旦您獲得了客戶編號(hào),您就可以獲得您的帳號(hào)。從那里,您可以獲得您的帳戶余額:
REST API 沒(méi)有任何問(wèn)題,但多個(gè) API 調(diào)用通常很慢、數(shù)據(jù)量大且效率低下。在上面的示例中,為了獲取銀行帳戶余額,您必須構(gòu)建一系列鏈接在一起的三個(gè) API 調(diào)用,每個(gè)調(diào)用都是一個(gè)正確的請(qǐng)求,并且是由架構(gòu)定義的完整響應(yīng)。GraphQL 請(qǐng)求更精簡(jiǎn)、更具體,僅處理客戶 ID、賬戶 ID 和余額這三個(gè)值:
上面的示例可能看起來(lái)微不足道,但它展示了如何使用 GraphQL 查詢僅通過(guò)一次 API 調(diào)用即可完成傳統(tǒng)上通過(guò)三個(gè) API 調(diào)用完成的請(qǐng)求。最好的部分是它不需要重新實(shí)現(xiàn)現(xiàn)有功能。
REST 和 GraphQL 之間還有許多其他優(yōu)點(diǎn)和缺點(diǎn),但需要注意的是,GraphQL 和 REST API 并不相互排斥,并且采用其中一種并不排除另一種。事實(shí)上,兩人的合作非常和諧。
在決定是使用 REST API 還是 GraphQL 時(shí),請(qǐng)考慮數(shù)據(jù)的復(fù)雜性以及查詢和變更所需的靈活性。如果您的數(shù)據(jù)相對(duì)簡(jiǎn)單,并且您的 API 需要定義明確、基于資源的接口,那么 REST API 可能是最佳選擇。
另一方面,如果您有復(fù)雜的數(shù)據(jù),需要靈活的查詢和變更,并且您希望最大限度地減少過(guò)度獲取和不足獲取,那么 GraphQL 可能更適合。
它確實(shí)需要仔細(xì)設(shè)計(jì)來(lái)創(chuàng)建具有架構(gòu)和類型組織的 GraphQL API 和查詢。REST API 可能更容易設(shè)計(jì)和查詢,因?yàn)槟梢苑蛛x各個(gè)數(shù)據(jù)請(qǐng)求,但它們也可能需要更長(zhǎng)的時(shí)間來(lái)運(yùn)行。一般來(lái)說(shuō),REST API 更適合非常復(fù)雜的查詢,而 GraphQL 查詢可以提供更多優(yōu)化和更快的操作。
此外,如果實(shí)時(shí)數(shù)據(jù)和多個(gè) API 版本對(duì)您的應(yīng)用程序很重要,那么 GraphQL 可以提供這些優(yōu)勢(shì),而 REST API 可能需要更多的努力來(lái)實(shí)現(xiàn)。最終,REST API 和 GraphQL 之間的選擇取決于您項(xiàng)目的具體要求以及您愿意做出的權(quán)衡。
當(dāng)您想要為想要利用您的 API 的消費(fèi)者創(chuàng)建一個(gè)簡(jiǎn)單而高效的界面時(shí),請(qǐng)使用 GraphQL。您可能還想利用 GraphQL 來(lái)減少前端和后端之間交換的總流量,就像 Facebook 對(duì)移動(dòng)流量所做的那樣。如果您想在單個(gè)查詢中檢索所有相關(guān)數(shù)據(jù),GraphQL 可以很好地做到這一點(diǎn)。
與其他功能測(cè)試一樣,測(cè)試 GraphQL API 以確保軟件的業(yè)務(wù)邏輯正確執(zhí)行非常重要。您需要驗(yàn)證查詢、模式和任何突變是否按預(yù)期運(yùn)行和響應(yīng)。編寫和運(yùn)行測(cè)試可以幫助開(kāi)發(fā)人員和 QA 在投入生產(chǎn)之前盡早發(fā)現(xiàn)錯(cuò)誤。它還確保您對(duì) API 和應(yīng)用程序有足夠的測(cè)試覆蓋率
GraphQL 是存在于前端系統(tǒng)和后端 API 之間的抽象層,因此進(jìn)行測(cè)試至關(guān)重要。GraphQL 查詢?cè)试S您訪問(wèn)后端中的多個(gè)資源,并將這些數(shù)據(jù)聚合到一個(gè)有意義的響應(yīng)中。
后端 API 通常是細(xì)粒度的,因為我們希望為我們的應(yīng)用程序創(chuàng)建新的、可重用的構(gòu)建塊。然而,這并不能直接轉(zhuǎn)化為我們的用戶故事或我們希望能夠從前端完成的操作。GraphQL 是一種通過(guò)使用具有描述系統(tǒng)行為的模式的接口來(lái)簡(jiǎn)化與后端數(shù)據(jù)交互的方法,以便您可以從 API 獲取有效的數(shù)據(jù)。
每個(gè) GraphQL 模式都映射到函數(shù)。然后,這些函數(shù)將針對(duì)您的 API、數(shù)據(jù)庫(kù)以及收集所請(qǐng)求的數(shù)據(jù)所需的任何其他資源對(duì)后端進(jìn)行后續(xù)調(diào)用。
然后,這些函數(shù)會(huì)將必要的數(shù)據(jù)組裝成一個(gè)響應(yīng),該響應(yīng)將保持與請(qǐng)求相同的形狀,從而非常容易理解哪些數(shù)據(jù)與請(qǐng)求中的哪些元素相關(guān)聯(lián)。
此外,GraphQL 可以設(shè)置為在組裝查詢響應(yīng)時(shí)調(diào)用多個(gè)后端服務(wù)。這減少了消費(fèi)者瀏覽 API 文檔以了解和閱讀調(diào)用中可用信息所需的總時(shí)間。
查詢測(cè)試:是對(duì)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)的請(qǐng)求。查詢可以是對(duì)數(shù)據(jù)結(jié)果的請(qǐng)求、對(duì)數(shù)據(jù)的操作,或兩者兼而有之。
突變測(cè)試:是一種測(cè)試形式,它修改應(yīng)用程序代碼的特定組件,以查看測(cè)試工具是否可以檢測(cè)到更改。突變測(cè)試通常用于進(jìn)行單元測(cè)試,以查看軟件工具是否可以檢測(cè)到未經(jīng)正確測(cè)試的代碼或具有其他測(cè)試方法無(wú)法捕獲的隱藏缺陷。
負(fù)載測(cè)試:是一種性能測(cè)試,可將您的應(yīng)用程序或網(wǎng)站置于類似于真實(shí)條件的壓力下。如果沒(méi)有負(fù)載測(cè)試,您的軟件在真正重要的時(shí)候可能會(huì)失敗。負(fù)載測(cè)試工具檢查應(yīng)用程序在正常和高負(fù)載期間的性能。
安全測(cè)試:是一種發(fā)現(xiàn)軟件應(yīng)用程序中的漏洞、風(fēng)險(xiǎn)和威脅并防止黑客攻擊的測(cè)試形式。安全測(cè)試可識(shí)別系統(tǒng)可能存在的弱點(diǎn),這些弱點(diǎn)可能會(huì)使您的應(yīng)用程序、信息、用戶或公司面臨風(fēng)險(xiǎn)。
架構(gòu)測(cè)試,也稱為映射測(cè)試,是一種軟件測(cè)試形式,用于驗(yàn)證前端應(yīng)用程序的對(duì)象與相應(yīng)的數(shù)據(jù)庫(kù)對(duì)象。架構(gòu)測(cè)試用于查找數(shù)據(jù)庫(kù)中未映射的對(duì)象,例如表、視圖或列。
在大型項(xiàng)目中,最初會(huì)有很多警告。快速有效地管理它們至關(guān)重要。對(duì)于采用靜態(tài)分析的團(tuán)隊(duì)來(lái)說(shuō),重要的是要了解修復(fù)或分析所有警告是不必要的。相反,請(qǐng)確保選擇一個(gè)工具,使您能夠?qū)Ш健⒃u(píng)估、確定優(yōu)先級(jí)并分配報(bào)告的錯(cuò)誤以進(jìn)行修復(fù)。逐步移動(dòng)“底線”來(lái)處理下一個(gè)最高優(yōu)先級(jí)和類別是處理大量積壓警告的最佳方法。
GraphQL 是一項(xiàng)強(qiáng)大的技術(shù),允許您的 API 使用者以更有效的方式訪問(wèn)他們的信息。為了確保體驗(yàn)按照您預(yù)期的方式運(yùn)行,您需要驗(yàn)證您的 GraphQL API。這就是測(cè)試自動(dòng)化的用武之地。
有許多自動(dòng)化工具可用于測(cè)試 GraphQL API。在本例中,我使用 Parasoft SOAtest,這是一種廣泛使用的API 測(cè)試解決方案,它簡(jiǎn)化了跨多種技術(shù)驗(yàn)證關(guān)鍵 API 的艱巨挑戰(zhàn)。它支持多種消息格式和協(xié)議,包括 GraphQL。
GraphQL 端點(diǎn)接受字符串形式的查詢,并返回帶有查詢結(jié)果的 JSON 響應(yīng)。這非常適合 SOAtest,因?yàn)?REST 客戶端可以發(fā)出查詢來(lái)發(fā)送查詢,并且可以通過(guò)現(xiàn)有的 JSON 驗(yàn)證工具來(lái)完成驗(yàn)證。
考慮以下簡(jiǎn)單的 GraphQL 查詢示例。
預(yù)期回報(bào)類似于:
可以通過(guò) GraphQL 客戶端以文字或表單模式在 Parasoft SOAtest 中創(chuàng)建相同的查詢。
在 SOAtest 中,GraphQL 查詢作為名為 query 的字符串發(fā)送。響應(yīng)以 JSON 形式返回,SOAtest 可以輕松地在其流量查看器中解釋和表示。
返回值是預(yù)期的。我們需要一種自動(dòng)化的方法來(lái)驗(yàn)證這些結(jié)果。SOAtest JSON 斷言器在這里會(huì)派上用場(chǎng)。
SOAtest 使用通過(guò)其 JSON 斷言器工具配置的斷言來(lái)驗(yàn)證 JSON 響應(yīng)。下面是一個(gè)示例,檢查返回的名字是否為字符串“Luis”,我們知道該字符串不是有效值。
再次運(yùn)行測(cè)試,測(cè)試失敗。
正如您所看到的,使用現(xiàn)有功能在 SOAtest 中測(cè)試 GraphQL 非常簡(jiǎn)單。
認(rèn)證怎么樣?這是由 SOAtest 處理的,現(xiàn)有的客戶端身份驗(yàn)證工具也可以與 GraphQL 端點(diǎn)配合使用。
SOAtest 為 REST、SOAP 和其他 API 測(cè)試帶來(lái)的好處對(duì)于 GraphQL 來(lái)說(shuō)仍然相同。Parasoft SOAtest 旨在適應(yīng)現(xiàn)有的測(cè)試基礎(chǔ)設(shè)施,通過(guò)幫助測(cè)試人員更智能地使用無(wú)腳本測(cè)試來(lái)加速測(cè)試,從而實(shí)現(xiàn)敏捷開(kāi)發(fā),從而促進(jìn)開(kāi)發(fā)、測(cè)試、性能和安全團(tuán)隊(duì)之間的協(xié)作。
Parasoft SOAtest 使測(cè)試易于創(chuàng)建、管理、編排、運(yùn)行、編寫和分析。除了 GraphQL 之外,SOAtest 支持 120 多種消息格式和協(xié)議,加上 AI 和機(jī)器學(xué)習(xí)輔助的測(cè)試生成,使 API 測(cè)試變得更加容易。
了解更多有關(guān)Parasoft產(chǎn)品咨詢,歡迎咨詢
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn