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


Answers:


172

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

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

对于这种类型的测试,我们的测试用例涵盖了我们可以想到的所有可能的场景,即使该场景不太可能“存在于现实世界中”也是如此。在进行此类测试时,我们旨在最大程度地覆盖代码。我们使用当时可以抓住的任何测试环境,只要它可用就不必具有“生产”能力。

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

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

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

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

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

  • 安全性 (又名“ 安全性”,仅用于安装):通过演示进行验证。有时,客户会聘请外部公司进行安全审核和/或入侵测试。

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

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

这绝不是标准的,而且我不认为有“标准”定义,如此处矛盾的答案所示。对于您的组织而言,最重要的是准确定义这些术语并坚持使用。


加1为好答案,并“又名Securability,正好适合” :)。可笑的是:) SO团队没有考虑到这样一个事实,在现实世界中,有人可能像我一样用真实的单词替换+号。因此,他们不允许在注释中输入+1作为第一个单词,但允许“加号1” :)。因此,从功能上讲,他们未能正确测试此方法:)。Myabe他们刚刚尝试了验收测试:)
Geo

71

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

测试水平

测试级别使用V模型很容易解释,例如:在此处输入图片说明 每个测试级别都有其对应的开发级别。它具有典型的时间特征,它们在开发生命周期的特定阶段执行。

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

测试类型

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

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

要使其完整。还有一种叫做回归测试的东西。这是测试级别测试类型旁边的额外分类。一个回归测试是要重复,因为它触及的东西在你的产品的关键测试。实际上,这是您为每个测试级别定义的测试的子集。如果您的产品中有一个小的错误修复程序,则并非总是有时间重复所有测试。回归测试可以解决这个问题。


2
这是对这个问题的最佳答案,“在测试水平和测试类型之间的区别”是大多数答案在这里遗漏的东西,而您说的对,这是“大开眼界”
zmilan

23

测试问题和解决方案之间的区别。软件是解决问题的方法,两者都可以测试。

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

验收测试证明产品确实解决了要解决的问题。这最好由用户(客户)完成,例如执行软件协助的他/她的任务。如果该软件通过了此真实世界的测试,则可以替换以前的解决方案。有时只能在生产中正确执行此验收测试,尤其是在您有匿名客户(例如网站)的情况下。因此,只有在使用几天或几周后才能接受新功能。

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

验收测试 -在产品环境中测试产品,这需要(模拟)人机交互,测试产品对原始问题是否具有预期效果。


9

答案是意见。我从事过许多项目,并担任测试经理和问题经理,所有不同的角色和不同书籍中的描述都不同,所以这是我的变化:

功能测试:接受业务需求,并从功能角度全面测试所有需求。

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

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


我喜欢这个答案:)他们几乎是同一回事。
anbanm 2010年

1
是的,UAT最终是由“付费”客户完成的。但是,通常大多数情况下,质量检查人员首先会进行“良好”的测试,然后尝试“尝试”破坏系统,并在“付费”客户接触之前寻找所有“小”事情。QA测试人员还可以将用于重复繁琐操作的Selenium自动化与真正的UAT测试一起使用,但绝不要重复进行真正的测试来测试所有预期浏览器所期望的所有功能。UAT完全可以自我解释。我认为大多数功能测试描述似乎都是针对机器人和字典的。
汤姆·斯蒂克

如我所说,这是我的经验,如何解释这些术语。
hol 2012年

那样就好。当我注意到这个模糊的定义时,我只需要评论“功能测试:从功能的角度出发,对业务需求进行全面而全面的测试”。
汤姆·斯蒂克

哈哈,是的,现在我明白了。好的,这是您可以撰写整本书的内容。我不想在我写这篇文章的时候就过多介绍它。
hol

8
  1. 听众。功能测试是为了确保生产该软件的团队成员能够按预期进行操作。验收测试是为了确保消费者能够满足他们的需求。

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

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


2

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

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


1

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

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

用户接受验收测试。理想情况下,用户会说出他们想要测试的内容,但实际上,由于用户没有投入足够的时间,因此很可能是功能测试的落日。请注意,这种观点来自我与其他用户组打交道的业务用户,例如,航空和其他对安全至关重要的用户可能没有这种区别,


验收测试将确定系统是否满足给定用例或所有可想象的用例的验收标准。通常由专家用户执行,以确定系统是否可接受。在航空领域,试飞员是一名飞行员,他通过进行特定的操作来测试新飞机。顶级飞行员,导航员和工程师进行飞行测试,并在测试任务结束时提供评估和认证数据。
jjpcondor 2014年

1

验收测试

...是在交付系统之前对系统(例如软件,大量制造的机械零件或一批化学产品)执行的黑匣子测试。

尽管这样说:

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

带有“需要引用”标记。

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

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

因此,从这个定义来看,它们几乎是同一件事。

根据我的经验,验收测试通常是功能测试的一部分,由客户在正式的签核过程中使用,而功能/系统测试将由开发人员/质量保证部门进行。


0

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

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

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

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


0

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

  • 功能测试: “此按钮不起作用”
  • 非功能测试: “此页面有效,但速度太慢”

对于功能测试还是非功能测试(它们的子类型),请参阅我对这个SO问题的回答


-1

他们是一样的东西。

在部署或交付系统之前,应在与实际生产/部署环境尽可能相同的完整系统上执行验收测试。

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


1
尽管使用Selenium和Watin(或Watir)等进行的自动化是非常有价值的第一道防线,但没有什么能比训练有素的QA人员更胜一筹了,他们致力于“破坏系统。自动化很棒,但是随着AJAX和javascript框架的现代化发展更改页面上的输出以自动执行所有操作是脚本更新的噩梦,它们不是同一件事
Tom Stickel 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.