Architecture 如何在依赖关系树的深层增量更改上测试完整的软件系统?

Architecture 如何在依赖关系树的深层增量更改上测试完整的软件系统?,architecture,continuous-integration,automated-tests,integration-testing,Architecture,Continuous Integration,Automated Tests,Integration Testing,我追求的是一个可以在一个项目上运行的系统(通常在CI中),该系统能够通过引入的更改自动测试所有依赖者的项目。此外,如果一个依赖项目选择加入,我希望将测试传播到它的依赖项目,以此类推 这样的制度是否已经存在 这里有一个假设的东西来缓解关于这个话题的对话 假设你发一条船™. 阿辛™ 是一个系统,而不仅仅是一个可执行文件 阿辛™ 由精心编制的独立组件和/或子系统组成 为了简单起见,让我们说一句话™ 由ATHING-DB组成™, ATHING-REST-API™, 阿兴义™, 和WidgetMicr

我追求的是一个可以在一个项目上运行的系统(通常在CI中),该系统能够通过引入的更改自动测试所有依赖者的项目。此外,如果一个依赖项目选择加入,我希望将测试传播到它的依赖项目,以此类推

这样的制度是否已经存在

这里有一个假设的东西来缓解关于这个话题的对话

假设你发一条船™.

  • 阿辛™ 是一个系统,而不仅仅是一个可执行文件
  • 阿辛™ 由精心编制的独立组件和/或子系统组成
    • 为了简单起见,让我们说一句话™ 由ATHING-DB组成™, ATHING-REST-API™, 阿兴义™, 和WidgetMicroService™.
  • 所有的服务™ 都经过了很好的测试,e2e测试处于最高水平
现在假设你做一个改变。假设更改只发生在系统的一个组件中——更新RESTAPI中使用的一个库。这个过程是什么样的

  • 您可以克隆ATHING-REST-API™ source&更新lib
  • 您推动您的更改,进行代码审查,并且(希望)等待CI告诉您您的单元测试通过
  • 你合并 你在等待一个更高层次的构建™ 你可以测试一下这个系统的工作原理
这里缺少的是高级集成测试不是在依赖关系图的增量更改上运行的。缺乏一致、快速、完整的系统集成测试对于在系统中工作的每个人来说都是一种痛苦。在变更时,完整的系统集成测试通常发生在变更提交、合并和波及整个构建系统之后——而不是之前,在应该发生的地方,以防止垃圾进入垃圾出

那么,人们知道什么?你试过这样的东西吗?当然,可行性取决于系统的体系结构——但假设在单个机箱上构建、获取和运行所有系统组件的能力是可以实现的。对于docker来说,实现这一目标并非易事,然而,我预见它会突然变得更容易,可能成本更低。也许存在一些dockery解决方案

谢谢