簡體   English   中英

對於集成測試,如何驗證模式/結構的JSON和XML? 任何語言

[英]For Integration Tests, How to Verify JSON and XML for schema/structure ? Any Language

是否有任何通用的技巧,策略或工具可以僅將本機比較兩個JSON和/或XML字符串作為其模式/結構? 我希望找到一種相當原始和通用的技術,但到目前為止還沒有找到。 我也在尋找一種可以簡單比較存儲的輸出與實時輸出而不必編寫字段級驗證的方法。

在我們無法控制的REST API上執行最基本的集成測試時,我們經常要驗證響應是否具有某些特征(存在某些字段,某些值類型等)。 響應幾乎永遠不會完全等同於存儲的采樣響應,通常是由於時間戳更改或數組中的新對象等等。 我在Java和.NET中都經常遇到這個問題,但是在任何平台上都可以找到解決方案。

我們提出了一些方法,但是它們都感覺不是很理想,並且有缺點。 例如:1.解析對通用JSON對象的響應,然后使用“ getProperties()”執行字段存在的驗證,並使用“ instanceof”等驗證值的類型。2.完全反序列化為域類,然后基本上與上述相同。 3.將原始主體作為字符串與文本文件中的存儲主體進行比較,並使用字符串技術“去除”值和空格。

我們使用方法2)

  1. 完全反序列化為域類,並且基本上與上述操作相同。

我們有一個try...catch圍繞我們的包裹strongly typed調用Deserialize使用方法的JavaScriptSerializer

處理異常將確定遇到的錯誤的性質。

我們會存儲/保留過去和當前測試以及相應的API版本和date-test-passed信息的記錄

它作為域類到API版本的映射目錄存儲在數據庫中。

  • 我們最近測試的版本化域類庫詳細信息(dll,類型),其相應的API版本,基礎和資源路徑...
  • 以及最后通過的日期時間...

我們的測試系統會選擇該信息,並反映dll的當前版本(使用其類型),該版本包含與已知API及其版本相對應的域類。

使用依賴注入,它使我們更容易進行交換,也可以在以前的DLL中測試它們是否可以與可能的新API兼容。

這樣,當發生問題時,我們實際上可以在與第三方的通訊中參考日期和信息。

集成總是很困難,因此我們還要確保我們也有“心跳” ping,它們對API進行簡單的請求,並集成到通知我們失敗的警報系統(SCOM)中。

確保第三方供應商API響應仍然符合您期望的一種較不編程的方法,而是使用諸如Postman之類的工具。

Postman使您可以創建帶有響應聲明的API調用套件或集合,因此,其想法是收集要確保在提供程序中工作的基本調用,並為它們編寫聲明,着重於形狀和值您期望在回復中。

通過該調用和斷言集合,您可以手動或在構建中使用Newman (運行Postman集合的命令行工具)定期運行該套件,並在提供程序發生時檢測錯誤,不可用和API退化,而無需監視提供商的狀態頁或錯誤跟蹤工具。

作為Postman的第三方工具,這意味着開箱即用的測試不會與服務存儲在同一存儲庫中。 此外,您現在還取決於Postman的可用性和可靠性。 另一方面,您將使用專門為此需求而設計的工具,該工具無需編寫(測試和維護)用於驗證外部提供程序響應的特定代碼工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM