验收测试和功能测试之间的区别?

时间:2010-07-30 09:46:01

标签: testing functional-testing acceptance-testing

验收测试和功能测试之间的真正区别是什么?

每个的亮点或目标是什么?我读到的每个地方都模糊不清。

11 个答案:

答案 0 :(得分:163)

在我的世界中,我们使用以下术语:

功能测试:这是验证活动;我们是否构建了正确的产品?该软件是否符合业务要求?

对于这种类型的测试,我们的测试用例涵盖了我们可以想到的所有可能情景,即使这种情况不太可能存在于“现实世界中”。在进行此类测试时,我们的目标是实现最大的代码覆盖率。我们使用当时可以抓取的任何测试环境,它不必是“生产”口径,只要它可以使用。

验收测试:这是验证活动;我们做了正确的事吗?这是客户真正需要的吗?

这通常是与客户合作完成的,或由内部客户代理(产品所有者)完成。对于这种类型的测试,我们使用的测试用例涵盖了我们期望使用该软件的典型场景。此测试必须在“类似生产”的环境中,在与客户将使用的相同或接近的硬件上进行。这是我们测试“能力”的时候:

  • 可靠性,可用性:通过压力测试验证。

  • 可扩展性:通过负载测试验证。

  • 可用性:通过对客户的检查和演示进行验证。 UI是否符合他们的喜好?我们是否将客户品牌放在了所有合适的位置?我们是否有他们要求的所有领域/屏幕?

  • 安全性 (又名,安全性,只是为了适应):通过演示验证。有时,客户会聘请外部公司进行安全审核和/或入侵测试。

  • 可维护性:通过演示如何提供软件更新/补丁来验证。

  • 可配置性:通过演示客户如何修改系统以满足其需求来验证。

这绝不是标准的,我认为没有“标准”定义,因为这里的冲突答案证明了这一点。对您的组织而言,最重要的是您精确定义这些术语,并坚持使用它们。

答案 1 :(得分:61)

我喜欢Patrick Cuff的回答。我想添加的是测试级别测试类型之间的区别,这对我来说是个大开眼界。

测试级别

测试级别很容易使用V-model来解释,例如:enter image description here 每个测试级别都有相应的开发级别。它具有典型的时间特征,它们在开发生命周期的某个阶段执行。

  1. 组件/单元测试=>验证详细设计
  2. 组件/单元集成测试=>验证全球设计
  3. 系统测试=>验证系统要求
  4. 系统集成测试=>验证系统要求
  5. 验收测试=>验证用户要求
  6. 测试类型

    测试类型是一个特征,它侧重于特定的测试目标。 测试类型强调您的质量方面,也称为技术或非功能方面。 测试类型 可以在任何测试级别执行。我喜欢将测试类型用作ISO / IEC 25010:2011中提到的质量特性。

    1. 功能测试
    2. 可靠性测试
    3. 性能测试
    4. 可操作性测试
    5. 安全测试
    6. 兼容性测试
    7. 可维护性测试
    8. 可转移性测试
    9. 使其完整。还有一些叫做回归测试的东西。这是测试级别测试类型旁边的额外分类。 回归测试是您想要重复的测试,因为它涉及产品中的关键内容。它实际上是您为每个测试级别定义的测试子集。如果您的产品中存在小错误修复,则不会总是有时间重复所有测试。 回归测试就是答案。

答案 2 :(得分:22)

区别在于测试问题和解决方案。软件是问题的解决方案,两者都可以进行测试。

功能测试确认软件在您解决问题的方式范围内执行功能。这是开发软件不可或缺的一部分,与批量生产的产品出厂前的测试相当。功能测试验证产品实际上是否像您(开发人员)认为的那样工作。

验收测试验证产品实际上解决了它要解决的问题。这可以由用户(客户)最好地完成,例如执行他/她的软件辅助的任务。如果软件通过了这个真实世界的测试,则可以接受以前的解决方案。此验收测试有时只能在生产中正确完成,特别是如果您有匿名客户(例如网站)。因此,只有在使用数天或数周后才能接受新功能。

功能测试 - 测试产品,验证产品是否具有您设计或构建的品质(功能,速度,错误,一致性等)

验收测试 - 在其上下文中测试产品,这需要(模拟)人机交互,测试它对原始问题有预期效果。

答案 3 :(得分:9)

答案是意见。我在很多项目中工作,并且是testmanager和issuemanager以及所有不同的角色,各种书籍中的描述都不同,所以这里是我的变体:

功能测试:从功能的角度考虑业务需求并测试所有这些要求是好的和彻底的。

验收测试:“付费”客户进行他喜欢的测试,以便他可以接受所交付的产品。这取决于客户,但通常测试不像功能测试那样彻底,特别是如果它是一个内部项目,因为利益相关者审查并信任在早期测试阶段完成的测试结果。

正如我所说,这是我的观点和经验。功能测试是系统性的,验收测试是业务部门测试的事情。

答案 4 :(得分:8)

  1. 受众。功能测试是为了确保团队成员生成他们所期望的软件。验收测试是为了确保消费者满足他们的需求。

  2. 范围。功能测试仅一次测试一个组件的功能。验收测试涵盖了产品的任何方面,对于消费者而言,在接受软件之前对其进行了足够的测试(即,需要花费时间或金钱来测试它以确定其可接受性)。

  3. 软件可以通过功能测试,集成测试和系统测试;只有在客户发现功能无法满足他们的需求时才会通过验收测试失败。这通常意味着有人搞砸了规范。软件也可能通过某些功能测试失败,但通过验收测试,因为只要软件能够很好地完成他们需要的核心内容,客户就愿意处理一些功能性错误(测试版软件通常会被一部分用户接受)是完全正常的。)

答案 5 :(得分:2)

功能测试:应用从指定功能派生的测试数据 要求,不考虑最终的计划结构。也称为 黑盒测试。

验收测试:为确定系统是否满足其验收标准而进行的正式测试 - 使最终用户能够确定是否 接受系统。

答案 6 :(得分:1)

在我看来,主要区别在于谁说测试成功还是失败。

功能测试测试系统是否满足预定义的要求。它由负责开发系统的人员执行和检查。

验收测试由用户签字。理想情况下,用户会说出他们想要测试的内容但实际上很可能是功能测试的日落,因为用户没有投入足够的时间。请注意,此视图来自我处理其他用户组的业务用户,例如航空和其他安全关键可能没有这种差异,

答案 7 :(得分:1)

Acceptance testing

  

...是在系统(例如软件,大量制造的机械部件或化学产品批次)交付之前进行的黑盒测试。

虽然这继续说:

  

它也被称为功能测试,黑盒测试,发布验收,QA测试,应用测试,置信度测试,最终测试,验证测试或工厂验收测试

带有“需要引用”标记。

Functional testing(实际上重定向到系统测试):

  

在完整的集成系统上进行,以评估系统是否符合其指定要求。系统测试属于黑盒测试的范围,因此,不需要了解代码或逻辑的内部设计。

因此,根据这个定义,它们几乎是一样的。

根据我的经验,验收测试通常是功能测试的一个子集,并且在客户的正式签核过程中使用,而功能/系统测试将由开发人员/ QA部门运行。

答案 8 :(得分:0)

两者之间的关系: 验收测试通常包括功能测试,但可能包括其他测试。例如,检查标签/文件要求。

功能测试是指将被测产品置于测试环境中,该环境可以产生各种刺激(在测试范围内)目标环境通常产生甚至超出的范围,同时检查被测设备的响应。

对于物理产品(非软件),有两种主要的验收测试:设计测试和制造测试。设计测试通常使用大量的产品样本,这些样本已通过制造测试。不同的消费者可能会以不同的方式测试设计。

当设计根据产品规格进行测试时,验收测试称为验证,当产品置于消费者的真实环境中时,验收测试称为验证。

答案 9 :(得分:0)

验收测试只是由客户进行的测试,包括其他类型的测试:

  • 功能测试:"此按钮无法正常工作"
  • 非功能性测试:"此页面有效,但速度太慢"

对于功能测试与非功能测试(其子类型) - 请参阅我对此SO question的回答。

答案 10 :(得分:-1)

他们是一回事。

在部署或交付系统之前,对已完成的系统进行验收测试,使其与实际生产/部署环境尽可能相同。

您可以自动或手动进行验收测试。