集成测试和功能测试的区别是什么?

功能测试和集成测试是否相同?

您通过单元测试开始您的测试,然后在完成单元测试之后,您进行集成测试,您将测试系统作为一个整体。功能测试与集成测试相同吗?您仍然需要将系统作为一个整体来测试它的功能一致性。

94367 次浏览

集成测试是指测试多个组件以及它们如何一起工作。例如,另一个系统如何与你的系统交互,或者数据库如何与你的数据抽象层交互。通常,这需要一个完全安装的系统,尽管在最纯粹的形式下它不需要。

功能测试是指根据产品的功能需求测试系统。产品/项目管理通常将这些记录下来,QA 将用户应该看到和体验的过程正式化,以及这些过程的最终结果应该是什么。根据产品的不同,这可以自动化,也可以不自动化。

功能测试: 这是一个测试过程,其中测试模块的每个组件。例如: 如果一个网页包含文本字段,单选按钮,按钮和下拉等组件需要检查。

集成测试: 检查两个模块之间的数据流的处理。

在功能测试中,测试人员只关注应用程序的功能和子功能。应用程序的功能应该是否正常工作。

在集成测试中,测试人员必须检查模块之间或子模块之间的依赖关系。模块记录的示例应该在另一个模块中正确获取和显示。

作者们在这个问题上分歧很大。我不相信有“正确”的解释。这真的要看情况。

例如: 大多数 Rails 开发人员将单元测试视为模型测试,将功能测试视为控制器测试,将集成测试视为那些使用 Capybara 之类的工具从最终用户的角度探索应用程序的测试——也就是说,浏览页面生成的 HTML,使用 DOM 检查期望。

还有验收测试,这反过来又是系统的“活”文档(通常他们使用 Gherkin 来使用自然语言编写这些文档) ,通过多种场景描述应用程序的所有特性,这些特性反过来由开发人员自动完成。恕我直言,功能测试和集成测试也可以同时考虑。

一旦你理解了其中的关键概念,你就可以更灵活地看待是非对错。因此,恕我直言,功能测试也可以被认为是集成测试。对于集成测试来说,取决于它正在进行的集成类型,它可能不是一个考虑周到的功能测试——但是在编写集成测试时,您通常会考虑到一些需求,所以大多数时候它也可以作为一个功能测试来考虑。

功能测试 :

是的,我们正在测试的产品或软件作为一个整体的功能,无论它是否正常工作的功能(测试按钮,链接等)

例如: 登录页面。

你提供用户名和密码,你测试它是否带你到主页。

集成测试 :

是的,您只测试集成软件,但是您测试数据流发生的位置以及数据库中是否发生了任何更改。

例如: 发送电子邮件

您发送一封邮件给某人,有一个数据流和数据库中的变化(已发送表增加值1)


记住-点击链接和图片不是集成测试。希望你明白为什么,因为只要点击一个链接,数据库就没有任何变化。

希望这对你有帮助。

这是一个重要的区别,但不幸的是,你永远不会找到一致意见。问题是,大多数开发人员都是从自己的角度来定义它们的。这和关于冥王星的争论非常相似。(如果它离太阳更近,它会是一颗行星吗?)

单元测试 很容易定义。它测试的削减(测试中的代码) ,没有其他。(好吧,尽可能少说点别的。)这意味着模仿,伪造和固定装置。

在光谱的另一端是许多人所说的 系统集成测试系统集成测试。这是尽可能多的测试,但仍然在您自己的 CUT 中寻找错误。

但是这两者之间的广阔空间呢?

  • 例如,如果您测试的仅仅是 CUT 以外的一点点内容,该怎么办?如果你包含一个斐波那契函数,而不是使用一个夹具,你已经注入?我想称之为 功能测试,但世界不同意我的观点。
  • 如果包含 time()rand()会怎样?或者如果你调用 http://google.com呢?我会称之为 系统测试,但是再一次,我是孤独的。

这有什么关系?因为系统测试是不可靠的。它们是必要的,但它们有时会因为你无法控制的原因而失败。另一方面,功能测试应该总是通过,而不是随机失败; 如果它们很快,那么为了使用测试驱动开发,可以从一开始就使用它们,而不必为内部实现编写太多测试。换句话说,我认为单元测试的麻烦可能比它们的价值更大,我有 好伙伴

我在三个轴上做了测试,所有的零都在 单元测试:

  1. 功能测试: 在调用堆栈中越来越深地使用实际代码。
  2. 集成测试: 越来越高的 起来调用堆栈; 换句话说,通过运行将使用它的代码来测试 CUT。
  3. 系统测试: 越来越多的不可重复操作(O/S 调度器、时钟、网络、 等等。)

一个测试可以很容易地全部3个,在不同程度上。

整合测试:- 当完成单元测试并将问题解决到相关组件时,所有必需的组件都需要集成到一个系统中,以便能够执行操作。 将系统的各个组成部分组合在一起后,对系统是否正常工作进行测试,这种测试称为集成测试。

功能测试:- 测试主要分为两类: 1. 功能测试 2. 非功能性测试 * * 功能测试:- 测试软件是否按照用户的要求工作。 * * 非功能测试:- 测试软件是否满足压力测试、安全测试等质量标准。

通常,客户只会提供功能测试和非功能测试的需求,需求不应该被提及,但是应用程序必须执行这些活动。

我想说,这两者之间有着紧密的联系,很难区分。 在我看来,集成测试是功能测试的一个子集。

功能性测试基于您收到的初始需求。您将按照要求测试应用程序的行为。

当涉及到集成测试时,它是模块之间的交互。如果 A 模块发送一个输入,B 模块能否处理它。

集成测试 < br > < li > 可以看出系统的不同模块是如何协同工作的。

  • 我们主要指的是不同模块的集成功能,而不是系统的不同组件。
  • 为了使任何系统或软件产品有效地工作,每个组件都必须彼此同步。
  • 我们用于集成测试的大多数时间工具将被选择用于单元测试。
  • 它用于复杂的情况,当单元测试被证明不足以测试系统时。

    功能测试

  • 它可以定义为测试模块的各个功能。
  • 它指的是在单独的级别上测试软件产品,以检查其功能。
  • 开发测试用例是为了检查软件是否有预期和意外的结果。
  • 这种类型的测试更多地是从用户的角度进行的。也就是说,它考虑用户对某种类型输入的期望。
  • 它也被称为黑盒测试测试和闭箱测试

  • 检查应用程序的功能通常称为功能测试,其中的集成测试是检查从一个模块到另一个模块的数据流。 让我们以转账应用程序为例。假设我们有一个页面,在其中输入所有的凭证,如果我们按下传输按钮,然后如果我们得到任何成功,那么这是功能测试。但是在同一个例子中,如果我们验证数量转移,那么它就是集成测试。

    集成测试——集成测试只是对不同模块的测试。您必须测试模块之间的关系。如果你打开 facebook,在输入登录 ID 和密码后,你会看到登录页面,你可以看到 facebook 的主页,因此登录页面是一个模块,主页是另一个模块。你必须检查他们之间的唯一关系意味着当你登录时,只有主页必须打开不消息框或其他任何东西。有两种主要类型的集成测试自顶向下方法和自底向上方法。

    功能测试-在功能测试中,您只需要考虑输入和输出。在这种情况下,您必须像一个真正的用户那样思考。对您提供的输入和得到的输出的测试是功能测试。你只能观察输出。在功能测试中,您不需要测试应用程序或软件的编码。