高可信工业嵌入式软件单元测试工具_第1页
高可信工业嵌入式软件单元测试工具_第2页
高可信工业嵌入式软件单元测试工具_第3页
高可信工业嵌入式软件单元测试工具_第4页
高可信工业嵌入式软件单元测试工具_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0引言“高可信工业嵌入式软件单元测试工具”主要解决工业嵌入式系统产品研发过程中测试、验证阶段的核心问题。针对测试阶段,重点解决测试数据如何自动生成问题,填补国内工业软件测试用例自动生成工具技术空白;针对验证阶段,重点解决工业软件验证误报率高,缺乏深层次缺陷分析问题,填补动态运行时错误检查技术空白。此工具能够针对高安全领域C语言自动化实现满足分支、语句、边界以及MC/DC覆盖准则的测试用例,并将用例导出为第三方平台的测试用例格式,实现基本无需手工修改的全自动化单元测试;能够让测试人员摆脱效率低下、质量参差不齐的手工测试用例编写任务,大幅提高测试人员的工作效率,有效提升测试质量。此工具利用软件代码分析中的动态符号执行术实现,把程序变量抽象为符号变量,结合约束求解技术,自动生成高覆盖度的测试用例,实现智能化的单元测试,测试航空航天、地铁信号、汽车电子、核电控制等领域软件代码超过800W行,平均语句覆盖率超过80%,有效提高测试效率。此工具面向单元级别的测试数据设计与自动生成引擎,利用程序分析技术特别是符号执行与约束收集技术,自动生成单元级的测试数据,并自动执行,以提高测试的效率,有效降低测试成本。目前该技术在市场上属于空白领域。1产品研发背景1.1产业现状分析在国际标准方面,电气/

电子/

可编程电子安全系统的功能安全ICE61508标准针对以电子为基础的安全系统提出一个一致的、合理的技术方案,统筹考虑单独系统中元件与安全系统组合的问题。标准中规定系统有4种安全完整性水平,其中达到最高水平的软件需要通过形式化验证。另外,信息安全测评认证中最高等级EAL7要求软件系统在设计阶段经过形式化验证,汽车电子领域中的安全标准ISO26262要求汽车电子系统中的核心软件通过形式化验证。同时,美国国家标准与技术研究院(NIST)制定了NISTSP800-82和NISTSP800-53等工控安全标准,重点关注SCADA系统等国家关键基础设施安全,具有鲜明的美国国家特色。1.2技术现状分析面向工业嵌入式软件的功能安全测试一直是软件工程界的热点问题之一,软件测试是对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。软件测试的基本技术手段是利用不同的输入(测试用例)去执行被测程序,来检测程序在任何输入(测试用例)的驱动下所体现的行为是否符合预期。常用的测试用例生成方法包括随机测试、基于符号执行的测试、基于搜索的测试和基于模型的测试。软件验证是利用形式化方法,在理论上对于软件的正确性进行证明的过程。1.3国内技术瓶颈工业软件可信性的增强必须依赖软件可信性技术的创新和发展。我国软件工程化水平还不高,与国外先进技术还有一定的差距。近几年,软件的质量保证水平稳步提高,但仍然满足不了系统的发展对软件可靠安全性等方面的要求。高可信软件的安全攸关领域对软件质量保障的研究应着重在保证质量的工具集研究上,将软件理论界对软件测试、软件故障模型等的研究与工程经验相结合,推动我国自主研发的工具及工具链的发展。2关键技术2.1

基于动态符号执行的测试用例生成技术研究动态符号执行技术提高测试数据的生成效率,同时利用模型检查技术避免无效的搜索空间,实现高质量的测试用例数据的自动生成验证,有效提高优化测试数据生成效率。构建单元级的代码动态缺陷发现技术的核心是如何设计有效的算法以动态地追踪程序内存的变化情况,从而发现可能发生的程序错误。通过精确分析内存布局的变化,例如指针的动态指向关系,结构体的嵌套关系以及数据类型的自定义关系,为缺陷检查与接口测试提供准确的错误判定[1]。2.2

白盒运行时漏洞检测技术研发面向白盒测试的运行时漏洞检测技术,通过在代码层面进行准确插桩,实现对程序行为的完整性分析。通过对程序自身及程序运行时内存模型进行有效建模,有效弥补黑盒测试环节的技术缺陷。采用基于测试流程图的创新方法来图形化构建测试流程,通过画布上的图元和图元间连线,图元的属性设置等方式动态构建测试流程绑定测试端口设备。测试用例之间可以协同循环执行,实现完全自动化测试,实现直观、便捷、高效的用例编排和执行。2.3

目标代码的插桩分析技术研究面向目标源码的插桩技术及源码编译前端辅助判定机制,有效减少插桩的复杂度。针对面向源码插桩分析可能造成的执行结果偏离问题,通过对目标代码插桩有效提高对目标代码分析的准确率。程序缺陷的静态发现技术已被广泛的研究,但是程序动态缺陷的触发技术一直是研究的热点。研发符号执行与缺陷模式的匹配算法,以作为触发缺陷的候选集,研发符号执行过程中内存的异常监控算法以及异常点的定位算法,研发内存异常的误报判定算法,研发内存异常与缺陷模式的配对算法,研发多路径触发缺陷的融合机制等。3技术优势3.1支持语句、分支、MC/DC及边界覆盖准则本项目能够针对覆盖准则生成用例,支持语句、分支、MC/DC及边界覆盖准则,能够自动执行生成的用例并提供筛选项,能够满足D0-178B、ISO26262等行业准则的测试要求[2]。采用随机生成及数据字典生成的工具无覆盖准则,用例通过随机组合产生,无法支持MC/DC及边界用例的定向生成。本项目对于分支准则生成2个用例,MC/DC准则生成4个用例,达到语句、分支、MC/DC的100%覆盖,如图1所示。其他工具则无法给出MC/DC用例。图1在MC/DC准则下生成用例

3.2

生成精简的测试用例集本项目能够针对不同的准则生成精简化的用例集,使得用例之间没有冗余。其他用例生成工具无覆盖准则之分,通过随机生成或数据字典方式来生成用例往往存在大量冗余。在测试航天某控制软件代码时,对于许多函数本项目仅生成十多个用例就能够达到语句、分支及MC/DC的100%覆盖,如图2所示。

图2测试用例生成界面3.3全面设计形参、全局变量、桩函数及桩函数形参数据本项目能够针对形参、全局变量、桩函数及桩函数形参等参数进行全面设计,自动设计桩返回值及参数输出值等。而随机用例生成工具及数据字典用例生成工具通常只支持形参、全局变量的数据设计,从而导致无法达到较高的覆盖率。采用其他工具的用例生成,无法自动打桩并设定桩的返回值及桩函数形参。本项目能够自动捕获桩函数,并为桩的返回值、形参输出值进行正确的赋值,从而执行后达到语句、分支、MC/DC的100%覆盖,如图3所示。

图3用例桩返回值示例

3.4

自动执行用例,满足预期值检查规范在被测代码中,有时我们想要保留系统函数,尤其是memcpy、memset等可能影响覆盖率的内存函数。对于随机生成或数据字典生成的工具而言,该类系统函数无法正确识别,而本项目则能够自动捕获此类函数的内存变化约束,生成正确的测试用例。生成用例后会自动执行用例,捕获用例的预期值等输出检查信息,并填写到用例的相应位置,如图4所示。该检查项满足SIL认证所需的检查项,即检查函数返回值、检查全局变量被修改值、检查形参指针指向内容被修改值等[4]。而其他工具则无此检查项或检查项较为薄弱(例如,只检查函数返回值等),后续需要大量的人工来补充该部分数据,导致效率降低。

图4生成用例覆盖率达到100%4应用领域4.1

航空航天领域卫星控制软件是卫星控制系统的核心,其功能复杂,单元测试覆盖率要求高,手工测试用例编写成本大,且容易出错。本项目能够自动生成满足语句覆盖、分支覆盖、MC/DC覆盖的单元测试用例,并自动进行测试执行,能够提高软件开发效率和软件产品质量。本项目在某航天单位15万行代码测试中,获得超过75%平均语句覆盖率。4.2核电控制领域核电控制及仪表相关行业属于高安全领域行业,其对单元测试有着很高的要求。对于需要达到MC/DC100%

的项目,通常委托第三方测评中心进行测试。该测试往往需要耗费大量的时间,每人每天通常可以测5-8个函数。本项目能够加快单元测试进度,在较短的时间内达到MC/DC的100%

覆盖。在某仪表单位5万行代码测试中,获得超过80%的平均语句覆盖率。4.3轨道交通领域地铁信号系统是轨道交通的中枢。在地铁信号系统测试中,需要根据不同的SIL等级来进行相应的单元测试。传统测试中,测试用例编写依靠人力实现,对于需要达到MC/DC100%覆盖的SIL4级代码测试而言将耗费大量的人力及时间。本项目能够解决该问题,大大减少人力成本及时间成本。在地铁信号控制系统20

万行代码测试中,获得平均超过85%的语句覆盖率,用例生成效果显著。4.4汽车电子领域汽车电子行业遵从ISO26262标准。对于需要达到MC/DC100%覆盖的工程,需要耗费大量人力和时间来编写用例。本项目能够无缝应用于汽车电子行业,帮助测试人员快速达到语句/分支、MC/DC的100%覆盖。在汽车电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论