Language agnostic 如何进行集成测试?

Language agnostic 如何进行集成测试?,language-agnostic,testing,integration-testing,Language Agnostic,Testing,Integration Testing,有那么多关于单元测试的文章,但我几乎找不到任何关于集成测试的书籍/博客?你能给我推荐一些关于这个话题的读物吗 进行集成测试时要编写哪些测试? 什么是好的集成测试? 等等 感谢也许通常很难找到关于集成测试的信息,因为它更具体于实际应用程序及其业务用途。不过,我的看法是这样的 适用于单元测试的内容也适用于集成测试:模块应该有一种简单的方法来模拟其外部输入(文件、数据库、时间…),以便可以与其他单元测试一起进行测试 但我发现非常有用的是,至少对于面向数据的应用程序来说,能够创建应用程序的“控制台”版本

有那么多关于单元测试的文章,但我几乎找不到任何关于集成测试的书籍/博客?你能给我推荐一些关于这个话题的读物吗

进行集成测试时要编写哪些测试? 什么是好的集成测试? 等等


感谢

也许通常很难找到关于集成测试的信息,因为它更具体于实际应用程序及其业务用途。不过,我的看法是这样的

适用于单元测试的内容也适用于集成测试:模块应该有一种简单的方法来模拟其外部输入(文件、数据库、时间…),以便可以与其他单元测试一起进行测试

但我发现非常有用的是,至少对于面向数据的应用程序来说,能够创建应用程序的“控制台”版本,该版本接收完全确定其状态的输入文件(不依赖于数据库、网络资源…),并将结果作为另一个文件输出。然后可以维护成对的输入/预期结果文件,并作为夜间构建的一部分测试回归。有了这个控制台版本,就可以更轻松地编写脚本,并使调试变得非常容易,因为人们可以依赖一个非常稳定的环境,在这个环境中很容易复制bug和运行调试器。

JUnit和SUnit之父编写的任何东西都是一个很好的起点(对于一般的单元测试/测试编写)。我假设您不是指“持续集成”,这是一种基于过程的构建方法(当您让它工作时,它非常酷)

根据我自己的经验,集成测试看起来非常类似于常规的单元测试,只是在更高的层次上。更多的模拟对象。更多的状态初始化

我相信集成测试就像洋葱。它们有层次


有些人更喜欢“集成”他们的所有组件,并将“整个”产品作为“集成”测试的一部分进行测试。您当然可以这样做,但我更喜欢增量方法。如果您从低级开始,然后在更高的合成层继续测试,那么您将实现集成测试。

J.B.Rainsberger已经写过关于它们的文章。这里有一个链接,指向一篇InfoQ文章,其中包含更多信息