覆盖率、可追溯性与证据
认证机构会审查两方面内容:覆盖率数据和可追溯性记录。覆盖率数据显示哪些代码被执行以及执行到何种结构深度。可追溯性记录将每个测试结果与其设计用于验证的需求联系起来。这两者共同构成ISO 26262、DO-178C、IEC 61508和IEC 62304所要求的证据基础。
需求可追溯性
根据所有主要的功能安全标准,基于需求的测试都是强制性的。每个测试用例都必须可追溯至其旨在验证的具体需求。需求与测试结果之间的这种双向可追溯性,提供所有需求均已通过测试且不存在无目的测试的证据。
VectorCAST的需求网关(Requirements Gateway)可连接外部需求数据库,将需求导入测试环境,并允许将测试用例与这些需求建立关联。测试执行完成后,测试结果和覆盖率指标将导回需求管理工具。未被测试用例覆盖的需求以及未与任何需求建立关联的测试用例,均可立即被识别出来。
结构覆盖率
结构覆盖率指标用于衡量测试执行对代码的覆盖程度。安全标准根据关键程度规定最低覆盖率要求。
- 语句覆盖率:每行可执行代码至少被执行过一次
- 分支覆盖率:每个决策点都已产生过所有可能的结果
- MC/DC(修正条件/判定覆盖率):判定中的每个布尔条件均独立影响其结果。这是DO-178C A级和ISO 26262 ASIL D级软件的必备要求
- 函数覆盖率和函数调用覆盖率:被多项标准用作补充指标
VectorCAST可测量所有这些覆盖率类型。行业模式会根据目标标准和安全完整性等级自动选择正确的覆盖率标准,从而无需针对每个标准和完整性等级手动配置覆盖率标准。
MC/DC:最高完整性覆盖率标准
MC/DC旨在检测语句覆盖率和分支覆盖率无法发现的逻辑缺陷。要求对于决策中的每个布尔条件,都必须存在相应的测试,以证明在所有其他条件保持不变的情况下,该条件能够独立地改变决策结果。
在大规模环境下手动实现并记录MC/DC既容易出错又耗时。VectorCAST实现对最繁重环节的自动化处理:用于条件对追踪的自动插码、可精确显示已覆盖与未覆盖内容的等价矩阵可视化、针对未覆盖条件对的自动测试生成,以及符合DO-178C、ISO 26262和IEC 62304标准的认证就绪报告。
分析验证覆盖率
在安全关键型开发中,某些代码段可能无法仅通过测试实现完全覆盖。针对极低概率情况的防御性编码、针对硬件故障的错误处理,以及防范编译器特有的未定义行为的代码,都可能属于这一类别。
任何覆盖率缺口都必须提供合理依据并加以记录。VectorCAST 的分析验证覆盖率(CBA)功能允许工程师将特定代码段标记为基于分析的覆盖,将理由说明直接记录在覆盖率数据旁,并在代码演进过程中持续维护该说明。覆盖率报告以统一视图呈现实测覆盖率和分析验证覆盖率。
项目级覆盖率监控
单个测试结果和覆盖率报告能解答关于单个构建的问题。Squore则能解答关于整个项目的问题:哪些需求尚未被覆盖、自上次构建以来覆盖率在哪些地方有所下降,以及项目是否正按计划在集成前满足其覆盖率要求。
Squore整合来自多个来源的覆盖率数据,追踪随时间变化的趋势,并实施质量门控机制,防止不符合要求的代码进入后续构建流程。在整个项目周期中,覆盖率要求对整个团队始终保持可见。