代码之家  ›  专栏  ›  技术社区  ›  Tuukka Mustonen

集成测试是一个总括术语吗?如果是,它包括哪些类型的测试?

  •  7
  • Tuukka Mustonen  · 技术社区  · 15 年前

    我发现“集成测试”的概念令人困惑。似乎有很多解释和范围:

    • 功能/验收测试 (例如,使用Selenium测试用户界面)
    • 测试不同类/模块的集成 一起测试软件(只需一起测试两个或多个类,而不需要它们做任何特殊的事情,比如db调用之类的)
    • 测试系统配置 独立的功能/特性(数据库集成工作,正确注入依赖项,安全基类工作)
    • 测试整个系统 (运行使用数据库、web服务等的服务)
    • 等等。

    我开始将集成测试视为一个总括术语(而不是在编程会谈中定义它,在编程会谈中,通常会给出特定/严格的含义):

    • 集成测试 包含:
      • 单元集成测试 (在同一个包中测试不同类的集成,而不调用外部库)
      • 功能/验收测试 (例如,通过Selenium测试软件的最终输出)
      • 系统测试 (包括中列出的各种技术和非功能相关的测试 Wikipedia article )

    在Maven默认生命周期中,只有“测试”和“集成测试”阶段。这似乎将测试分为两类,并与这些假设一致。

    有许多现有的问题和答案,寻找单元测试、功能测试、回归测试等的差异。然而,我正在寻找关于集成测试的更具体的答案:如何对集成测试进行分类,以及在其中包含什么?另外,您是否避免像我所做的那样将软件测试大致分为两类:单元测试(1个单元)和集成测试(2个以上单元)?

    3 回复  |  直到 15 年前
        1
  •  3
  •   SteveD    15 年前

    计算中充满了重载的术语,这些术语对任何与您交谈的程序员来说都有一个稍微不同的(有时也不是那么细微的)含义。集成测试就是其中之一。

    我倾向于支持您将集成测试解释为测试2个或更多单元连接在一起。但这仍然是相当模糊的,因为我们可能有不同的定义什么是“单位”。

    我认为更重要的是,一个开发团队应该就集成测试的含义达成一致,而不是找到一个真正的集成测试定义。

        2
  •  3
  •   Jonny Cundall    15 年前

    我的团队认为(用你的话),集成测试覆盖了

    • 测试软件的不同类/模块的集成(简单地测试两个或多个类在一起,而不做任何特殊的事情,比如db调用和其他事情)
    • 独立测试系统配置功能/特性(数据库集成工作、正确注入依赖项、安全基类工作)

    没有别的了。我们将系统测试和验收测试视为不同的系列。

    我们就此进行了长时间的讨论,以确保我们在讨论考试时都说同一种语言。

    我并不强烈反对你所定义的集成测试,但我只是想说,如果你工作的所有人都同意一个分类,那就太好了。

        3
  •  2
  •   tuxdna    11 年前

    好吧,你有单元测试,它的精确定义是不同的,但是肯定包含了所有那些用类似于JUnit的工具定义的测试,并且以与源代码相同的方式组织。如果对于任何源代码文件,您可以找到并且只能找到一个测试,那么您找到的就是一个单元测试。

    然后是系统测试,它以尽可能接近客户的方式测试整个系统。

    任何存在于这两者之间的测试都是一个集成测试——既不是源代码的同构,也不是最终用户体验的代表。

    这是一个相当大的差距之间的两个类别,他们自己有很多不同的实践。这个差距可能包含许多潜在的有用测试,但这些测试的性质自然会有很大的不同。