【问题标题】:Is integration testing an umbrella term and if so, what types of tests does it include?集成测试是一个总称,如果是,它包括哪些类型的测试?
【发布时间】:2011-03-15 19:16:41
【问题描述】:

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

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

我开始将集成测试视为一个概括性术语(而不是在编程讨论中对其进行定义,其中通常赋予它特定/严格的含义):

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

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

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

【问题讨论】:

  • 请注意:由于主题看起来如此模糊,我认为我无法将任何答案选为“已接受”答案。他们都很好。

标签: unit-testing testing integration-testing categorization


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    • 一起测试软件的不同类/模块的集成(只需一起测试两个或多个类,而不需要它们执行任何特殊的操作,例如 db 调用和其他东西)
    • 独立测试系统配置功能/功能(数据库集成工作,依赖项正确注入,安全基类工作)

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-30
        • 2019-09-01
        • 2017-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        • 2014-09-01
        • 1970-01-01
        相关资源
        最近更新 更多