2010-07-14 56 views
7

我发现'集成测试'的概念令人困惑。似乎有相当多的解释和范围:集成测试是否涵盖了一个总称,如果是,它包含哪些类型的测试?

  • 功能/验收测试(如与测试的用户界面,例如,硒)
  • 测试软件不同的类/模块整合在一起(简单地测试两个或更多的类一起,没有他们做任何特殊的数据库调用和东西)
  • 测试系统配置功能/功能独立(数据库集成作品,依赖关系被正确注入,安全基类工作)
  • 测试系统作为一个整体(正在运行的服务使用数据库,Web服务等)
  • 等等,等等

我开始看到整合测试作为一个总称(而不是编程讲座,其中特别/严格的意义往往是给它定义它):

  • 集成测试包含:
    • 单元集成测试(同一包中的不同类的测试集成而不调用外部库)
    • 功能/验收测试(通过硒的软件的测试最终输出,例如)
    • 系统测试(包括多方面的,更多的技术&非特征有关,如Wikipedia article上市测试)

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

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

+0

请注意:由于主题似乎很模糊,我不认为我可以选择任何答案作为“接受”的答案。他们都很好。 – 2010-09-27 19:17:48

回答

3

计算充满了重载的术语,与您所谈论的任何程序员都有轻微的(有时并非如此轻微)不同的含义。集成测试就是其中之一。

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

我认为一个开发团队认同集成测试意味着什么更重要,而不是找到集成测试的真正定义。

3

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

  • 测试不同类别/软件模块整合在一起(简单地测试两个或多个类在一起,没有他们做什么特别的喜欢分贝电话之类的东西)
  • 测试系统配置功能/特性 - 独立(数据库集成工程,依赖正确注射,安全基础类工作)

,别无其他。我们将系统测试和验收测试视为不同的系列。

我们在这方面进行了一些长时间的讨论,以确保我们在谈论测试时都讲同一种语言。

我并不强烈地意识到您定义的集成测试,但我只是说如果所有与您合作的人都同意分类,那很好。

2

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

然后进行系统测试,测试整个系统尽可能靠近客户看到的方式。

生活在这两件事之间的任何测试都是集成测试 - 既不与源代码同构,也不代表最终用户体验。

这两个类别在实践中差异很大,差距很大。这种差距可能包含很多潜在有用的测试,但这些测试的性质自然会有很大的变化。

相关问题