验收测试和功能测试之间的真正区别是什么?
它们各自的亮点或目标是什么? 我读到的每个地方都有模棱两可的相似之处。
在我看来,主要的区别在于谁说测试是成功还是失败。
功能测试,测试系统是否满足预定义的需求。它是由负责开发该系统的人员执行和检查的。
验收测试由用户签字确认。理想情况下,用户会说出他们想要测试的内容,但是在实践中,由于用户没有投入足够的时间,功能测试很可能就要结束了。请注意,这种观点来自商业用户,我处理的其他用户集,例如航空和其他安全关键用户可能没有这种区别,
验收测试 :
黑盒测试在交付前在系统(例如软件、大量制造的机械零件或成批的化学产品)上执行。
尽管这里继续写道:
它也被称为功能测试、黑盒测试测试、发布验收、质量保证测试、应用测试、信心测试、最终测试、验证测试或工厂验收测试
上面有“需要引用”的标记。
功能测试 (实际上重定向到系统测试) :
在一个完整的综合系统上进行,以评估该系统是否符合指定的要求。系统测试属于黑盒测试的范围,因此不需要了解代码或逻辑的内部设计。
所以从这个定义来看,它们几乎是一样的。
根据我的经验,验收测试通常是功能测试的一个子集,客户在正式的结束过程中使用,而功能/系统测试将由开发人员/QA 部门运行。
答案是观点。我在很多项目中工作过,成为了测试经理和问题经理,所有不同的角色和不同书籍中的描述都是不同的,所以这里是我的变体:
功能测试: 从功能的角度对业务需求进行全面的测试。
验收测试: “付费”客户做他喜欢做的测试,这样他就可以接受交付的产品。它取决于客户,但通常测试不像功能测试那样彻底,特别是如果它是一个内部项目,因为涉众审查并信任在早期测试阶段完成的测试结果。
正如我所说,这是我的观点和经验。功能测试是系统化的,验收测试更像是业务部门对事物的测试。
它们是一回事。
在部署或交付系统之前,在与实际生产/部署环境尽可能相同的情况下,对已完成的系统进行验收测试。
您可以以自动的方式或手动的方式进行验收测试。
在我的世界里,我们使用以下术语:
功能测试 : 这是一个 核实活动; 我们是否构建了一个正确工作的产品?软件是否满足业务需求?
对于这种类型的测试,我们拥有覆盖所有我们能想到的可能场景的测试用例,即使那个场景在“现实世界”中不太可能存在。在进行这种类型的测试时,我们的目标是获得最大的代码覆盖率。我们使用任何当时可以获取的测试环境,只要它是可用的,它就不必是“生产”级别的。
验收测试 : 这是一个 确认活动; 我们构建的东西正确吗? 这是客户真正需要的吗?
这通常是与客户合作完成的,或者是由内部客户代理(产品所有者)完成的。对于这种类型的测试,我们使用的测试用例覆盖了我们期望使用软件的典型场景。此测试必须在“类似生产”的环境中进行,在与客户将使用的硬件相同或接近的硬件上进行。这就是我们测试“能力”的时候:
可靠性,可用性 强 > : 通过压力测试验证。
可伸缩性 : 通过负载测试验证。
可用性 : 通过对客户的检查和演示进行验证。用户界面是否按照他们的喜好配置?我们把客户品牌放在正确的位置了吗?我们有他们要求的所有字段/屏幕吗?
安全性 (又名 Securability,只是为了适应): 通过演示验证。有时客户会聘请外部公司进行安全审计和/或入侵测试。
可维护性 : 通过演示如何交付软件更新/补丁来验证。
可配置性 : 通过演示客户如何修改系统以满足他们的需求来验证。
这绝对不是标准,而且我也不认为存在“标准”的定义,正如这里相互矛盾的答案所证明的那样。对于您的组织来说,最重要的事情是精确地定义这些术语,并坚持使用它们。
函数测试: 应用从指定函数派生的测试数据 不考虑最终程序结构的要求 黑盒测试
验收测试: 为确定系统是否满足验收标准而进行的正式测试ーー使最终用户能够确定是否满足验收标准 接受这个制度。
观众。功能测试是为了确保生产软件的团队成员能够做到他们所期望的。验收测试是为了向消费者保证它满足他们的需要。
范围。功能测试一次只测试一个组件的功能。验收测试涵盖了产品的任何方面,这些方面对消费者来说足够重要,可以在接受软件之前进行测试(例如,任何值得花费时间或金钱来测试以确定其可接受性的东西)。
软件可以通过功能测试、集成测试和系统测试; 但当客户发现功能不能满足他们的需求时,测试就会失败。这通常意味着有人搞砸了规格。软件也可能在一些功能测试中失败,但是通过了验收测试,因为客户愿意处理一些功能性错误,只要软件能够很好地完成他们需要的核心功能(测试版软件在完全功能化之前通常会被一部分用户接受)。
区别在于测试问题和解决方案。软件是一个问题的解决方案,两者都可以测试。
功能测试确认软件在解决问题的范围内执行功能。这是开发软件不可或缺的一部分,相当于大规模生产的产品在出厂前的测试。功能测试验证产品实际上像您(开发人员)认为的那样工作。
验收测试验证产品实际上解决了它要解决的问题。这最好由用户(客户)完成,例如执行软件协助的他/她的任务。如果软件通过了这个现实世界的测试,那么它就可以替换以前的解决方案。这种验收测试有时只能在生产环境中正确地进行,特别是如果您有匿名客户(例如网站)。因此,只有在使用数天或数周后,新特性才会被接受。
功能测试 -测试产品,验证它具有您设计或构建的质量(功能、速度、错误、一致性等)
验收测试 -在其上下文中测试产品,这需要(模拟)人际交互,测试它对原始问题有预期的效果。
我喜欢帕特里克 · 卡夫的回答。我想补充的是 测试水平和 测试类型之间的区别,这让我大开眼界。
使用 V 型很容易解释测试级别 ,例如: 每个 测试水平都有其对应的 发展水平。它具有典型的时间特征,它们在开发生命周期的某个阶段执行。
测试类型是一个特性,它侧重于一个特定的测试目标。测试类型强调您的质量方面,也称为技术或非功能方面。在任何 测试水平上执行。我喜欢使用在 ISO/IEC 25010:2011中提到的质量特性作为 测试类型。
完成它。还有一种叫 回归测试的东西。这是一个额外的分类旁边的 测试水平和 测试类型。回归分析回归分析是一个你想要重复的测试,因为它涉及到你的产品中一些关键的东西。它实际上是为每个 测试水平定义的测试的子集。如果在您的产品中有一个小的错误修复,那么人们并不总是有时间重复所有的测试。回归测试就是这个问题的答案。
二者之间的关系: 验收测试通常包括功能测试,但也可能包括额外的测试,例如检查标签/文件要求。
功能测试 是当被测试的产品被放置到一个测试环境中,这个环境可以产生目标环境通常产生甚至超过的各种刺激(在测试范围内) ,同时检查被测设备的响应。
对于物理产品(而不是软件) ,有两种主要的 验收测试: 设计测试和制造测试。设计测试通常使用大量已通过生产测试的产品样品。不同的消费者可能以不同的方式测试设计。
当设计根据产品规格进行测试时,验收测试被称为验证,当产品置于消费者的真实环境中时,验收测试被称为验证。
验收测试 只是客户端进行的测试,而 包括其他类型的测试:
对于功能测试与非功能测试(它们的子类型) ,请参阅我对此 有个问题的回答。