遵守 ISO 26262、EN 50128 和 IEC 61508 等复杂功能安全标准的要求非常复杂。只需考虑这需要的代码覆盖量,从应用软件到所有 C 编译器中使用的 C90 和 C99 等库中存在的各种条件。这意味着为您甚至没有编写的代码提供代码覆盖!
这就是为什么 Solid Sands 开发了 SuperGuard,这是一个用于安全关键和安全相关系统的 C 库安全认证套件。基于 Solid Sands 的 SuperTest 库测试和验证套件,SuperGuard 被设计为 C90 和 C99 库的以需求为中心的测试解决方案,该解决方案与 ISO C 规范紧密结合,没有为每个 C 库函数定义测试要求。SuperGuard 工具将此规范转换为测试要求,这些要求说明了标准 C 库中条件函数的不同实现,并调用了合规性所需的那些。
这些要求被记录并链接到 SuperGuard 套件中的测试规范,然后进一步链接到 SuperTest 工具中的 C 库测试。SuperGuard 验证和文档链为必须向国际认证机构证明应用软件、工具链、方法和流程符合安全标准的开发人员提供完整的可追溯性。
该套件与 Windows 和 Linux 系统兼容,可与任何 C 或 C++ 编译器(包括裸机目标)一起使用,支持配置插件,并且可以利用多处理功能来传播验证运行,以便更快地执行测试。
SuperGuard C 库安全认证套件在行动
如前所述,SuperGuard 基于 SuperTest 套件,其中包含针对 ISO 标准 C 库规范的每个部分的库测试。SuperGuard 测试需求源自这些测试,以生成可从原本含糊的定义中测试的案例。
例如,函数“strlen()”的参数必须指向一个有效的字符串。这是在 C 语言规范中定义的。它是 strlen() 函数的先决条件。如果应用程序开发人员未能满足此前提条件,则程序具有未定义的行为。这不好,但它是 C 的一个很好理解的属性。strlen() 函数的实现不需要验证前提条件是否为真——这在 C 中根本不可能。所以,这个 pre-条件是对程序员的要求。它不会导致测试 strlen() 的实现。
此过程会生成详细的结构化需求列表,然后将其转换为可测试需求的测试规范。该套件还可以为单个需求生成多个测试规范。对于那些实现定义的元素,SuperGuard 为工程师提供了完全控制来添加他们自己的测试或调整生成的测试集。
然后可以将结构代码覆盖工具应用于库实现。Solid Sands 使用这种方法为 MUSL-C 库实现和高修改条件/决策覆盖率实现了高达 100% 的代码覆盖率。
测试运行后,SuperGuard 报告工具可以将结果链接回套件中先前生成的需求,并提供满足需求和失败的实现的概述。
从 ISO 标准 C 库规范到生成测试需求、创建测试规范和执行测试一直到报告的链接和文档是符合当今安全关键标准所需的验证链。
SuperGuard C 库安全认证套件入门
总体而言,SuperGuard 测试套件允许开发人员将其软件映射到安全关键系统的要求,从而简化了安全认证过程。完整的 SuperGuard C 库安全认证套件将于今年夏天作为独立解决方案和 SuperTest 的附加组件提供。C++ 标准库版本目前也在开发中。
审核编辑:郭婷
-
C++
+关注
关注
22文章
2104浏览量
73484 -
代码
+关注
关注
30文章
4742浏览量
68333 -
编译器
+关注
关注
1文章
1618浏览量
49046
发布评论请先 登录
相关推荐
评论