【发布时间】:2010-10-22 05:28:33
【问题描述】:
什么是功能测试?这与单元测试和集成测试有何不同?
【问题讨论】:
标签: c# unit-testing testing terminology
什么是功能测试?这与单元测试和集成测试有何不同?
【问题讨论】:
标签: c# unit-testing testing terminology
另一种思路是这样的:
单元测试:
将您的代码作为单元进行测试,调用方法并验证返回值和对象属性状态/值
功能测试:
在执行任务时测试您的代码路径。这可确保您的应用程序按照您的代码执行的操作。
集成测试?你是说集成测试吗?
集成测试:
通过将代码插入更大的代码块来测试您的代码,以确保您没有破坏现有逻辑并且您能够重新集成到主分支中。
【讨论】:
功能测试确保客户要求在最终产品中按照规范中的规定得到实施。 单元测试是检查一小部分代码的行为是否符合预期。 当您将所有不同的部分/模块组合在一起时,集成测试可确保系统稳定。
例如,BigBank Corporation 想要一种软件,该软件可以生成客户银行对帐单并每月为每位客户插入 3 笔随机费用。
项目经理在与 BigBank 代表多次讨论后编写软件功能规范。
开发人员编写了一个模块来填充数据库中的模板语句。他执行单元测试以检查是否涵盖了大多数情况(典型客户、当月没有数据等)
另一位开发人员创建了一个随机数生成器模块。他对此进行了单元测试。
集成商获取这两个模块,编译它们并执行集成测试,以确保它们可以很好地协同工作。
最后,为了向 BigBank 提供测试版试用,测试团队执行功能测试以验证软件是否符合功能规范。
【讨论】:
测试目标的功能测试应关注可直接追溯到功能规范或业务规则的任何测试需求。这些测试的目标是验证正确的数据接受、处理和检索。它测试产品的功能和操作行为以确保它们符合其规范,并结合忽略系统或组件的内部机制并仅关注响应所选输入和执行条件而生成的输出的测试。这种类型的测试基于典型的黑盒技术,即通过通过 UI(用户界面)与应用程序交互并分析输出(结果)来验证应用程序(及其内部流程)。
【讨论】:
单元测试: 尽可能测试最小的代码单元,通常是一个函数或方法。通过使用模拟等。理想情况下,这应该非常快,并且不会以任何方式影响硬盘或网络。
功能测试: 测试一组一起工作的函数/方法。理想情况下,这也不应该同时进入磁盘或网络,但通常会。
集成测试: 测试在现实世界中运行,进入真实(尽管是测试)数据库,写入磁盘等。您正在测试您的程序是否与其他服务正常工作,它是否与它们正确“集成”。您通常会有一个单独的程序(例如 Selenium)来执行测试,就像真正的用户一样。
还有: 白盒测试: 了解程序内部工作原理的测试。单元测试和功能测试通常是白盒。一个例子是调用一个函数来保存一个值,然后检查数据库中的值是否正确。
黑盒测试: 不了解内部结构并将程序/功能/方法视为“黑匣子”的测试。一个例子是调用一个函数来保存一个值并调用另一个(公共)函数来获取该值。
【讨论】:
单元测试在单个应用层(演示、 业务逻辑、数据访问等)。
功能测试跨越多个应用层,因此 测试跨越完整的部分 应用程序功能。
集成测试将是跨多个应用程序的测试 组件甚至应用程序。
【讨论】:
如果您查看 V 模型,功能测试现在通常称为端到端测试或系统测试。
单元测试显然是测试可能的最小代码单元,集成测试是检查您的单元是否与系统的其他部分很好地集成。
【讨论】:
“功能测试”一词通常用于测试整个系统,例如从浏览器端到数据库层的 Web 应用程序。虽然我对自己滥用这个术语感到内疚,但我相信“系统测试”或“端到端测试”这两个术语能更好地描述它。
“功能测试”的另一个含义可能只是“测试功能”,这通常也适用于单元测试或集成测试。但是有些测试不是功能测试。几乎所有与非功能性需求相关的东西都属于该类别,例如负载测试或分析。
我认为最初的区别可能是“功能系统测试”和“非功能系统测试”之间的区别,现在“功能测试”通常用于区分端到端测试和测试子系统/单元。
【讨论】:
首先我们应该了解软件的“功能”是什么?
功能可以被认为是软件打算执行的任务/活动。
因此,测试软件的每一个功能称为功能测试
在进行单元测试时,您将隔离代码并测试其中的每个单元。
将程序中的方法/函数视为一个单元,您将在其中传递一些参数并期望代码提供所需的输出,测试这样的代码单元称为单元测试
一组单元充当软件的功能,对这些功能的测试可以称为功能测试
请浏览链接以更好地理解它
【讨论】: