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

时间:2010-07-14 11:15:48

标签: unit-testing testing integration-testing categorization

我发现'集成测试'的概念令人困惑。似乎有不少解释和范围:

  • 功能/验收测试(例如,使用Selenium测试用户界面)
  • 测试软件的不同类/模块的集成(简单地一起测试两个或更多类,没有像db调用和东西那样做任何特殊的事情)
  • 独立测试系统配置功能/功能(数据库集成正常,正确注入依赖项,安全基类可用)
  • 整个系统测试(运行使用数据库,Web服务等的服务)
  • 等。等

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

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

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

现在有许多问题和答案正在寻找单元测试,功能测试,回归测试等之间的差异。但是,我正在寻找有关集成测试的更具体的答案:您如何对集成测试进行分类,以及您在其中包含哪些内容?另外,你是否将软件测试大致分为两类:单元测试(1个单元)与集成测试(2个以上单元)?

3 个答案:

答案 0 :(得分:3)

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

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

我认为更重要的是,一组开发人员就集成测试的意义达成一致,而不是找到集成测试的真正定义。

答案 1 :(得分:3)

我的团队看到(使用你的话),集成测试作为覆盖

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

,没有别的。系统测试和验收测试我们认为是不同的家庭。

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

我并不强烈反对您定义为集成测试的内容,但我只是说,如果您所有与之合作的人都同意分类,那就太好了。

答案 2 :(得分:2)

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

然后进行系统测试,测试整个系统尽可能接近客户会看到它。

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

这两个类别之间存在相当大的差距,这些差异在实践中差异很大。这个差距可能包含许多潜在有用的测试,但这些测试的性质自然会有很大差异。