我知道这个问题有点主观,但我迷失在这里做什么。目前我正在使用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. 部署微服务的测试
- 2. 如何对微服务进行笔测试/安全测试?
- 3. 微软Exchange Web服务连接测试,错误:无法进行测试
- 4. 测试Web服务
- 5. 测试Web服务
- 6. 服务器测试
- 7. 测试WCF服务
- 8. 测试START_STICKY服务
- 9. 测试RMI服务
- 10. Android:测试服务
- 11. SOA服务测试
- 12. 使用Selenium进行微服务架构的测试自动化
- 13. 测试Java Spark微服务应用程序,实现SparkApplication接口
- 14. 微服务(NodeJS),Jenkins和Docker的集成测试
- 15. 微调后测试
- 16. Tomcat服务器测试SOAP服务NoSuchMethodError
- 17. Angular2测试服务 - undefined服务
- 18. 领事 - 服务检测微服务/域架构
- 19. 测试分析服务
- 20. 测试服务时InvalidDataAccessResourceUsageException
- 21. 测试链依赖服务
- 22. 测试WCF Web服务
- 23. Karma测试注入服务
- 24. JUNIT测试OSB服务
- 25. VMWare测试IIS服务器
- 26. 错误测试服务类
- 27. 如何测试Windows服务
- 28. 测试WCF Web服务?
- 29. 测试Web服务封装
- 30. 测试REST Web服务
这个问题似乎有点宽泛。看来你需要先去做一些研究,然后再回来一些具体的问题。 [这](https://martinfowler.com/articles/microservice-testing/)可能是一个好的开始。 –