創新、智能、自動化
今年,我們見證了科技格局的重大轉變。Amazon (AWS)、Facebook、Twitter、GitHub 等業界巨頭都在採用 GraphQL API,用於內部營運和外部互動。
GraphQL 被譽為 API 的 SQL,它不僅是一種查詢語言,它也是一種從資料庫中高效檢索資料的執行時間。RESTful API 通常需要整合來自多個伺服器回應的數據,與之相反,GraphQL使應用程式能夠在單一請求中獲取所有必要的數據。
這種轉變是顯著的,但在 GraphQL 測試方面有明顯的資源缺口。雖然測試 RESTful API 端點相對簡單,但 GraphQL 帶來了獨特的挑戰,因為許多現有工具並不完全支援它。
讓我們深入了解如何測試 GraphQL API,探索與測試 RESTful API 的差異,並重點介紹一些關鍵的最佳實踐。
GraphQL作為 API 的查詢語言,透過從資料庫取得資料來執行查詢。 與依賴多個資源 URL的 REST API 不同,GraphQL 使用類型(type)和欄位(field)在一個請求中取得所有必要數據,而不是使用預先定義回應的各個端點。
GraphQL 服務(稱為解析器resolver)可以用任何程式語言實現,而 GraphQL Schema語言以與語言無關的方式確保一致性。Schema定義物件類型,每個物件類型代表一個具有關聯欄位的可取得物件。這為開發人員提供了熟悉的結構。
例如:
type Character {
name: String!
appearsIn: [Episode]!
}類型上的每個欄位都由 GraphQL 伺服器開發人員提供的解析器函數支援。當執行某個欄位時,對應的解析器會產生下一個值。這種方法無需編寫特定回應或版本控制 API,從而簡化了後端開發。前端團隊受益於僅請求所需的數據,從而增強後端和前端效能。
大多數功能GraphQL測試旨在驗證在前端執行的Schema、查詢、突變(mutation)是否如預期。不斷增長的工具生態系統支援這些測試,針對各種程式語言、平台和測試基礎設施量身定制,滿足不同的測試要求。
例如,EasyGraphQL是 JavaScript 開發人員流行的功能測試工具。它與 Mocha 等 library 無縫整合,支援簡單的 API 回應驗證作為自動化測試套件的一部分。
以下是使用 EasyGraphQL 的 assertion 範例:
t('should pass if the query is valid', () => {
const validQuery = `
{
getUserByTestResult(result: 4.9) {
email
}
}
`
tester.test(true, validQuery)
})幾種類型的測試是必不可少的:
使用 GraphQL(例如 GitHub V4)測試外部 Web service 時,請考慮模擬回應以減少不必要的使用並縮短測試執行時間。模擬(Mocks)和固定回應可以有效地模擬這些服務,但在某些情況下,虛擬化有助於分析使用情況和指標。
「REST(表述性狀態傳輸)和 GraphQL 是建構 API 的兩種流行方法,每種方法都有自己的優勢。
REST 是一項完善的標準,它使用一組預先定義的端點來公開資料。它以其簡單性和易於快取而聞名,非常適合許多應用程式。
另一方面,GraphQL 提供了更大的靈活性。借助 GraphQL,客戶端可以準確地請求他們所需的數據,從而減少數據的過度獲取和獲取不足。它非常適合效率和最小化網路請求至關重要的情況。
在 REST 和 GraphQL 之間進行選擇取決於您專案的特定要求。對於更簡單的應用程式來說,REST 是一個不錯的選擇,而當您需要對 API 互動進行更細微的控制時,GraphQL 就會大放異彩。了解每種方法的獨特優勢可以幫助您為 API 設計做出正確的決定。」
ReadyAPI 簡化了 GraphQL 測試,包括查詢和變異評估、透過負載測試進行效能評估以及 Web 服務虛擬化。它在集中式介面中簡化了這些自動化測試的建立、管理和執行,減少了對大量程式碼開發的需求,並提高了敏捷和 DevOps 團隊的 API 品質。
ReadyAPI 與 Swagger 等工具無縫整合,可讓您匯入 API 定義以進行即時測試和即時流量記錄。透過虛擬化功能,您可以消除對第三方 API 的依賴,提高測試套件速度並最大限度地減少不必要的 API 消耗。
在 ReadyAPI 中測試GraphQL毫不費力。您可以使用 GraphQL 語法編寫查詢,以 JSON 格式指定查詢變量,然後執行測試。Assertion 使用 contains、equals、counts 甚至正規表示式等屬性來驗證回應。
這些測試可以輕鬆與 Jenkins、Docker、Visual Studio Team Services、TeamCity 以及您的團隊使用的其他 CI 或 builder 工具整合。您可以透過簡單易用的 Web 介面查看測試結果、檢查錯誤並存取標準功能,與命令列替代方案相比,簡化了測試過程。
GraphQL 的受歡迎程度將在 2023 年繼續飆升,不僅 Facebook 等知名科技公司也將其用於內部和外部 API。測試 GraphQL 不一定很複雜;但它一定需要正確的工具和流程。
要了解有關 GraphQL 的更多資訊,請觀看SmartBear的網路研討會。如果您準備好探索 ReadyAPI 的優勢,請立即與我們聯絡申請試用,親身體驗它如何簡化和自動化您的 API 測試。