首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成测试/单元测试:做太多的集成测试?

集成测试/单元测试:做太多的集成测试?
EN

Stack Overflow用户
提问于 2013-07-04 23:19:08
回答 3查看 402关注 0票数 3

我一直在设计一些单元测试来模拟每个单元所具有的每个依赖项。这与预期的一样。我现在需要做集成测试。

例如,我有一个依赖于另外两个层的层,我已经将每个单独的层作为一个单元进行了单独测试,以模拟每个依赖项,但现在我需要执行集成测试。

因此,假设我有以下三层:

代码语言:javascript
复制
  Layer1 > Layer2 > Layer3

我可以在Layer1上做一个集成测试,它有Layer2和Layer3的真实实例(而不是模拟实例)。

那么,我应该为Layer2做一个集成测试吗?其中包括以下工作流

代码语言:javascript
复制
  Layer2 > Layer3

再说一次,这里没有任何东西被嘲笑,它们是集成测试。

我看到的问题是,我的Layer1集成测试实际上涵盖了相同的Layer2集成测试。

我不太确定我是不是有点走得太远了。我知道测试越多越好,但我在测试layer1时看到了重复的测试

代码语言:javascript
复制
  Layer1 > Layer2 > Layer3

和layer2

代码语言:javascript
复制
  Layer2 > Layer3

所以我可能只需要使用集成测试来测试Layer1

代码语言:javascript
复制
  Layer1 > Layer2 > Layer3

这可能会涵盖layer2和layer3集成测试

代码语言:javascript
复制
  Layer2 > Layer3 
EN

回答 3

Stack Overflow用户

发布于 2013-07-04 23:36:22

您应该测试在您的应用程序中可以实现的任何场景(通过客户/组件交互)。如果Layer2可以在没有Layer1干扰的情况下与Layer3交互,请对其进行测试。

将集成测试看作是对整个用例的测试。是否存在这样的情况:您的客户可以从单独调用Layer2开始?如果有,请测试它。如果不是,你为什么要这么做?永远不要测试没有使用过的东西。这与编写“有人以后可能需要”的代码是一样的。这是浪费时间,不要那样做。

票数 4
EN

Stack Overflow用户

发布于 2013-07-05 02:38:33

我倾向于松散地定义集成测试。如果我看到一个测试涵盖了几个类之间的交互,我倾向于将其称为集成测试(有另一个术语来描述它,但我现在记不起来了)。对我来说,这不仅仅是关于层集成。

这个想法是,您应该基于关键场景和/或重要用例进行集成测试。通过这些事情,你将知道你的集成测试应该从哪里开始。不要为了创建集成测试而创建它。当用于不太重要的部分时,它们往往会有太多的工作和维护。

在您的示例中,如果您在Layer1上进行了一次集成测试,该测试覆盖了所有三个层,那么就足以涵盖您的场景。正如在前面的回答中提到的,没有必要刻意测试Layer2 > Layer3,除非您说其他东西可能会命中Layer2并完全绕过Layer1。但即使是这样,我也会从那个“其他东西”开始准备一个集成测试。只有当你有一个从Layer2开始的用例时,才测试Layer2 > Layer3

票数 1
EN

Stack Overflow用户

发布于 2013-07-05 20:35:38

集成测试有时是有用的,但就性能和复杂性而言,它们是以high cost形式出现的。

它们不应该用于系统行为的详尽验证,它们包含的活动部件的数量以及它们行为的组合数量通常太高了。

我做集成测试主要有两个目的:

或者,更准确地说,测试您为将系统与第三方模块隔离而编写的适配器是否正确地调用了这些第三方模块。

如果您正在努力理解所有不同的测试实践以及何时使用它们,"Growing Object-Oriented Software, Guided by Tests“一书包含了非常有用的指南。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17473752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档