CNAS实验室建设

1. 工具要求
根据CANS实验室目前的能力和规划建设,需要在以下几个方面进行重点考虑:
1.1. 源代码分析
软件测评一般是从源代码开始,尤其是进行单元测试时,代码走查和代码评审是测评中非常重要的一个环节,无论被测软件是通用软件还是嵌入式软件,源代码分析都是测评中的重要工作,在这个阶段主要有如下几个工作要完成:
软件结构分析(调用关系、控制流、软件复杂性)
软件编程标准遵循情况
代码中存在的缺陷和漏洞分析
软件结构分析主要是帮助测试人员,对被测软件进行初步了解和熟悉,一般来说,需要得到软件的模块调用关系图和模块的控制流程图,根据这些信息,可以对评测工作进行工作量的预估和评测的任务分配。并且可以做到科学的、量化的进行决策。
目前软件编程(C语言)需要遵守MISRA C/C++标准,另外有些系统软件需要遵守其所在行业的行业标准甚至单元标准,在评测阶段,有必要对被测软件对标准的遵循情况进行检查,另外一个目的,通过这种标准规范性的检查,可以发现软件可维护性、可移植性和语言的不安全使用的问题,是可以避免一些软件的潜在危险的。
通过源代码分析发现软件中存在的Bug或者安全性漏洞,这种技术目前已经比较成熟,属于新一代的源代码分析技术,而且这种方法能够以比较经济,快速,简便的方式获取重要的分析结果,例如,可以发现空指针引用的问题、数组越界的问题、内存泄漏的问题。这类问题对于嵌入式系统来说都是非常致命的,如果通过动态测试发现这类问题,难度很大,需要设计特定的测试用例,即使这样,有些问题也是不能通过测试用例复现的,静态分析技术的好处是可以通过理论推导,虚拟的运行里面的所有路径,发现每一条路径中可能存在的问题。
1.2. 单元/集成测试
作为综合性的软件评测实验室,单元/配置项测试是应具备的最基本评测能力,但是要重点考虑加强这阶段测试是否能够很好的支持所涉及到的各类嵌入式环境,由于第三方评测工作需要考虑兼容被测的各类系统,例如:CPU、操作系统、接口、总线等。所以在建设单元/配置项测试平台时,需要重点考虑对于嵌入式环境的支持全面性和完整性。
按照GJB/Z 141-2004软件测试指南的要求,单元测试主要是进行如下检查:
每个程序单元实现的功能、性能和接口应该满足详细设计的要求;
被测试单元中每项软件特性、功能都必须被至少一个测试用例所覆盖;
针对被测试单元中局部数据结构进行测试;
不仅要考虑对合法的输入设计测试用例,而且要对非法的、非预期的输入设计测试用例;
既要对正常的处理路径进行测试,也要考虑对出错处理路径进行测试;
程序单元的测试用例须加明确的注解,并和测试辅助程序一起纳入测试集存档保留;
软件单元测试指标要达到规定的指标要求,比如语句覆盖率100%,分支覆盖率100%等。
软件单元在修改单元测试所发现的错误后必须进行回归测试;
集成测试也叫组装测试,验证软件集成或者组装过程中是否会出现问题,证明单元之间能够集成工作。集成测试主要是进行:
单元间的接口测试
全局数据结构测试
性能测试
const的作用✓ 边界和人为条件下的性能
软件功能模块的功能测试
目前,国内已经有型号和项目开展的MC/DC测试,所以在建设嵌入式软件单元/配置项测试平台是时,对于嵌入式环境下MC/DC的分析能力是重要的一个指标。
1.3. 配置项/系统测试
配置项/系统测试以产品功能测试为主。功能测试通常指黑盒测试,是一种按照需求规格说明设计测试数据的测试,一般包括功能分解、等价类划分、边界值分析和猜错法。功能分解是把大功能不断分解为易于实现测试的子功能,最后对各个子功能分别设计测试用例,以最大程度覆盖全部测试需求。等价类划分基于软件输入和输出信息来设计测试用例,将所有可能的输入和输出数据划分为若干个等价类,包括有效和无效等价类,设计测试用例时应保证所有有效和无效等价类均已被覆盖。边界值法通常作为等价类法的补充,根据等价类划分的输入和输出,选取稍高于边界值或稍低于边界值等特殊情况作为测试用例。猜错法则基于测试人员的经验和直觉,参照以往软件出现的错误,推测程序中所有可能存在的各种缺陷和容易发生错误的特殊情况,从而有针对性地设计测试用例。
在软件的粒度上,功能测试有部件级、配置项级和系统级别的。在开发与测试环境上,有主机以及主机-目标机交叉环境的。在功能测试的基础上,辅助以白盒的覆盖率分析,则更
能增加对被测嵌入式软件的信心。
1.4. 质量体系与管理系统建设
编制满足CNAS实验室认可要求的质量管理体系,包括质量手册、程序文件与作业指导书。
质量手册是对质量体系作概括表述、阐述及指导质量体系实践的主要文件,是CNAS软件测试实验室质量管理和质量保证活动应长期遵循的纲领性文件。质量手册有三方面作用:一,在实验室内部,它是由最高领导人批准发布的、有权威的、实施各项质量管理活动的基本法规和行动准则;二,对外部实行质量保证时,它是证明实验室质量体系存在,并具有质量保证能力的文字表征和书面证据,是取得用户和第三方信任的手段;三,质量手册不仅为协调质量体系有效运行提供了有效手段,也为质量体系的评价和审核提供了依据。程序文件是在质量管理体系中质量手册的下一级文件层次,规定某项工作的一般过程。
程序文件对影响质量的活动做出规定,是质量手册的支持性文件;程序文件包含了质量体系中采用的全部要素的要求和规定,每一程序文件均是应针对质量体系中一个逻辑上独立
的活动,使质量活动受控,对影响质量的各项活动作出规定,规定各项活动的方法和评定的准则,使各项活动均处于受控状态
作业指导书是用以指导某个具体过程,事物形成的技术性细节描述的可操作性文件。作业指导书是针对某个部门内部或某个岗位的作业活动的文件,侧重描述如何进行操作,是对程序文件的补充或具体化。
建立软件测评实验室质量管理体系,规范了软件测评实验室的运作和软件测试工作的开展,是通过CNAS国家软件测评实验室认可的必备条件。
2. 工具配置
为了具备以上的CNAS实验室评测能力,需要配置如下专业评测工具。
2.1. 源代码分析工具
PRQA Framework是英国PRQA公司在原本的QA C/C++、QA Verify、QA Framework等产品的基础上退出了新一代软件质量解决方案。
PRQA Framework由不同的语言分析器以及质量管理系统构成,自动识别被分析的代码语言,调用相应的分析器。在工具中建立的工程是跨平台的,开箱支持型号软件常用的开发运行环境。工具快速高效地检测和报告数据流问题、软件缺陷、语言实现错误、不一致性、危险用法和编码标准违规。通过坚持“early & often”的观念,在创建时识别软件缺陷,从而简化开发生命周期并减少成本和周期时间。工具提供了一个高效、健壮和完全自动化的环境来引入并实施编码标准。产生大量关于缺陷及度量计算的报告,报告可个性化配置。工具能够监视复杂度并高亮超过定义阈值的情况,从而开发可测试和可维护的代码。
代码规则检查的前提是具有编程规则或编程标准。国际通用的标准是MISRA-C:2012和MISRA-C++:2008,我们国内实际遵循的是GJB5369-2005《航天型号软件C语言安全子集》和GJB8114-2013《C/C++语言编程安全子集》。
工具对上述编程标准实现了完全的满足,根据项目或要求的不同自由灵活地添加、删减、修改。
工具通过截取源代码的构建信息获得被分析的源代码列表。源代码也能从源码库(如CVS、SVN等)中获得。
具有BS架构的质量管理系统QA Verify负责收集软件的历次版本和分析诊断结果,在Web浏览器上诊断结果,导出为PDF或HTML文件。软件的质量趋势也能从Web浏览器上查看。BS架构的好处之一是,节省了分析器的License数量,使得非实际执行测试的QA人员或项目负责人等也可登录查看到诊断信息。
为了更准确地检查代码的安全缺陷,PRQA Framework加强了数据流分析功能,通过SMT求解器建模,识别如下代码状态,并提供多种场景供测试人员进一步确认:
恒定运算:逻辑、常值控制表达式
冗余操作:多余的初始化和赋值
控制流分析:不可达代码、无限循环、非void函数中隐含的return
初始化追踪:未设值数据、或其地址被传递给定义为const对象指针的函数参数
值追踪:零除、有符号数据的溢出、无符号数据的折叠、负数到无符号的转换、转换后的数据类型不能represent,……
指针属性追踪:空指针的解引用和算术运算、数组越界,……
作为规则检查工具,对标准的偏离是必须要考虑的一个问题。因为标准是不会变的,但具体某一条规则有可能不适合特定的项目,因此必须在分析结果中对相应规则的诊断进行偏离的操作,并允许软件的各个版本都能忽略对该规则的诊断。质量管理系统中可进行偏离操作,允许施加在当前版本或后续版本上,并可生成关于偏离的报告。
PRQA Framework提供了基线的功能,有利于对遗留代码的处理。方法是,对遗留代码做一次分析,然后建立分析基线,诊断数量清零,这样当代码后续发生修改时,再次做出的诊断将是建立在这个基线之上的。
PRQA Framework包含以下组件:
组件
说明
QA C
C语言分析器
QA C++
C++语言分析器
QA Verify
代码质量管理系统
CMA(rcma)
模块间分析
MTR
多线程分析
Namecheck
命名规范检查
S101
Structure101结构分析
QA C#
C#语言分析器
QA J
Java语言分析器
M2CM
MISRA C:2004标准适应性模块
M3CM
MISRA C:2012标准适应性模块
HICPPCM
HighIntegrityC++标准适应性模块
JCM
JCFC++标准适应性模块
MCPP
MISRA C++:2008标准适应性模块
GJB 5369
GJB5369标准子集
GJB 8114
GJB8114标准子集

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。