彩票走势图

嵌入式软件中的软件验证与软件确认

原创|行业资讯|编辑:郑恭琳|2020-11-02 10:35:01.413|阅读 1106 次

概述:确保嵌入式软件的正确操作,质量、安全性和保障是嵌入式系统软件活动的重要组成部分。在很大程度上,团队通过软件测试以及整个开发过程中的分析、可追溯性、文档等来完成此任务。关键安全软件具有严格的验证和确认方法,这些方法通常被编入行业标准。这就引出了一个问题:有什么区别?

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:


测试自动化如何加速软件验证和软件确认

确保嵌入式软件的正确操作,质量、安全性和保障是嵌入式系统软件活动的重要组成部分。在很大程度上,团队通过软件测试以及整个开发过程中的分析、可追溯性、文档等来完成此任务。关键安全软件具有严格的验证和确认方法,这些方法通常被编入行业标准。这就引出了一个问题:有什么区别?


验证和确认有什么区别?

软件验证和软件确认的正式定义在软件工程术语的IEEE标准术语表中定义。

验证:确定软件开发周期中给定阶段的产品是否满足上一阶段所建立的要求的过程。

确认:在软件开发过程结束时进行软件评估的过程,以确保符合软件要求。

Barry Boehm在“验证和确认软件需求和设计规范”中写了更简洁的定义:

验证:“我在正确地制造产品吗?

确认:“我在制造合适的产品吗?”

这些定义使测试的这两个关键方面之间的差异变得至关重要。


验证与确认的目标

 最终目标是制造合适的产品。不仅如此,它还可以确保产品的质量、安全性和保障,以确保它是正确的产品。

验证是确保工作正确的软件开发过程的一部分。软件验证通常包括:

  • 符合行业标准,确保过程和工件符合准则。
  • 审查、演练、检查。
  • 对开发过程中产生的工件进行静态分析和其他活动。
  • 实施架构,设计和编码标准

验证表明最终产品符合要求。这些要求包括功能性、可靠性、性能、安全性和保障。

对于物理产品,验证包括客户自己查看、尝试和测试产品。但是对于软件来说,验证包括软件的执行和运行演示。它通常涉及:

  • 代码执行以演示正确的功能。
  • 在目标环境中执行。
  • 压力、性能、渗透性和其他非功能性测试。
  • 直接并经常对客户进行验收测试。
  • 使用验证过程中的工件来说明需求对最终功能的可追溯性,尤其是对于特定的安全保障功能。

了解验证目标和验证目标之间的差异以及软件开发需要同时实现这两个方面非常重要。这些活动是软件开发工作的主要部分。组织一直希望在不损害安全性、保障或质量的情况下简化它们。


如何进行验证和确认

V模型显示了进行更正式的验证和确认的方法,该方法开发了对安全至关重要的软件。它说明了每个开发阶段的活动及其之间的关系。

V模型验证

软件开发的V模型显示每个阶段与在测试的每个阶段推断出的验证之间的关系。

V模型非常适合说明开发阶段和验证阶段之间的关系。在每个测试阶段,都会根据定义软件的阶段对软件的更完整部分进行验证。但是,V模型可能暗示瀑布式开发方法。有多种方法可以将AgileDevOpsCI/CD集成到此类产品开发中。

另一方面,验证可确保每个阶段均已完成并正确完成:

V模型验证

软件开发的V模型,显示了每个开发阶段之间的验证关系。

验证涉及审查、演练、分析、可追溯性、测试和代码覆盖率以及其他活动,以确保团队正确地构建过程和产品。例如,执行单元测试是一个验证活动,确保单元测试的可追溯性、代码覆盖率和测试进度是验证。验证的关键作用是确保构建从上一阶段到规范的交付工件,并符合公司和行业准则。


验证和确认命名混乱

组织可能会以略有不同的方式使用验证和确认。通常的做法是考虑在软件开发快要结束时进行验证,在这种活动中,团队向客户(或充当测试人员的测试人员)展示产品并证明满足所有要求。嵌入式开发仍然使用工厂验收测试(FAT)的概念。

理念上的另一个显着差异是DO-178B/C和用于开发安全关键型航空电子软件的相关标准,而其验证并不是一个众所周知的术语。实际上,如果验证完成,则验证被认为是多余的。

验证是确定软件要求正确和完整的过程。DO-178C不提供软件验证测试的指南,因为有理由认为,理论上验证正确的软件在软件集成测试期间应该没有验证问题,除非软件要求不完整或不正确。DO-178CDO-278A下的安全关键软件,美国宇航局Ames研究中心的Stephen A. Jacklin

尽管我认为Boehm的定义与术语的更常见用法相对应,但仍有一些人可能会将单元测试和集成测试视为验证步骤而非验证步骤。


安全关键软件的混合DevOps管道

在许多嵌入式软件组织中,完全敏捷过程的实施与行业安全标准所施加的限制不兼容。工件、代码、测试结果和文档通常具有必需的日期和设置的交货日期。进度基于这些可交付成果(里程碑)。

 在某些情况下,例如大型军事和国防项目,里程碑可交付成果已内置在合同和付款安排中。尽管这意味着采用瀑布式方法,但没有理由将软件开发限于此。团队可以使用混合模型在内部使用迭代和敏捷方法来实现可交付成果的里程碑。

Parasoft敏捷V模型

Parasoft敏捷V模型

之所以在验证和确认的讨论中提到这一点,是因为团队可以利用对复杂的安全关键型应用程序进行持续集成和测试的许多好处。其中的一部分是将左验证和确认移至开发过程的早期。例如,没有理由将所有单元的编码都推迟到单元测试之前,也没有理由等待静态分析来分析代码,直到准备好进行集成为止。

同样,一旦准备好进行单元测试的组件,开发人员就应尝试进行集成测试。将自动化与连续,迭代的方法相结合,可以为软件验证和验证带来巨大的好处。Parasoft的工具可解决SDLC所有阶段的测试、质量和安全性,如下所示。

V模型显示了进行更正式的验证和确认的方法,该方法开发了对安全至关重要的软件。

Parasoft V模型:验证与验证

Parasoft产品如何适合SDLC V模型的每个阶段。


加速验证

验证涉及确保开发的每个阶段都满足上一步规范的工作。在软件编码和测试方面,验证可确保该代码满足模块设计,并最终满足其上的高级设计和要求。

此外,验证可确保满足项目级别的要求。此类要求包括符合行业标准、风险管理、可追溯性和指标(代码覆盖率和合规性)。Parasoft的软件测试自动化工具通过自动化记录保存、文档编制、报告、分析和报告的许多繁琐方面来加速验证:

  • 在开发人员编写代码时,请尽早使用静态分析以确保质量和安全性。此外,静态分析可防止将来出现错误和漏洞,从而减少在检查和测试过程中遗漏的错误对下游的影响。
  • 使编码标准合规性自动化,以减少人工工作并加速代码检查。
  • 所有工件的双向可追溯性,以确保需求具有代码和测试以证明它们已得到满足。指标、测试结果和静态分析结果可追溯到组件,反之亦然。
  • 代码和测试范围,以确保所有要求均已实现,并确保按要求对实现进行了测试。
  • 报告和分析功能有助于决策制定并跟踪进度。决策需要基于从自动化流程中收集的数据。
  • 从分析和测试结果自动生成文档,以支持流程和标准合规性。
  • 通过自动化最重复和繁琐的流程,实现标准合规性自动化,以减少开销和复杂性。而且,工具可以跟踪项目历史记录,并将结果与需求、软件组件、测试和记录的偏差相关联。


加速验证

验证证明一种产品符合其要求,在这种情况下,无论是单元测试的隔离还是集成的各个阶段,都必须执行代码。这些测试套件的自动化可为嵌入式软件开发节省大量时间。 

验证需要在目标硬件上执行。优化回归测试可以充分利用可用资源、人员和硬件。Parasoft测试自动化工具通过减少对手动测试的依赖来加速验证-保持所有结果的可追溯性和代码覆盖率:

  • 所有测试套件的自动化可最大程度地减少手动测试,并减少由于硬件可用性有限而带来的测试瓶颈。
  • 基于目标和基于主机的测试执行支持所需的不同验证技术。
  • 团队开发代码后即开始进行左移测试。它利用单元测试框架,并在代码准备就绪后自动生成测试工具。随着组织流程的成熟,可以为测试驱动的开发和持续测试提供支持。
  • 通过智能测试执行来管理更改,以仅针对已更改的代码和任何受影响的依赖项集中测试。
  • 代码、测试、静态分析结果以及对公司范围的应用程序生命周期管理(ALM)工具的要求和支持之间的双向可追溯性


总结

软件验证可确保团队构建正确的软件,以满足客户和市场的需求。验证是您满足要求的证明,并且您的产品可靠、安全并且可以保护客户。

软件验证可确保团队根据贵组织自身的流程和标准以及市场所需的流程和标准来构建产品。 换句话说,验证可证明产品有效,而验证可确保您划过所有t并加点所有i

验证和验证会消耗嵌入式产品开发中的大部分资源。Parasoft的软件测试自动化套件提供了一套统一的工具,可帮助团队将测试移至开发的早期阶段,同时保持可追溯性、测试结果记录保留、代码覆盖率详细信息、报告生成和合规性文档,从而加快测试速度。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP