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