验证和确认是测试过程的一部分吗?


9

基于许多资​​料,我不认为测试的简单定义是找到尽可能多的错误-我们进行测试以确保其有效或无效。例如followint是测试ISTQB的目标:

  1. 确定(软件产品)满足指定要求(我认为其验证)

  2. 证明(软件产品)适合目的(我认为这是验证)

  3. 检测缺陷

    我同意测试就是验证,确认和缺陷检测。那是对的吗?


1
有关测试的书首先说的是:“测试不是表明软件正常运行的过程。这是发现缺陷的过程”。而且,书带来了无数理由来定义这样的测试。因此,验证实际上是发现软件不符合要求的过程。
superM 2012年

根据定义,验证可以确保满足要求。实际上,书籍将测试定义为衡量软件质量的过程。因此,如果您要检查系统是否正在运行(正)并打算查看其是否正常工作,那么它不是在测试,因为您没有查找错误?:)在Wikipedia上:测试技术包括但不限于执行旨在发现软件错误的程序或应用程序的过程
John V

我认为,确定测试一词的范围的最佳方法是考虑测试一个假设,在这种情况下,您要测试假设中没有谬误或不正确之处,这与验证其有用性不同。或验证其适用性,这仅仅是识别其整个行为范围的一种情况,无论目的如何。
吉米·霍法

有一个“好问题”的奖金:)
安德鲁

Answers:


1

我认为您完全正确。

  1. 验证和确认是不同的东西,实际上定义得很好。尽管我不太喜欢该文档,但ISO 9000ff与质量检查高度相关,并且将“验证”定义为将产品与其要求进行比较,并将“验证”定义为检查产品是否确实满足客户/用户的需求,我们都知道这可能会有所不同。

  2. 两者都可以通过测试来完成。验证将导致测试生成表格要求。验证导致测试无法直接参考要求进行测试。我认为这通常称为探索性测试。显然,必须由真正了解用户实际需求的人员来完成,因此,实际用户进行alpha和beta测试是显而易见的选择。

  3. 从理论上讲,我猜一个人可能会争辩到前两个涵盖的内容都不是错误,因此将错误作为单独的目标来查找是没有意义的。但我认为有些事情您无法真正验证或确认。例如安全性:如何验证或验证软件系统对攻击没有危害?相反,您尝试查找漏洞。如果未能找到问题,此搜索不会验证或验证任何内容,但如果成功,它将发现错误。


问题是,许多消息来源提到验证只是静态的,而验证是动态的。它很困惑。那么什么是功能测试?我要说它的动态verificiation ..
约翰五世

1
哪些来源使用此验证和确认定义?另一方面,对于以-test结尾的任何定义,我一无所知。所以我真的不知道什么是功能测试。
詹斯·肖德

嗯,例如ISO 12207将测试限制为仅作为验证过程。
约翰五世

3

摘自Wikipedia:“ ...换句话说,验证可确保产品确实满足用户的需求,并且首先确保规格正确,而验证可确保根据要求和设计规格制造产品。 。验证确保“您建造了正确的东西”。验证确保“您建造了正确的东西”。验证确认所提供的产品将满足其预期用途。

您无法测试用户的需求,无法通过代码检查规格是否正确。因此,验证不是通过测试来完成的。

验证假设您的要求和设计正确,因此您可以通过编写代码(测试)进行测试。


我不同意-测试不仅是测试代码,还有文档测试等。顺便说一句,维基百科还说:软件测试可以说是验证和验证软件程序/应用程序/产品的过程。通过执行和调查程序,无论这是否是用户想要的。
约翰五世

其实你是对的。测试过程还包括接受测试,但我谈到了单元,集成和系统测试。如果我们从整体上考虑测试过程,那么验证和确认是通过测试完成的。
Mert Akcakaya

1

在现实世界中,测试是对符合软件要求(业务/功能/非功能)的软件进行验证和确认。这些目的是确定软件是否适合目标用途。任何不符合应用程序要求的行为都是缺陷-在确定软件是否适合目的之前,必须权衡其严重性。

低严重度缺陷可能不会阻止将软件传递到生产类型使用;高严重度缺陷可能需要产生修复程序。在现实世界中,所有软件都存在缺陷,有些是编码问题,而另一些则是由于缺少需求-可能无法测试,因为您无法测试未知需求。


1

验证和确认的定义很多。许多人甚至使用V&V标签将两个活动分组。目的是确保软件能够正确地解决问题。在这个级别上,是否要检查是否符合要求或尝试查找错误都不是必需的。

测试是多种验证和确认技术中的一种,而不是另一种方法。代码审查是另一种形式,而形式验证则是带有数学证明的另一种形式。

尽管如此,执行测试的目的应该是发现错误,而不是检查是否符合要求。

主要区别在于测试人员的想法。建立一个表明软件能够按预期工作(检查合规性)的测试用例要比建立一个表明软件失败(发现错误)的测试用例要容易得多。

优秀的测试人员热衷于破坏软件,而不是希望以安全的方式执行软件。


谢谢,但是我们也不能测试表明满足要求吗?我们确保软件可以运行(符合规格),然后尝试查找缺陷。因此,这不仅与发现错误有关。我记得有一本书说过,测试的主要目的是衡量质量,而不是寻找错误。至于您的第一点,代码审查,数学证明等也在测试中,这被称为静态。
约翰五世

与要求相反,存在缺陷或错误。工作的性质是相同的。这只是提高测试人员效率的思维方式上的差异。关于我的第一点,软件验证中使用的所有术语都有很多定义(加入团队的第一步是获取该团队中的本地方言),但是大多数人都同意测试只是动态的技术。静态测试是一种矛盾的说法,或者指的是另一种技术,它离审查不远,其中代码是在“测试者”的脑海中执行的,而不是由计算机执行的。
mouviciel 2012年

mouviciel:矛盾情绪?我不这么认为,静态测试意味着在没有执行的情况下检查可能的缺陷,这是完全可能的(需求问题,设计缺陷..)。验证需求和检查bug并不相同:您应该测试一个字段可以容纳int32值。多数民众赞成在测试它的工作原理。然后,你可以尝试进入更高的价值,即对错误的测试..
约翰五世

1

让我们从实际的角度来看。对于测试,您需要定义测试用例。通常,您要根据指定的需求定义测试用例,并且这些测试用例应涵盖“欢乐时光”用例以及“边缘用例”-尤其是后者,其定义通常旨在破坏软件。当您的某些测试失败时,它们会显示错误/缺陷。如果您对每个需求都有合理数量的测试用例,并且所有测试都通过了,则您可能还没有完全证明所有需求都得到满足,但是您提高了实现的可能性,因此进行了一些验证。

因此对于问题的那一部分,发现错误和验证可能只是同一过程的两个方面:

  • 测试失败:发现缺陷

  • 测试通过:已完成验证(至少在某种程度上,如果您提供了足够且正确的测试)

关于验证:正如@Mert所指出的,验证可以通过验收测试来完成,而不能通过其他形式的测试来完成。因此,测试通常不会引起某些潜在用户的验证,只有当做验收测试时才进行验证。



0

软件测试与质量检查不同。你说对了。整个软件测试本身包括许多阶段(烟熏,单元,回归,集成,用户接受等)。

因此,确保软件能够按照要求工作是QA的目标(质量保证专家,又名几年前简称为测试人员)。但是,这不仅仅是测试。质量检查确保适当的过程集可以执行相关产品的质量检查,或者至少已进入项目的设计阶段。

因此,理想情况下,您希望QA能够根据一组要求验证应用程序,而不仅仅是尝试通过破坏软件和发现缺陷来对其进行测试。


质量检查不仅仅是测试。与开发过程的质量QA交易..
约翰五世

质量检查人员根据一组要求验证应用程序。
尤苏波夫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.