原創|使用教程|編輯:鄭恭琳|2020-06-05 10:48:39.160|閱讀 1278 次
概述:GraphQL端點需要與任何端點一樣多的測試,并且自動化測試在這里也很有幫助。在下面了解有關如何使用測試自動化來測試GraphQL的更多信息!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
GraphQL端點需要與任何端點一樣多的測試,并且自動化測試在這里也很有幫助。在下面了解有關如何使用測試自動化來測試GraphQL的更多信息!
GraphQL是一種API的查詢語言,始于Facebook,但自2016年開始開源。GraphQL提供的查詢和響應的簡化源自移動應用程序的使用,但它在簡化復雜API的使用同時減少返回的數據量通用性方面具有普遍用途。
最初創建GraphQL時,它是為解決特定問題而構建的。2011年,由于大多數用戶都通過瀏覽器與應用程序進行交互,因此我們開始看到從Web到移動設備的大量遷移。特別是在Facebook的情況下,這需要從應用程序中多個不同位置調用多個API。根據方案要實現的目標,這些API傳遞的信息太多或太少。因此,為解決這一挑戰,Facebook尋求創建一種簡化信息傳遞并減少完成其方案所需的總流量的方法。
這催生了GraphQL。該技術最初由Facebook的iOS移動團隊使用,然后擴展到其他移動界面。很快,所有移動交互中的絕大多數都利用了他們的GraphQL API。在2015年,Facebook宣布實施該技術,全世界看到了使用該技術的優勢,并迅速采用了該技術。
GraphQL是存在于前端系統和后端API之間的抽象層。該抽象層允許您構造查詢,以訪問后端中的多個資源,并將該數據匯總到一個有意義的響應中。
后端API通常是細粒度的,因為我們想為我們的應用程序創建可重用的構建塊。但是,這并不能直接轉化為我們的用戶故事,也不能轉化為我們希望能夠從前端完成的操作。GraphQL是一種使用界面描述其系統行為的接口來簡化與后端數據交互的方法,因此您可以從API中獲得有效的數據。
每個GraphQL模式的映射都對應于函數。然后,這些功能將根據您的業務邏輯,針對您的REST API、數據庫以及收集請求的數據所需的任何其他資源,對后端進行后續調用。
然后,這些函數會將必要的數據組合成一個響應,該響應將保持與請求相同的形狀,從而很容易理解哪些數據與請求中的哪些元素相關聯。
Ask for what you need,
get exactly that - graphql.org
另外,可以設置GraphQL在組合查詢響應時調用多個后端服務。這減少了消費者花在瀏覽API文檔上以了解可從呼叫中獲得哪些信息的總時間。
與傳統的REST API接口相比,GraphQL具有許多優點。與大多數技術實施一樣,沒有靈丹妙藥或一種技術堆棧比另一種更好。但是GraphQL獲得關注的原因之一是因為它在檢索信息方面的靈活性。
使用傳統的REST API時,通常您要進行的檢索信息并不是您對系統的唯一調用。例如,如果要檢索我的帳戶余額,我要做的第一件事是檢索我的客戶編號,然后使用該客戶編號檢索我的帳戶編號。有了帳號后,就可以查詢該帳號的余額了:
REST API沒有錯。這就是它們的工作原理,它們使我們能夠創建離散的動作,并可以以許多不同的方式加以利用。但是在這種特殊情況下,為了檢索我想要的信息,我必須使用鏈接在一起的三個API序列進行調用。此外,如果我們考慮在每個API調用的交互過程中交換的數據量,我們必須發送適當的請求并接收該模式定義的整個響應。在我們的案例中,我實際上只需要處理客戶ID、帳戶ID和余額的三個值。
因此,讓我們看看在GraphQL世界中該交易如何進行:
query { Customer(name:”Chris Colosimo”) { accountId{ Balance } } }
如果您是GraphQL的資深用戶,請持懷疑態度接受該請求。我用它來說明傳統上可以用三個API調用完成的事情可以用一個使用GraphQL來完成。最好的部分是,它不需要重新實現現有功能。
REST和GraphQL之間還有許多其他優點和缺點,但是需要特別注意的是GraphQL和REST API并不互斥,并且采用其中一種并不排除另一種。實際上,兩者是很和諧地合作的。
因此,問題不是使用GraphQL還是REST API,而是何時應該將GraphQL引入前端資源?從理論上講,答案實際上非常簡單:當您要為想要利用API的使用者創建簡單有效的接口時,應該使用GraphQL。此外,當您想減少前端與后端之間交換的總流量時,您可能要考慮利用GraphQL,就像Facebook在移動流量方面所做的那樣。
GraphQL是一項非常強大的技術,可以使您的API使用者以更有效的方式訪問其信息,但是為了確保體驗以您期望的方式運行,您需要驗證GraphQL API。這是自動化測試的地方。
有很多測試自動化工具可以幫助您測試GraphQL API。我將為您提供使用Parasoft SOAtest的示例,Parasoft SOAtest是一種廣泛使用的API測試解決方案,它簡化了跨多種技術驗證關鍵API的艱巨挑戰。它支持各種消息格式和協議,并且已經有一段時間支持GraphQL。
GraphQL端點接受查詢(作為字符串)并返回帶有查詢結果的JSON響應。這非常適合SOAtest,因為REST客戶端可以進行查詢以發送查詢,而現有的JSON驗證工具可以完成驗證。
考慮下面的簡單示例GraphQL查詢:
query { users{ firstname lastname } }
預期的回報將類似于:
{ “data” : { “users” : [ { “firstname” : “John”, “lastname” : “Doe” }, { “firstname” : “Alicia”, “lastname” : “Smith” } ] } }
可以在Parasoft SOAtest中將同一查詢作為REST客戶端創建:
在SOAtest中,GraphQL查詢作為名為“query”的字符串發送。響應以JSON返回,SOAtest可以輕松地在其流量查看器中解釋和表示:
預期返回的值。顯然,我們需要一種自動的方法來驗證這些結果,并且SOAtest JSON斷言器在這里很方便。
SOAtest使用通過其JSON聲明器工具配置的聲明來驗證JSON響應。這是一個示例檢查,以查看返回的名字是否為字符串“Luis”(我們知道這不是有效值)。
再次運行測試,測試失敗:
如您所見,使用現有功能在SOAtest中直接測試GraphQL端點。
認證呢?這已經由SOAtest處理,并且現有的客戶端身份驗證工具也可以與GraphQL端點一起使用:
對于GraphQL,SOAtest帶給REST、SOAP和其他API測試的好處仍然相同。專為適應現有測試基礎架構而設計,Parasoft SOAtest通過幫助測試人員更智能地工作來加速測試,從而實現敏捷開發,而無腳本測試則可促進跨開發、測試、性能和安全團隊的協作。
Parasoft SOAtest使測試易于創建、易于管理和協調以及易于運行和分析。除了GraphQL之外,SOAtest對120多種消息格式/協議的支持以及AI和機器學習的輔助下的測試生成使API測試變得更加容易。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn