功能安全的代码覆盖率
利用基于 TRACE32® 的代码覆盖加快安全认证速度并提高代码质量
代码覆盖率测量是认证的一项要求,用于评估测试用例的完整性,并证明不存在意外功能。不过,测量也是为了提高代码质量,例如排除从未执行过的死代码。
在使用传统测试工具时,集成测试和系统测试往往会因必要的代码检测而产生大量的时间和人员支出,而使用我们的 TRACE32® 工具进行基于跟踪的代码覆盖率测量,则可大幅减少这些支出。
代码工具要么完全没有必要,要么只是在非常有限的范围内。你需要更少的构建和测试运行来进行完整的代码覆盖率测量,这在实际例子中可以节省50%的总工作量。如果考虑到这些测试通常需要数天或数周才能完成,您就能估算出使用TRACE32®进行代码覆盖率测量所带来的时间和成本效益。
受益于支持的数百个架构 和编译器
在集成和系统测试期间更快地获取测试结果
测量从目标代码覆盖率到 MC/DC 的所有指标
实时测量代码覆盖率
使用可鉴定的模拟器进行单元测试
与第三方工具轻松集成
根据要求选择最佳数据采集模式
Depending on which architectures you use, which trace interfaces your chip implements - off-chip trace, on-chip trace or none at all - and which code coverage metrics you want to cover, you can select one of four different modes for data acquisition. These cover all conceivable use cases from maximum compatibility to maximum performance.
使用实时跟踪捕捉功能,最大限度地减少时间消耗
Our TRACE32® can process the trace data during recording in the operation mode RTS (Real Time Profiling). The biggest advantage of RTS mode code coverage is that all necessary steps run in parallel and large amounts of trace data can be processed quickly, therefore your code coverage measurement results become available immediately. RTS is currently supported for Arm® ETMv3/v4 and PTM, Nexus for MPC5xxx/QorIQ, and AURIX MCDS trace prococols. RTS requires one of our TRACE32® trace extensions such as PowerTrace, CombiProbe or µTrace. The raw trace data are streamed to the host computer and decoded to reconstruct the program flow before the program flow is added to the code coverage system and the code coverage results are updated. All these steps are performed concurrently to minimize your time expenditure.


所有代码覆盖指标和所有指令集的流跟踪数据架构
我们的 TRACE32® 工具支持处理跟踪数据,同时记录所有架构 的运行模式 SPY。SPY 模式的处理速度略低于 RTS 模式,但支持所有代码覆盖指标和所有芯片 架构 。对于 SPY 模式的代码覆盖率,跟踪流会定期暂停,以便解码原始跟踪数据并进行代码覆盖率测量。您的代码覆盖率测量结果很快就会可用。
Benefit from Incremental Mode on Chips Providing On-Chip-Trace Only
Incremental code coverage is supported by all processor architectures which provide information about program flow. It also supports all code coverage metrics. It is a reliable fallback method for chips implementing on-chip trace only and can be used in the vast majority of situations.
增量代码覆盖的一个特点是逐一执行各个步骤。程序运行时记录跟踪信息。程序停止后,原始跟踪数据被上传到主机并解码,以重建完整的程序流程。之后,程序流程最终会被添加到代码覆盖系统中,代码覆盖结果也会随之更新。

即使在没有跟踪接口的芯片 上也能收集跟踪数据
我们的特殊数据收集模式 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®代码覆盖率测量结果导入三种广泛传播的著名第三方工具。