需求核实过程是确保软件满足特定的规格要求,而验证则侧重于软件是否达到了最终用户的期望和需求。
如果你正在开发一种医疗产品,这种区别也可能在法规和标准中有所体现,例如:
820.30(f):设计验证应确认设计的成果符合设计的输入要求。
820.30(g):设计验证应确保设备与定义的用户需求和预期用途相符。
你可能听过“验证”和“确认”这两个词被混淆使用,没错,这个现象非常普遍。然而,这在测试过程中可能会引发混淆,如果你在严格受规管的行业中开发产品,关键是产品要按照预期进行,且要避免产生昂贵的错误。
对于开发者来说,不清晰和不完整的需求可能会让他们感到失望。如果开发者不能在项目开始时就获得必要的信息,他们就必须自行进行解读,而这些解读并不总是正确的。这就导致了错误风险增高,且在产品开发周期进展中需要投入更多的资源来解决问题。
理解验证和确认的区别,以及在产品开发过程中如何各自使用它们,可以帮助降低成本、提高效率,并交付出更符合用户需求的产品。
如果你过去将“验证”和“确认”这两个概念混为一谈,那么最重要的一点是要注意它们的顺序。在软件开发过程中,我们首先进行的是验证,然后才是确认。那么,每一个步骤中都包含什么内容呢?首先,我们来深入了解一下“验证”。
验证测试是为了确保程序按照明确规定的需求进行构建。在验证过程中,我们会进行一系列的活动,例如对代码进行审查、对整个程序进行逐步演练以及进行详细的检查等。
在验证阶段,你可能会发现一些被遗漏的需求或者是无效的需求。识别这些问题可以帮助你尽早地减少重做工作的风险以及因工作量超出预期而导致的额外成本。相比于在后期需要识别并修正大量代码,尽早发现并修复小错误要更为有效。
这里有一个例子,假设你正在驾驶前往一个新的目的地。你可能会将目的地输入到你的GPS中,然后GPS会为你提供前往那个地方的路线以及需要走的高速公路出口编号。如果你需要找的是第10个出口,而你刚刚经过了第1个出口,你会立刻知道你还需要再经过9个出口。这个过程就像是在进行验证,你在行驶过程中使用GPS对比路线,确认你的行驶方向是否正确。
另外一个例子是在电子表格中输入公式。当你输入了几行数据之后,你可能会去检查一下公式是否正确无误,以及是否按照预期工作。这个过程就像是在进行验证,它允许你在深入产品开发过程之前进行快速检查,确保你的工作是在正确的方向上进行的。
对”需求确认”这个问题的解答可能会因你所在的行业以及正在被验证的需求类型而有所差异。
总的来说,当你已经明确了要验证的需求类型,并完成了相应的验证工作后,就应该进行确认测试了。确认测试能确认需求的准确性,确保这些需求实现了业务目标,满足了所有相关利益方的需求,并且被开发者清楚地理解。确认是找出遗漏的需求,并确保需求具备一系列重要特性的关键步骤。
软件确认涉及以下内容:
确认并不关注你为达到目的地所走过的路,而是关注你是否达到了目标。例如,回顾一下上述驾车并根据出口号等地标导航的例子。假设目标是到达一条徒步路线。当你到达时,可能会提出一些问题。
远足路径是否符合预期? 我是否可以看到明显的路径和路径起点标志? 这个地方是否满足我的期望? 确认关注的就是这类问题。它并不在意你是如何到达那里的,而是在意你是否到达了正确的地方。
如果你正在设计一个电子表格,正如我们之前讨论的,你在验证过程中会检查公式是否工作正常。在确认过程中,你在确认最终的产品(即电子表格)是否满足用户的需求。
例如,使用电子表格的例子,我们可能确定我们要使用电子表格来减少完成“x”任务的时间或减少我们在执行“y”任务时出现的错误,因此我们设计了一个具有许多功能的电子表格,这些功能是根据我们的需求定义的。验证是询问,电子表格是否按照需求正常工作(“我们是否正确地构建了它”);确认是询问,电子表格是否实现了与x和y相关的目标(“我们是否构建了正确的东西”)。
即使一个产品完全通过了验证,它仍然可能无法满足用户的需求,即未通过确认。
例如,一个电子表格在验证阶段可能完全按照规定的需求制作,但在实际使用中,用户可能发现它并不能帮助他们提高效率或减少错误。这就意味着,这个电子表格在验证阶段是成功的,但在确认阶段失败了。
这是因为,虽然验证和确认都关注产品是否能满足用户需求,但两者的侧重点不同。验证主要关注产品是否按照规定的需求进行建造,而确认则关注产品在实际使用中是否能满足用户的实际需求和期望。因此,理解验证和确认的区别,并在产品开发过程中正确地应用它们,对于开发出既符合规定需求又能满足用户实际需求的产品是非常重要的。
当你在考虑验证和确认时,你可能对这两者之间的区别感到不确定。哪些活动属于确认范畴,哪些属于验证,你应该在何时执行每个活动?
假设你正在努力开发一个产品,此刻该进行验证测试了,因为验证总是在确认之前进行。在这个过程中,你会检查文档、设计、代码和程序,以确保软件按照需求被正确构建。目标是确保应用程序或设计的质量。你可能会执行如审查、演练或检查等活动。例如,在医疗设备行业,验证通常在产品的“设计等效”配置阶段进行。而确认通常在产品的“生产等效”阶段进行,这是根据820.30(g)的规定。
现在,是时候转向确认了。在这个过程中,你正在测试和确认产品是否满足客户的需求。这个过程中可能包括的任务有单元测试、集成测试或用户测试。正如我们在文章的开头所述,验证过程确保软件满足规格。而确认过程则关注软件是否满足最终用户的期望和需求。
对系统工程师来说,能够追踪数据类型之间的关系是至关重要的。然而,当需求、规格和验证文件都存在多个层次,且每个层次都有各自的利益相关者在执行各种任务时,可能会出现问题。
合适的软件解决方案可以简化复杂的情况,并使你能够追踪数据。你可以分析潜在变化的”谁”、”什么”、”在哪”、”为什么”,并确保重要数据不会被忽视。寻找一个能做到以下几点的软件解决方案:
一个软件解决方案是一种关键工具,可以帮助你管理验证和确认过程,并确保在整个系统生命周期中,每一项工程活动都相互联系。在一个地方捕获所有的沟通内容,并将所有的利益相关者集合在一起,实时全面地了解团队正在构建什么以及为什么构建,这是非常关键的。
如果测试阶段没有得到妥善的规划,它可能会成为产品开发中最昂贵的部分。因此,集成验证和确认的过程是至关重要的,以确保节约成本并保证产品的高质量。如果最后产品未能达到最初设定的目标,那么投入的时间、金钱和努力都将被浪费。
幸运的是,当团队成员和数据能够与产品开发的活动和交付结果保持同步时,公司可以更快地将产品推向市场。利用创新的需求管理软件工具,可以轻松地缩短从创意阶段到价值创造和性能提升的时间。
需求管理指南:
需求管理: 需求管理主要内容 | 需求管理的重要性 | 采用敏捷方法进行需求管理 | 如何克服需求管理的 5 大挑战 | 更多
需求编写: 功能需求的示例和模板 | 采用 EARS 方法来改进需求工程 | 如何编写一份优秀的产品需求文档(PRD) | 功能性需求与非功能性需求的区别 | 有效需求的特征 | 更多
需求收集和管理流程: 需求工程概述 | 产品团队的需求分析指南 | 敏捷产品团队的 11 种需求收集技巧 | 定义和实施需求基线 | 更多 需求的可追溯性: 什么是需求可追溯性 | 可追溯性在现代产品和系统开发中的关键作用 | 如何创建和使用需求追溯矩阵 | 更多
需求确认和验证: 产品团队的需求验证和确认 | 更多
做好需求分析的4大关键认知 | 盘点国内9款热门需求管理系统 | 构建产品路线图的方法与工具 | 做好需求优先级判断的7种主流模型 | 采用敏捷方法进行需求管理 | 更多