CMMi、ISO、IEEE 中的验证和验证。我应该参考什么?

软件测试 文件 标准
2022-01-22 00:07:03

在写我的硕士论文时,今天我发现了这个网站(我之前问过程序员)所以我希望你不会介意我在这里问以获得更多更好的答案。问题是我必须将测试分为验证或验证,但标准差异很大:

  1. ISO/IEC 12207:所有测试都是验证(单元、集成......只是全部)
  2. CMMI:验证方法有测试、分析。验证也是如此。
  3. IEEE 1012:验证和验证被称为所有活动的 V&V,因此没有区别。

IEEE 指出:

验证过程提供支持证据,证明软件满足分配给软件的系统要求,并解决正确的问题(例如,正确建模物理定律或实施系统业务规则)。

恕我直言,这与 ISO 完全不同,后者将测试列为活动,以确保满足预期用途的要求。

CMMi 验证:负载、压力、功能……测试(正是 ISO 提到的验证)

当问著名的问题时,“我做对了吗”和“我做对了东西”,从测试的角度来看是没有帮助的。
例如,单元测试或测试特定需求如何成为验证?(根据 ISO)我会说我正在根据规范验证特定要求,但 ISO 认为所有测试都是一种验证。我强调这是关于理论的,我知道在实践中我们并不关心它的验证或验证,但我需要提出一些统一的观点。

4个回答

“测试”、“验证”和“验证”只是人们对不同类型实践的附加词。其中一些实践更多地关注“我做对了吗”;其他人更关注“我是否构建了正确的东西”。您可以根据您要完成的任务以不同的方式命名和分组这些实践。

如果你想清楚你使用的术语,就像你在学术著作中所做的那样,你应该决定你想使用的概念,然后在这些概念上附加文字。只要它们是可辩护的,特定的词就不重要了。例如,我不会使用“设计”这个词来统称为单元测试和集成测试,因为人们习惯于“设计”的含义非常不同,但我可能会称这两个为“验证”,只要我事先定义了这个词。

冒着重新散列先前线程的风险,验证(根据 ISO12207)确保遵循正确的流程和标准,并且所有需求在生命周期中都是可追溯的,而不是对实际需求的测试。测试是一项验证活动——您正在根据要求验证代码。

归根结底,您的客户(通过合同或他们的规范)或您的内部标准将定义您遵循的标准。

或者就你的论文而言,你决定并证明它的合理性。

这是标准的伟大之处 - 有很多可供选择!

顺便说一句,IEEE 已经完全采用了 ISO/IEC 12207,并且他们正在将其标准与该过程模型(英国的 BSI 也是如此)协调一致,因此我预计 IEEE 1012 的下一次迭代将更具洞察力。


关于 V 和 V 之间的线,以及测试适合的位置。ISO12207 7.2.5.3.2 是必需的段落,它详细说明(并使用该词)测试- 有效(在 ISO12207 内)测试与验证同义

我是否正确构建了它(验证),我们是否构建了正确的东西(验证)是向我们的新(和成熟)工程师解释差异的最佳方式。

请记住,验证发生在整个生命周期中。验收测试(验证)也有助于产品的验证。一旦产品被接受或购买为满足客户并根据商定的测试程序衍生要求,那么产品所有权就成为客户的所有权。

在我们的业务中,客户然后在车队装配之前对系统执行操作测试和评估 (OT&E)....此时这纯粹是验证,看看它是否能完成这项工作。

验证和验证的简单区别是:验证是检查“我们是否构建了正确的东西”或检查预期的结果。验证贯穿产品生命周期的不同阶段;从需求到设计再到CAT(客户验收测试)

验证是验证的验证。查明生命周期中遵循的流程是否出现问题。