7

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

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

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

  • 集成测试包含:
    • 单元集成测试(测试同一个包内不同类的集成,无需调用外部库)
    • 功能/验收测试(例如,通过 Selenium 测试软件的最终输出)
    • 系统测试(包括维基百科文章中列出的各种、更多技术和非功能相关的测试)

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

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

4

3 回答 3

3

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

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

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

于 2010-07-14T12:46:59.400 回答
3

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

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

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

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

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

于 2010-07-14T15:51:05.637 回答
2

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

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

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

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

于 2010-07-27T07:15:07.160 回答