验收测试与功能测试的区别?

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

它们各自的亮点或目标是什么? 我读到的每个地方都有模棱两可的相似之处。

122024 次浏览

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

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

验收测试由用户签字确认。理想情况下,用户会说出他们想要测试的内容,但是在实践中,由于用户没有投入足够的时间,功能测试很可能就要结束了。请注意,这种观点来自商业用户,我处理的其他用户集,例如航空和其他安全关键用户可能没有这种区别,

验收测试 :

黑盒测试在交付前在系统(例如软件、大量制造的机械零件或成批的化学产品)上执行。

尽管这里继续写道:

它也被称为功能测试、黑盒测试测试、发布验收、质量保证测试、应用测试、信心测试、最终测试、验证测试或工厂验收测试

上面有“需要引用”的标记。

功能测试 (实际上重定向到系统测试) :

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

所以从这个定义来看,它们几乎是一样的。

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

答案是观点。我在很多项目中工作过,成为了测试经理和问题经理,所有不同的角色和不同书籍中的描述都是不同的,所以这里是我的变体:

功能测试: 从功能的角度对业务需求进行全面的测试。

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

正如我所说,这是我的观点和经验。功能测试是系统化的,验收测试更像是业务部门对事物的测试。

它们是一回事。

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

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

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

功能测试 : 这是一个 核实活动; 我们是否构建了一个正确工作的产品?软件是否满足业务需求?

对于这种类型的测试,我们拥有覆盖所有我们能想到的可能场景的测试用例,即使那个场景在“现实世界”中不太可能存在。在进行这种类型的测试时,我们的目标是获得最大的代码覆盖率。我们使用任何当时可以获取的测试环境,只要它是可用的,它就不必是“生产”级别的。

验收测试 : 这是一个 确认活动; 我们构建的东西正确吗? 这是客户真正需要的吗?

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

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

  • 可伸缩性 : 通过负载测试验证。

  • 可用性 : 通过对客户的检查和演示进行验证。用户界面是否按照他们的喜好配置?我们把客户品牌放在正确的位置了吗?我们有他们要求的所有字段/屏幕吗?

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

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

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

这绝对不是标准,而且我也不认为存在“标准”的定义,正如这里相互矛盾的答案所证明的那样。对于您的组织来说,最重要的事情是精确地定义这些术语,并坚持使用它们。

函数测试: 应用从指定函数派生的测试数据 不考虑最终程序结构的要求 黑盒测试

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

  1. 观众。功能测试是为了确保生产软件的团队成员能够做到他们所期望的。验收测试是为了向消费者保证它满足他们的需要。

  2. 范围。功能测试一次只测试一个组件的功能。验收测试涵盖了产品的任何方面,这些方面对消费者来说足够重要,可以在接受软件之前进行测试(例如,任何值得花费时间或金钱来测试以确定其可接受性的东西)。

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

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

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

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

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

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

我喜欢帕特里克 · 卡夫的回答。我想补充的是 测试水平测试类型之间的区别,这让我大开眼界。

测试水平

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

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

测试类型

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

  1. 功能测试
  2. 可靠性测试可靠性测试
  3. 性能测试
  4. 可操作性测试可操作性测试
  5. 安全测试
  6. 相容性测试
  7. 维修性测试维修性测试
  8. 可转移性测试可转移性测试

完成它。还有一种叫 回归测试的东西。这是一个额外的分类旁边的 测试水平测试类型回归分析回归分析是一个你想要重复的测试,因为它涉及到你的产品中一些关键的东西。它实际上是为每个 测试水平定义的测试的子集。如果在您的产品中有一个小的错误修复,那么人们并不总是有时间重复所有的测试。回归测试就是这个问题的答案。

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

功能测试 是当被测试的产品被放置到一个测试环境中,这个环境可以产生目标环境通常产生甚至超过的各种刺激(在测试范围内) ,同时检查被测设备的响应。

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

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

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

  • 功能测试: “这个按钮不工作”
  • 非功能性测试: “这个页面可以工作,但是速度太慢”

对于功能测试与非功能测试(它们的子类型) ,请参阅我对此 有个问题的回答。