用于测试分布式系统的集成测试框架?

2022-09-04 22:56:13

我有一个分布式系统,其组件分布在多个盒子中。它们使用 tcp 或多播相互通信。每个组件相互交换消息 - 这些基本上是序列化的数据结构。

对于这样的测试系统,我们有哪些集成测试框架?我熟悉 ruby,所以基于 ruby 的东西肯定会有所帮助。


答案 1

我想有不同的方法可以做到这一点。我尽量避免集成测试,但在某些时候当然是需要的。这只是一个建议,我会做什么:

  1. 使用行为驱动的方法清楚地定义要测试的方案。
  2. 对表示模块输出的过程进行单元测试(无集成)。
  3. 单元测试应该使用来自其他模块的输入的过程,但通过使用模拟。测试当前另一个模块的逻辑。
  4. 执行冒烟测试,这种类型的测试将确保您的模块可以相互通信(这是一种集成测试)。我认为烟雾测试是足够的集成测试。如果你仔细想想:为什么模块上会关心其他模块做什么?(让我们让每个部分做他们想做的任何事情,但只关心如何与他们沟通)

我个人认为,在测试方法中将对象从一个分布式模块调用到另一个分布式模块中,这不是一个好的做法。是的,这将是一个集成测试,但我认为它很容易可靠。

始终牢记测试金字塔,请记住,集成测试和端到端测试可能非常昂贵。因此,请明智地选择何时使用它们:

enter image description here

我来自Java世界,以下只是一些额外的信息,我认为这些信息也与该主题有关,并且可能会引起您的兴趣:

  • 数据传输对象模式很有趣
  • RMI vs EJB vs HTTP(关于远程调用技术之间差异的一些有趣的评论)
  • Spock 是面向 Java 开发人员的 BDD 框架。(如果您完全理解业务规则,那么测试是一种更容易的方法)

希望你觉得它有用。


答案 2

您可以查看Zopkio :https://github.com/linkedin/Zopkio。它是一个用于分布式系统功能和性能测试的开源框架。


推荐