C程序和C编译器都需要遵循标准C。如果一个C程序只使用标准C所描述的语言和函数库所提供的特性,它就是严格遵循标准C的。此程序的行为必须不能依赖被C语言标准认为是未指定、未定义或由编译器定义的特性。 Perennial公司提供标准C测试套件,可以帮助确定编译器产品对ISO标准的一致性。
遵循标准的C实现分为两种:宿主式和独立式。如果一个C实现接受所有严格遵循标准的程序,它就是一种遵循标准的宿主式实现。如果一个C实现接受所有严格遵循标准并且不使用除了float.h、iso646.h(C95)、limits.h、stdarg.h、stdbool.h(C99)、stddef.h和stdint.h(C99)之外的任何库函数的程序,它就是一种遵循标准的独立式实现。独立式一致性是为了使C的实现适用于嵌入式系统或其他具有最小运行时支持的目标环境,例如不支持文件系统的环境。
编译器厂商不断提供新的非一致性,他们的客户对此也已习以为常。但这些扩展是否会造成程序的问题,就需要有相应的工具进行检查。
Perennial公司致力于开发C、C++、Embedded C++和Java语言的编译器验证套件,具有公认的一致性测试实验室,提供C、C++和POSIX的品牌认证。作为一致性评估战略的重要组成部分,全球超过200个计算机系统生产厂家、编译器开发商、独立运作的测试实验室、政府机构和广泛的终端用户已经使用了Perennial验证套件和一致性测试服务。
1989年,Perennial从NIST(国家标准和技术协会)获得了一个很重要的合同,即向美国政府提供唯一的C语言验证测试套件,ACVS。同时,Perennial被NIST指定为验证POSIX测试的实验室和X/Open的一致性测试中心。
Perennial的工程师致力于支持国内、国际和政府的标准组织,在开发C、C++和一致性验证等技术上做出了巨大的贡献,同时在标准委员会中担任着重要职务。这些机构如下:
●国际标准机构(ISO)
●美国国家标准协会(ANSI)
●国家信息技术标准委员会(NCITS)
●电子和电气工程协会(IEEE)
●国家标准和技术协会(NIST)
1986年开始,Perennial公司开发了完整的商用编译器和操作系统测试套件,是全球首家提供C和C++编译器、UNIX和BSD操作系统商用测试套件的公司。测试套件为一个通用目标测试程序的集合,由于采用验证(Validation)测试技术,因此称之为Perennial验证套件(PERENNIAL Validation Suites)。
PERENNIAL 验证套件诞生后,在全球范围内得到了那些致力于将高质量产品推向市场的各个企业和组织的广泛应用。PERENNIAL验证套件可针对C、C-Freestanding、C++、Embedded C++和Java等语言按照语言规范对编译器(compilers)、翻译器(translators)和解释器(interpreters)进行一致性测试。C、C-Freestanding和C++的标准由ANSI and/or ISO定义,Embedded C++的标准由Embeded C++技术委员会开发在ISO C++标准基础上进行裁减。Java的标准由Sun Microsystems公司开发,包括Java语言的规范、APIs等等。
CVSA C编译器验证套件
提供如下标准的覆盖:
●当前ISO C Standard (C99),与其技术纠正附录 1 & 2
●C99 关于十进制浮点的技术报告
●C99支持嵌入式系统的技术报告
●C99关于支持新的字符类型的技术报告
●C99关于边界检查接口的技术报告
●原始的 ISO C标准(C90)
●附录1和技术纠正C90 (C95)
●K&R 原始关于C语言的定义
CVSA 可以运行在“主机”模式,用于对企业级编程的编译器验证,或者“独立”模式,对嵌入式系统编译器,带或不带I/O支持的编译器进行验证。
CVSA有超过63000个测试用例, CVSA是最综合、完整、最新的编译器验证套件,CVSA每6个月更新一次版本,以确保符合ISO标准委员会的最新改变。
CVSA-Freestanding C编译器验证套件
CVSA-Freestanding 用于验证C编译器是否符合 ISO C “独立”环境、 嵌入式系统。
作为 CVSA的子集,CVSA-Freestanding 包含超过 8,000个独立测试用例。
PERENNIAL 验证套件共性
●所有PERENNIAL Validation Suites 的产品都遵循通用设计的原则,具有类似的特性和开发方法。
●在程序设计、组织、外表、感觉上具有共性;
●基于断言的测试方法;
●支持嵌入式、主机、客户机和模拟环境的测试;
●自动安装过程;
●自动运行过程;
●自动报告生成;
●可扩展性。容易增加用户开发用例;
●优秀的客户支持;
Open Group操作系统验证工具
支持64位操作系统的工业标准的测试、大文件支持的测试, POSIX Threads测试、 POSIX Realtime测试 X/Open Threads测试、 ISO C Amendment 1 和 Dynamic Linking的测试。支持Single UNIX? Specification, Version 2。
●通用测试库 (VSXgen) ,支持 VSTH、VSRT、VSX5测试
●支持单独运行测试套件,也可以与其他测试套件集成运行。
●使用标准的测试环境Toolkit,可以方便的扩展。
●支持多个不同标准的测试模式
VSC、VSTH、VSRT 和 VSX4 提供第一个完整的POSIX Conformance 测试套件,支持ISO/IEC 9945-1:1996(POSIX 1003.1-1996)和ISO/IEC 9945-2:1993(POSIX.2-1992)。
●VSTH – 工业标准的测试套件,包括满足 POSIX 1003.1c和 X/Open threads(Aspen) 需求的测试库。
●VSRT – 工业标准POSIX Realtime测试套件,包括满足POSIX 1003.1b and POSIX 1003.1i的测试库。
●VSX5 –测试套件,包括ISO C Amendment 1, Dynamic Linking 和 Large File 测试集。
●VSC5 – VSC的升级,工业标准命令和应用测试套件,包括 Large File Summit, n bit clean, Aspen commands and year 2000 alignment测试库。
●VSU5 - VSU的升级,包括 Sockets, Curses 和其他 UNIX 扩展:Large File Summit extensions 、 n bit cleanup 、 针对XNS Issue 5S的Sockets 接收测试、X/Open Curses Issue 4 Version 2测试库。
●VST5 – VST的升级,工业标准 XTI 测试套件,包括64位系统下data size neutrality数据大小中立性测试。