如何编写自动化集成测试?
How does one write an automated integration test?
我阅读了很多关于单元测试和集成测试的内容,单元测试部分我理解得相当好——隔离被测对象,并使用接口模拟依赖项并注入它们。 (或使用接缝注入可测试的行为)。
然而,即使在搜索之后对我来说仍然是一个谜的东西是集成测试。每个博客和 link 都在谈论一起测试各种组件,该做的和不该做的,CI 服务器等,但是没有太多关于如何完成的解释。
集成测试是自动化的吗?或者这是手动操作?如果它是自动化的,我是否用我的应用程序所在的本地语言将其编写为代码?如何检查或验证集成测试是否按预期工作?
例如,如果我有 4 个服务(一个 Socket 客户端、一个 Socket 服务器、一个数据库和一个 Web 应用程序)并且我想对这 4 个服务如何相互交互进行一些集成测试。我将如何处理这个问题?我知道会涉及一些虚拟数据,但我的集成测试的哪一部分是检查系统是否正确协同工作?这部分我真的不清楚。
正如您所说的单元测试,您需要隔离被测对象,并使用接口模拟依赖项并注入这些...
集成测试没有隔离单元...您可以测试两个或更多部分(但您不应该有广泛的集成测试既不适合大测试场景)。集成测试的一个示例是使用数据库测试您的代码,您可能需要它来启动数据库并清理它以进行可重复的测试。
你也可以进行接口测试(例如客户端执行和与服务器的集成)等等。
不要忘记此测试有一个缺点,它们速度较慢且难以维护,但它们与单元测试的目的不同,单元测试检查单元是否按预期工作并具有真正的依赖性。
所以总结一下,如果您编写的测试没有完全隔离单元,那么它就是集成测试,由于其性质,最好通过单元测试来测试代码的逻辑,并在需要时保留较少的集成测试测试单元之间的交互。
你也可以看看这个不错的介绍https://softwareengineering.stackexchange.com/questions/48237/what-is-an-integration-test-exactly
来自 "the pragmatic programmer" 的有趣定义:集成测试表明系统的主要部分可以很好地协同工作
我阅读了很多关于单元测试和集成测试的内容,单元测试部分我理解得相当好——隔离被测对象,并使用接口模拟依赖项并注入它们。 (或使用接缝注入可测试的行为)。
然而,即使在搜索之后对我来说仍然是一个谜的东西是集成测试。每个博客和 link 都在谈论一起测试各种组件,该做的和不该做的,CI 服务器等,但是没有太多关于如何完成的解释。
集成测试是自动化的吗?或者这是手动操作?如果它是自动化的,我是否用我的应用程序所在的本地语言将其编写为代码?如何检查或验证集成测试是否按预期工作?
例如,如果我有 4 个服务(一个 Socket 客户端、一个 Socket 服务器、一个数据库和一个 Web 应用程序)并且我想对这 4 个服务如何相互交互进行一些集成测试。我将如何处理这个问题?我知道会涉及一些虚拟数据,但我的集成测试的哪一部分是检查系统是否正确协同工作?这部分我真的不清楚。
正如您所说的单元测试,您需要隔离被测对象,并使用接口模拟依赖项并注入这些...
集成测试没有隔离单元...您可以测试两个或更多部分(但您不应该有广泛的集成测试既不适合大测试场景)。集成测试的一个示例是使用数据库测试您的代码,您可能需要它来启动数据库并清理它以进行可重复的测试。
你也可以进行接口测试(例如客户端执行和与服务器的集成)等等。
不要忘记此测试有一个缺点,它们速度较慢且难以维护,但它们与单元测试的目的不同,单元测试检查单元是否按预期工作并具有真正的依赖性。
所以总结一下,如果您编写的测试没有完全隔离单元,那么它就是集成测试,由于其性质,最好通过单元测试来测试代码的逻辑,并在需要时保留较少的集成测试测试单元之间的交互。
你也可以看看这个不错的介绍https://softwareengineering.stackexchange.com/questions/48237/what-is-an-integration-test-exactly
来自 "the pragmatic programmer" 的有趣定义:集成测试表明系统的主要部分可以很好地协同工作