我知道這個問題有點主觀,但我迷失在這裏做什麼。目前我正在使用Go + Go-kit編寫一些微服務。我想用集成測試類型的方式來測試這些微服務的端點,但我不確定如何去做。我能想到的唯一的事情就是讓shell腳本碰到端點並檢查響應。但這看起來像是混亂,而不是一個真正的聰明的做法。我覺得應該有更好的方法來做到這一點。有沒有人有什麼建議?測試微服務?
Q
測試微服務?
2
A
回答
0
端對端測試的另一種方法是Consumer-Driven Contract(CDC)。
雖然是有一些終端到終端的測試非常有用,他們也有一些缺點,如:
消費者服務必須知道如何啓動提供商的服務。這聽起來像是不必要的信息,當服務數量開始增加時可能難以維持;
啓動服務可能會很慢。即使我們只談幾秒鐘,也會增加開銷時間。如果消費者依賴於多種服務,這一切都開始累加;
提供者服務可能依賴於數據存儲或其他服務按預期工作。這意味着現在不僅需要啓動提供程序,還需要一些其他服務,可能是數據庫。
CDC的想法描述不久爲:
- 消費者定義了它從一個特定的請求到服務
- 的提供者和消費者在合同上達成一致預計
- 供應商不斷驗證合同是否得到履行
0
您可以使用httptest包在標準Go單元測試中執行此操作。這允許您創建可以傳遞給任何Handler
或HandleFunc
的模擬對象Request
和ResponseWriter
。您創建相應的Request
,將其傳遞給您的處理程序,然後從ResponseRecorder
中讀取響應,並根據預期的響應進行檢查。
如果您使用默認多路複用器(呼叫http.Handle()
註冊處理程序),則可以使用http.DefaultServeMux
進行測試。我過去曾將它用於微服務,並取得了良好的效果。適用於基準處理程序,路由和中間件。
0
您應該始終使用golang的原生unit testing framework來測試每個單獨的服務(請勿使用shell腳本!)。 httptest似乎很好,但我認爲它有更好的測試邊界是有幫助的 - 你應該爲你的代碼的每個功能塊真正擁有一個_test.go。較小的測試更容易維護。
就涉及多個微服務的整體集成測試而言,您不應在開發時進行這些測試。設置臨時區域並在那裏運行測試。
我的2美分。
相關問題
- 1. 使用MassTransit集成測試微服務
- 2. 部署微服務的測試
- 3. 如何對微服務進行筆測試/安全測試?
- 4. 微軟測試經理和測試Foundation服務器
- 5. 微軟Exchange Web服務連接測試,錯誤:無法進行測試
- 6. Web服務測試
- 7. 測試START_STICKY服務
- 8. 測試WCF服務
- 9. WCF服務測試
- 10. Android:測試服務
- 11. AngularJS測試服務
- 12. 測試Web服務
- 13. 測試RMI服務
- 14. RhinoMocks測試服務
- 15. 服務器測試
- 16. 測試angular2服務
- 17. SOA服務測試
- 18. 測試Web服務
- 19. 測試Java Spark微服務應用程序,實現SparkApplication接口
- 20. 微服務合同的自動化測試?
- 21. 微服務架構的測試自動化
- 22. 使用Selenium進行微服務架構的測試自動化
- 23. 微服務(NodeJS),Jenkins和Docker的集成測試
- 24. 微調後測試
- 25. Tomcat服務器測試SOAP服務NoSuchMethodError
- 26. Angular2測試服務 - undefined服務
- 27. 測試服務器上的WCF服務
- 28. 在微服務架構中,微服務將如何服務?
- 29. 在微服務
- 30. 領事 - 服務檢測微服務/域架構
這個問題似乎有點寬泛。看來你需要先去做一些研究,然後再回來一些具體的問題。 [這](https://martinfowler.com/articles/microservice-testing/)可能是一個好的開始。 –