认可的 ARM 编译器测试套件包括:
- 用于 C 的 Plum Hall 验证套件™
- 用于 C++ 的 Plum Hall 验证套件 (Suite++®)
- 用于 C++ 库的 Plum Hall 验证套件
- 内部验证套件
- Edison Design Group (EDG) 前端测试套件
- Roguewave C++ 库自检
- GNU Torture
- 标准基准测试
- ABI 测试套件
- 调试测试
- 缺陷管理
- ISO 认证
- Keil 产品集成
用于 C 的 Plum Hall 验证套件™
用于 C 的 Plum Hall 验证套件是 C 编译器的行业验证标准。用于 C 的 Plum Hall 验证套件利用正面和负面两种测试技术完成以下测试:
- 测试对 ISO c90 和 c99 C 语言标准的基本符合性。
- 生成测试运算符排列和数据类型的自检 C 程序。
- 确定某些编译时间限制的大小,例如,标识符的有效长度或 include 文件可能被嵌套的深度。
- 通过生成任意复杂程度的自检表达式对合法表达式进行测试。
用于 C++ 的 Plum Hall 验证套件 (Suite++®)
Suite++ 是针对 ANSI/ISO C++ 标准的行业领先的符合性测试。Suite++ 代表了用于测试编译器是否符合 ISO/IEC 14882:2003 标准的 4,600 多种正面和负面测试用例。
用于 C++ 库的 Plum Hall 验证套件
LibSuite++ 代表了专门用于测试各个库是否符合 ISO/IEC 14882:2003 标准的 2,500 多种测试用例。
内部验证套件
- 差异测试 - 用于检测代码质量的差异,ARM 会在新编译器版本生成的代码和以前测试版本生成的代码之间进行比较。此测试套件会生成一份内部报告,显示相对于以前版本的差异。ARM 分析此报告以验证是否有任何意外的代码差异。
- 回归套件 - 缺陷修复后,会将测试添加到我们的回归测试套件中,以确保以后的编译器更改不会重新激活该缺陷。
- 语言扩展 - ARM 维护了一个内部测试套件,用于测试 ANSI/ISO 标准中未涵盖的产品语言扩展。
- C 头测试 - 检查标准 C 头文件的内部一致性。其工作方式是对每个头运行该编译器并让其转储出其内部状态。然后检查结果以确保一致性。
- Nullspace 测试 - 测量预期编译器行为和对语义上等效但语法上不同的源代码优化的一致性。
- 数学库测试 - 浮点和数学库体验特例的定向测试(NaN、无限、下溢等)以及与已知难值相关的测试。
- 融合测试 - 此套件测试 ARM 编译器是否可以构建自身。这分为两个阶段来完成,首先使用 ARM 编译器来构建面向 ARM 自身的半托管版,然后使用半托管版构建第二版并比较最终映像和目标。
- 代码数据库 (CodeDB) - CodeDB 是开源应用程序和已得到批准的客户代码的集合,可用于验证复杂的现实世界的应用程序是否可以使用最新编译器版本进行构建。
- 产品集成测试 - 这些测试可确保不同产品组件已成功进行集成并生成首选的用户体验。针对基于该版本中的新功能的每个版本生成新测试。除了新测试外,产品集成测试还包含 1,200 多种回归测试用例。
Edison Design Group (EDG) 前端测试套件
使用 Gimpel 的 FlexeLint、Plum Hall 和 Perennial 商业测试套件测试 EDG 前端软件。此外,前端软件需要接受过去 20 多年开发的 ~25,000 个本地回归测试。
Roguewave C++ 库自检
RogueWave C++ 标准模板库 (STL) 附带的自检套件。
GNU Torture
这些测试构成了 GNU C 编译器分发的一部分。它们包括自检测试以及编译器前端的测试。
标准基准测试
使用 EEMBC 和 Dhrystone 等标准基准来验证基准套件是否正确编译和执行。
ABI 测试套件
此套件测试对 ARM-THUMB 嵌入式应用程序二进制接口 (EABI) 过程调用标准 (ATEPCS) 的符合性。
调试测试
此工具检查 ARM 编译器是否生成有效的 DWARF 调试信息,它通过使用专门设计的语言 DVAL(DWARF 验证标注语言)的嵌入式标注来分析源文件信息。
缺陷管理
在我们的缺陷数据库中对缺陷进行编号、归档和确定优先级。我们会定期查看缺陷并确定目标以便基于优先级进行纠正。缺陷数据通过夜间备份和异地存储进行保护。
ISO 认证
ARM 获得了 ISO9001:2008 认证(编号 LRQ 0963114),此认证适用于 ARM 软件解决方案的设计、开发和质量管理。
Keil 产品集成
自从 2006 年发布以来,ARM 编译器已用于所有版本的 Keil MDK-ARM(微控制器开发工具包)。有完整的 MDK-ARM 版历史记录可供参考。