使用简单示例进行软件验证和确认
扫描二维码
随时随地手机看文章
验证和确认是两个不同的过程,通常用于软件开发、工程和制造等各个领域。它们都用于确保软件满足其预期用途,但它们实现的方式不同。
确认
验证是检查软件是否符合其规格的过程。它回答了以下问题:“我们是否正确构建了产品?”这意味着根据项目开始时定义的要求检查软件是否按预期运行。验证通常通过静态测试完成,这意味着软件实际上并未执行。相反,代码经过审查、检查或遍历以确保其符合规格。
验证
验证是检查软件是否满足用户需求的过程。它回答了以下问题:“我们是否在构建正确的产品?”这意味着检查软件是否真正有用并满足使用者的期望。验证通常通过动态测试完成,这意味着软件实际上是用真实数据执行和测试的。
以下是一些典型的验证和确认示例:
· 验证:检查软件程序的代码,以确保其遵循正确的语法,并且所有功能均正确实现
· 验证:使用真实数据测试软件程序,以确保其产生正确的结果
· 验证:审查软件系统的设计文档,以确保其完整性和准确性
· 验证:进行用户验收测试 (UAT),以确保软件系统满足用户的需求
何时使用
传统上,验证应在软件开发过程的早期进行,而确认应在后期进行。这是因为验证有助于及早发现和修复错误,从长远来看可以节省时间和金钱。确认也很重要,但它可以在软件基本完成后进行,因为它涉及实际测试和反馈。
另一种方法是尽早开始验证和确认并进行迭代。只要有可能,就可以在小规模、增量式验证步骤之后进行验证。验证和确认之间的这种迭代可以在整个开发阶段使用。这种方法背后的原因是,验证和确认都可能有助于尽早发现和修复错误。
天气预报应用程序
假设有一组软件工程师正在开发一款天气预报应用。他们有一个规范,其中规定:“应用应准确显示当前温度和未来 5 天的天气预报。”在测试阶段,他们会一丝不苟地审查代码、检查算法,并确保应用确实按照他们的规范正确显示温度和预报数据。如果一切都符合规范,则应用通过验证,因为它符合指定的标准。
现在,让我们将焦点转移到这款天气应用的用户身上。他们下载应用、开始使用并提供反馈。一些用户报告说,虽然温度和预报准确,但他们发现用户界面混乱且难以操作。其他人则建议该应用应提供更详细的每小时预报。这些反馈与用户体验和用户满意度有关,而不是具体的技术规格。
验证可确认应用满足与温度和预报准确性相关的技术要求,但验证会发现用户界面和用户需求方面的问题。应用可能会通过验证,但验证失败,因为它不能完全满足用户的真实需求和期望。这凸显出验证侧重于产品是否满足用户的实际需求和期望,而这些需求和期望可能并不总是与初始技术规格相符。
社交媒体应用程序
假设您正在开发一款新的社交媒体应用。验证过程将涉及确保该应用满足指定的要求,例如创建和分享帖子、发送消息和添加好友的能力。这可以通过审查应用的代码、测试其功能并将其与需求文档进行比较来完成。
验证过程将涉及确保应用满足用户的需求。这可以通过进行用户访谈、调查和可用性测试来完成。例如,您可以询问用户他们希望如何分享帖子,或者他们希望在应用中添加哪些功能。
在这个例子中,验证将确保应用程序在技术上是合理的,而确认将确保它是用户友好的并且满足用户的需求。
在线支付处理应用程序
一个软件工程师团队正在开发一款在线支付处理应用。为了进行验证,他们将验证处理付款、计算交易费用和处理货币兑换的代码是否已根据应用的设计规范正确实施。他们还将通过验证加密协议、访问控制和身份验证机制是否正确集成,确保应用符合行业安全标准,如支付卡行业数据安全标准 (PCI DSS)。他们还将确认用户界面是否按预期运行,包括验证支付表单是否收集必要信息以及错误消息是否正确显示。
为了验证在线支付处理软件,他们会将其用于实际支付交易。一种情况是处理真实的支付交易,以确认该软件可以无错误地处理各种类型的支付,包括信用卡、数字钱包和国际交易。另一种情况是评估用户体验,检查用户是否可以轻松浏览应用程序、付款并无问题地收到确认。
使用 fMRI 预测大脑活动
开发了一款神经信息学软件应用程序,用于根据功能性磁共振成像 (fMRI) 数据预测大脑活动。验证将验证用于预处理 fMRI 数据的算法(例如噪声消除和运动校正)是否正确转换为代码。您还将确保用户界面按规定运行,并且数据输入和输出格式符合定义的标准,例如脑成像数据结构 (BIDS)。
验证会将软件生成的预测大脑活动模式与 fMRI 扫描中观察到的实际大脑活动进行比较。此外,您还可以将软件的预测与使用既定方法或地面实况数据获得的结果进行比较,以评估其准确性。在这种情况下,验证可确保软件运行时没有内部错误,如已验证的一样。它还确保软件可靠而准确地执行其基于 fMRI 数据预测大脑活动的主要功能。此步骤有助于确定该软件是否可以用于科学或临床目的。
预测 RNA 分子的二级结构
假设您是一位生物信息学家,正在开发一种预测 RNA 分子二级结构的软件工具。您的软件以 RNA 序列作为输入,并预测最可能的折叠模式。为了进行验证,您需要验证您的 RNA 二级结构预测软件是否使用科学文献中描述的算法准确计算自由能值。您将软件的实现与已发布的算法进行比较,并验证代码是否精确遵循预期的数学程序。
在这种情况下,验证可确保您的软件正确执行预期的计算并准确遵循算法逻辑。
为了验证您的 RNA 二级结构预测软件,您需要在具有已知二级结构的多种真实 RNA 序列上运行该软件。然后,您需要将软件的预测与实验数据或其他可信赖的参考工具进行比较,以检查它是否提供具有生物学意义的结果,以及其准确性是否足以达到预期目的。
会议室里的灯开关
以会议室中的灯开关为例。验证会询问照明是否符合要求。要求可能会指出“投影仪屏幕前的灯可以独立于房间中的其他灯进行控制”。如果写下了要求,而灯无法独立控制,则照明无法通过验证。这是因为实施不符合要求。
验证会询问用户是否对照明满意。这是一个比较主观的问题,用单一指标来衡量满意度并不总是那么容易。例如,即使灯光可以独立控制,如果灯光太亮或太暗,用户仍可能不满意。
总结
验证通常是一项技术性更强的活动,需要使用有关软件工件、要求和规范的知识。验证通常依赖于领域知识,即软件所针对的应用程序的知识。例如,医疗设备软件的验证需要医疗保健专业人员、临床医生和患者的知识。
需要注意的是,验证和确认并不相互排斥。事实上,它们是互补的过程。验证确保软件构建正确,而确认确保软件有用。通过结合验证和确认,我们可以更有信心我们的产品会让客户满意。