功能安全的代码覆盖范围

概述

利用基于 TRACE32® 的代码覆盖加快安全认证速度并提高代码质量

代码覆盖率测量是认证的一项要求,用于评估测试用例的完整性,并证明不存在意外功能。不过,测量也是为了提高代码质量,例如排除从未执行过的死代码。

在使用传统测试工具时,集成测试和系统测试往往会因必要的代码检测而耗费大量时间和人力,而使用我们的 TRACE32® 工具进行基于跟踪的代码覆盖率测量,则可大幅减少这种耗费。

代码工具要么完全没有必要,要么只是在非常有限的范围内。你需要更少的构建和测试运行来进行完整的代码覆盖率测量,在实际例子中,这可以节省多达50%的总工作量。如果考虑到这些测试通常需要数天或数周才能完成,您就能估算出使用TRACE32®进行代码覆盖率测量所带来的时间和成本效益。

概述

利用基于 TRACE32® 的代码覆盖加快安全认证速度并提高代码质量

代码覆盖率测量是认证的一项要求,用于评估测试用例的完整性,并证明不存在意外功能。不过,测量也是为了提高代码质量,例如排除从未执行过的死代码。

在使用传统测试工具时,集成测试和系统测试往往会因必要的代码检测而产生大量的时间和人员支出,而使用我们的 TRACE32® 工具进行基于跟踪的代码覆盖率测量,则可大幅减少这些支出。

代码工具要么完全没有必要,要么只是在非常有限的范围内。你需要更少的构建和测试运行来进行完整的代码覆盖率测量,这在实际例子中可以节省50%的总工作量。如果考虑到这些测试通常需要数天或数周才能完成,您就能估算出使用TRACE32®进行代码覆盖率测量所带来的时间和成本效益。

受益于支持的数百个架构 和编译器

在集成和系统测试期间更快地获取测试结果

测量从目标代码覆盖率到 MC/DC 的所有指标

实时测量代码覆盖率

使用可鉴定的模拟器进行单元测试

与第三方工具轻松集成

数据收集

根据要求选择最佳数据采集模式

根据您使用的架构 、您的芯片 实现的跟踪接口(离线芯片 跟踪、在线芯片 跟踪或完全不跟踪)以及您希望覆盖的代码覆盖指标,您可以从四种不同的数据采集模式中选择一种。这些模式涵盖了从最大兼容性到最高性能的所有可想象的使用情况。

使用实时跟踪捕捉功能,最大限度地减少时间消耗

我们的 TRACE32® 可以在运行模式 RTS(实时剖析)下处理记录过程中的跟踪数据。RTS 模式代码覆盖的最大优势在于所有必要步骤都是并行运行的,可以快速处理大量跟踪数据,因此可以立即获得代码覆盖测量结果。 RTS 目前支持 Arm® ETMv3/v4 和 PTM、Nexus for MPC5xxx/QorIQ 以及 AURIX MCDS 跟踪协议。RTS 需要我们的 TRACE32® 跟踪扩展之一,如 PowerTrace、CombiProbe 或 µTrace,并支持代码覆盖率指标语句覆盖率、函数覆盖率和调用覆盖率。原始跟踪数据被流式传输到主机并解码以重建程序流程,然后将程序流程添加到代码覆盖系统并更新代码覆盖结果。所有这些步骤同时进行,以最大限度地减少时间消耗。

所有代码覆盖指标和所有指令集的流跟踪数据架构

我们的 TRACE32® 工具支持处理跟踪数据,同时记录所有架构 的运行模式 SPY。SPY 模式的处理速度略低于 RTS 模式,但支持所有代码覆盖指标和所有芯片 架构 。对于 SPY 模式的代码覆盖率,跟踪流会定期暂停,以便解码原始跟踪数据并进行代码覆盖率测量。您的代码覆盖率测量结果很快就会可用。

受益于芯片 上的增量模式,仅提供芯片-Trace

所有提供程序流程信息的处理器架构 都支持增量代码覆盖率。它还支持所有代码覆盖指标。它是一种可靠的后备方法,适用于芯片 ,只在芯片 跟踪,可用于绝大多数情况。

增量代码覆盖的一个特点是逐一执行各个步骤。程序运行时记录跟踪信息。程序停止后,原始跟踪数据被上传到主机并解码,以重建完整的程序流程。之后,程序流程最终会被添加到代码覆盖系统中,代码覆盖结果也会随之更新。

受益于芯片 上的增量模式,仅提供芯片-Trace

所有提供程序流程信息的处理器架构 都支持增量代码覆盖率。它还支持所有代码覆盖指标。它是芯片 仅实施芯片-trace 的可靠后备方法,可用于绝大多数情况。

增量代码覆盖的一个特点是逐一执行各个步骤。程序运行时记录跟踪信息。程序停止后,原始跟踪数据被上传到主机并解码,以重建完整的程序流程。之后,程序流程最终被添加到代码覆盖系统中,并更新代码覆盖结果。

即使在没有跟踪接口的芯片 上也能收集跟踪数据

我们的特殊数据收集模式 ART(高级寄存器跟踪)通过单步操作在汇编器级 级的单步操作。每一步之后,CPU 寄存器的内容都会上载到我们的 TRACE32®PowerView 软件中,并以类似于程序流程跟踪的方式进行存储。这种伪跟踪数据可用于代码覆盖。您可以将 ART 记录的跟踪数据用于所有代码覆盖率指标。

ART 允许在没有任何跟踪接口的芯片 上收集数据,但对目标的实时性能有很大影响。为了提高性能,我们建议使用我们的 TRACE32® 指令集Simulator (ISS),它也支持所有代码覆盖指标。ISS 模拟指令集并提供总线跟踪,因此代码覆盖很容易执行。

评估

覆盖所有覆盖指标

测试覆盖率和测试进度可以通过代码覆盖率测量来量化确定。根据嵌入式系统的关键性和特定应用的功能安全标准,您必须应用不同级别的覆盖率,通常称为代码覆盖率指标。从本质上讲,代码覆盖率的各个级别分配如下:功能级别、指令级别、分支级别、路径级别和条件级别。我们的 TRACE32® 跟踪工具所支持的不同级别覆盖率可满足 ISO 26262(汽车)、IEC 62304(医疗设备)、DO 178C(航空电子设备)、EN 50128(铁路)和 IEC 61508(工业项目总括标准)标准中规定的所有要求。

目标代码覆盖率

目标代码覆盖率衡量的是每条目标代码指令是否至少执行过一次,以及所有条件指令(如条件分支)是否都评估为 "真 "或 "假"。

功能覆盖范围

功能覆盖率衡量的是程序的所有功能是否都至少被调用过一次。在测试过程中,如果程序的每个功能都被调用过,就达到了完全的功能覆盖率。100% 的调用覆盖率并不意味着 100% 的功能覆盖率。

呼叫覆盖范围

调用覆盖率是指在程序执行过程中,函数被调用的次数占程序中存在的调用次数的百分比。100% 的函数覆盖率并不意味着 100% 的调用覆盖率。

报表范围

语句覆盖率衡量的是已测试语句占所有语句的比例有多高。因此,在这一水平上,有可能发现死代码或尚未测试的语句。

决策覆盖率/分支覆盖率

在这一覆盖级别,每个判定都必须至少作为 "真 "和 "假 "测试一次。对于普通的 "if 语句",这相当于分支覆盖,每个分支都必须被执行(分支覆盖)。要实现判定或分支覆盖,还必须执行没有语句的分支。对于没有 else 块的 "if 语句",仍必须测试相关判定不正确的情况。完整的语句覆盖率源于(完整的)决策覆盖率,从这个意义上说,它是更强的衡量标准。

条件覆盖范围

除了决策覆盖的要求外,条件覆盖还详细考虑了复合决策。对于由多个原子条件(通过布尔运算符组成)组成的判定,必须对每个条件分别进行 "真 "和 "假 "测试。条件覆盖基本上只与理解多条件覆盖,特别是修正条件/判定覆盖(MC/DC)相关。

修改后的条件/决定保险(MC/DC)

使用多条件覆盖时,必须检查复合决策中所有可能的真/假组合。如果一个决策中包含多个条件,通常需要大量的测试用例,这是不现实的,因为测试用例的数量会随着决策中条件数量的增加而呈指数增长。因此,任何安全标准都不要求多条件覆盖,而是要求修正条件/决策覆盖(MC/DC)。有了它,测试用例的数量只会随着条件数量的增加而线性增加,但同时也更难理解,也更难确定。

典型汽车应用案例

符合 ISO 26262 的汽车安全完整性等级 (ASIL) 要求





ISO 26262 引入了汽车安全完整性等级 (ASIL),用于机动车辆中与安全相关的电气/电子系统。该标准还建议在功能和架构 级别使用代码覆盖率测量。在右侧的表格中,您可以找到软件单元级的结构覆盖率指标(ISO 26262-6:2018,表 9)以及软件架构级的结构覆盖率指标(ISO 26262-6:2018,表 12)。

标有 "++"的栏目表示特别建议采取的措施。如果出于特殊原因,决定不遵守这一要求,也不采取所述措施,则必须详细解释作出这一决定的原因及其影响。建议采取的措施会以简单的 "+"号标出,并表示相应的措施会提高质量或安全性。

由于您可以使用我们的 TRACE32® 跟踪工具测量右侧表格中列出的所有指标,因此您可以完全满足最高级别 ASIL-D 的代码覆盖率相关要求。

代码覆盖率分析

在PowerView 及更多功能中分析您的结果

我们为您提供多种代码覆盖率测量报告选项。这包括在我们的PowerView 软件中显示,导出为多种人类可读和机器可读格式,以及我们的 TRACE32® 代码覆盖率合并和报告工具,您可以使用该工具合并来自不同测试运行和不同目标平台的结果。

显示代码覆盖率测量值PowerView

在PowerView 窗口中,您可以立即显示所有功能或模块的覆盖结果,以了解测量指标。

用 XML 生成人类可读的报告

借助我们的 TRACE32® 报告工具,您可以在自己选择的互联网浏览器中显示代码覆盖率测量结果。

生成 CSV、JSON 或 VectorCAST CBA 格式的机器可读报告

测试运行结束后,您可以将存储在TRACE32 内部代码覆盖系统中的所有源代码度量结果导出到文件中。支持的源代码指标包括语句、决策和条件覆盖率、MC/DC 以及调用和函数覆盖率。您可以选择 CSV 或 JSON(JavaScript Object Notation,JavaScript 对象符号)开放文件格式和专有的 CBA 格式,以便在 VectorCAST 中进一步处理数据。

使用 TRACE32® 代码覆盖合并和报告工具生成机器可读报告

我们的TRACE32® 代码覆盖率合并和报告工具 使您能够合并多个代码覆盖率测试运行的结果,这些测试运行使用不同的 ELF,基于不同的测试用例套件,或使用不同的目标配置。该工具兼容 Windows 和 Linux 操作系统,使用导出的 JSON 文件来合并来自不同测试运行的 TRACE32® 代码覆盖率结果。与此同时,这些结果还被转化为可视化的 HTML 报告,用于分析和文档编制。开放和可扩展的 JSON 格式允许许多第三方工具处理合并后的代码覆盖率测量结果。

功能安全认证

使用我们的工具鉴定支持工具包,省时省力

安全关键型嵌入式系统的鉴定还包括所使用的开发工具及其与项目环境的集成。我们经过认证的工具鉴定支持包 (TQSK) 为您提供鉴定我们的 TRACE32® 解决方案在航空电子、医疗、汽车、铁路或一般工业项目中的使用所需的一切,并缩短您的产品上市时间,减少您的工作量和成本。

除了许多其他工具外,我们的 TQSK 还包括测试套件--覆盖,它为语句和分支覆盖、MC/DC、条件、函数和调用覆盖提供测试用例。它支持 C 语言的源代码覆盖、可执行目标代码的汇编级覆盖、增量以及 RTS 和 SPY 代码覆盖模式。


合作伙伴

与第三方工具轻松集成

在使用传统测试工具时,集成测试和系统测试通常会因必要的代码工具而产生大量的时间和人员支出,而使用我们的 TRACE32® 工具进行基于跟踪的代码覆盖率测量则可大幅减少这些支出。尽管如此,传统测试工具及其代码覆盖率测量功能(包括复杂的测试用例和需求管理)仍能发挥其优势,尤其是在单元测试中。

传统测试工具和TRACE32®的结合为您提供了高效省时的代码覆盖率测量的最佳客户体验。目前,您可以将TRACE32®代码覆盖率测量结果导入三种广泛传播的著名第三方工具。

  • LDRA 工具套件

    LDRA 工具套件提供需求可追溯性、测试管理、编码标准合规性、代码质量审查、代码覆盖率分析、数据流和控制流分析、单元/集成/目标测试,以按照严格的行业标准获得认证。

    了解更多
  • RapiCover/RapiCoverZero

    RapiCover 和 RapiCoverZero 都支持关键软件的目标结构覆盖分析。通过高达 MC/DC 的自动覆盖率报告、支持多达 1000 种条件的测试决策以及鉴定支持,RVS 解决方案可确保您从测试中获得最大收益。

    了解更多
  • VectorCAST

    VectorCAST 嵌入式软件测试平台是一个产品系列,可在整个软件开发生命周期内自动进行测试活动。VectorCAST 产品系列广泛应用于航空电子、医疗设备、汽车、工业控制、铁路和金融行业。

    了解更多

有什么问题吗?

凭借 40 多年的行业领先地位,我们的专业工程师随时为您提供帮助。如果您对我们的产品或哪种配置最适合您需要咨询,请联系我们的销售工程师。如果您需要劳特巴赫系统的使用帮助,请联系我们的工程支持团队。