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