面向bit软件测试的处理器故障注入方法及其模拟器的制作方法

文档序号:6371394阅读:211来源:国知局
专利名称:面向bit软件测试的处理器故障注入方法及其模拟器的制作方法
技术领域
本发明涉及可靠性工程方面的故障注入技术和计算机工程方面的处理器技术,特别是涉及一种面向BIT软件测试的处理器故障注入方法及其模拟器。
背景技术
一个系统、设备或产品可靠性再高也不能保证永远正常工作,使用者和维修者要掌握其健康状况,要确知有无故障或何处发生了故障,这就要对其进行监控和测试。于是希望系统和设备本身能为此提供方便,这种系统和设备本身所具有的便于监控其健康状况、 易于进行故障诊断测试的特性,就是系统和设备的测试性。测试性是指产品能及时准确地确定其状态(可工作、不可工作或性能下降)并隔离其内部故障的一种设计特性。随着系统和设备性能的提高和复杂性的增加,测试性越来越受到人们的重视,许多新技术、新方法都应用到了测试性之中。机内测试(Built-In Test,简称BIT)是系统或设备内部提供的检测和隔离故障的自动测试能力。当前,机载电子设备增多,机内控制高度集中,使得BIT达到空前的重要程度。测试性研究的热点,就在于研究BIT以及BIT进一步发展的衍生物,如故障预测与健康管理。由于BIT的目的是为了在系统出现故障时进行检测、隔离,那么在进行BIT设计时,如何验证BIT的功能是否达到了预期设计的目标就成为一个问题,与此同时,设备在正常运行过程中,并不会频繁发生故障,很难对设备的BIT功能进行全面有效的评估。由于BIT也会发生故障,存在BIT设计不当、BIT虚警等问题,同时BIT软件实现部分基本承载了BIT全部逻辑功能,BIT软件实现部分(简称BIT软件)和普通软件相比,具有检测和处理电子设备系统硬件故障的功能特点,实时性强,可靠性要求高。BIT软件是否可靠决定了航空电子设备能否正确检测和处理故障,进而关系到整个系统的可靠性和安全性。所以迫切需要一种对BIT软件进行测试的有效方法和实施途径。故障注入技术是BIT软件测试中一种有效的手段,通过人为对系统注入故障并运行BIT软件,观察其检测、隔离故障的能力,从而检验BIT软件的设计是否合理、测试能力是否符合设计要求等。然而传统故障注入技术面临诸多问题基于硬件的故障注入技术虽然注入真实的硬件故障,但受限于电路板上元器件的高密集性,已没有足够空间附加探针、插座等硬件故障注入设备,而且比较关注的元器件内部故障也是无法注入的;基于软件的故障注入技术在其他应用中有种种好处,但BIT软件的代码不开放(或不允许修改)、运行结构复杂、且可达性差,故而软件故障注入在BIT软件测试中是无处着手的;最后,采用VHDL、Verilog等硬件描述语言实现的基于模拟/仿真的故障注入技术虽可精确仿真BIT软件运行的硬件环境,但无法支撑BIT软件在其上运行,作为软件测试工具则无从谈起。开展BIT软件测试,不仅需要相应的试验方法、技术和规范,还需要相应的故障注入工具来支持试验执行。但目前,由于在BIT设计指标的考核过程中缺少有效的故障注入工具,BIT软件测试试验无法得到充分地执行,影响BIT技术在工程中的应用。随着航空电子设备复杂度的不断提高,故障注入工具的缺乏已成为国内外开展BIT试验的瓶颈。综上所述,常见的故障注入手段应用于BIT软件测试中,或具有一定局限性、或无法实施,因此尚无有效解决BIT软件测试难题的故障注入方法。模拟器在计算机工程领域是计算机体系结构研究、处理器指令集研究等方面的重要工具,具有广泛的实用价值。全系统模拟器模拟了软件运行的硬件环境,可支持客户操作系统及应用软件在其上的运行。此外,除去运行速度上的差异,软件在模拟器上运行与在真实硬件上的运行情况是无差别的。目前,国内外尚缺乏评测BIT软件的有效方法和测试设备。在动态测试方面,受专业知识、环境技术条件等方面的限制,存在两方面的问题(I)在测试用例的设计中缺少对于电子设备系统的全面分析,对异常用例的设计不够全面;(2)考虑到BIT软件检测故障模式而设计的异常用例,但由于BIT软件自身功能特点,使得部分异常用例的施加需要在实际硬件中注入故障才能实现。但硬件故障注入方法无法适用于高密集度的电子设备中。这样,很多用例即使设计了也无法执行。这些原因都导致BIT软件测试不充分,使得很多问题 在实际使用过程中才被发现,造成严重的后果。

发明内容
本发明所要解决的技术问题是如何提供一种有效的用于BIT软件测试的故障注入技木。具体,本发明提供了一种面向BIT软件测试的处理器故障注入方法及其模拟器。一种面向BIT软件测试的处理器故障注入模拟器,将运行BIT软件的硬件电路板作为模拟对象,在模拟器中设置如下模块正常功能模拟模块、故障行为模拟模块、故障注入模块、故障模型解析模块和外围交联环境仿真模块。正常功能模拟模块用于对处理器、存储器和外围设备的元器件的正常行为进行功能级模拟;对处理器的模拟实现方法为对处理器指令集进行模拟执行,将源指令代码以基本块为粒度进行组织,按需动态地读取ニ进制源指令代码基本块,并进行翻译,将翻译好的目标代码存放在代码缓存中,然后执行目标代码。故障模型解析模块用于对当前测试的采用XML语言描述的故障序列文件进行解祈,得到采用C语言表示的模拟器识别的故障序列,所解析得到的故障序列,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一故障模式的待注入故障构成单向链表结构。故障注入模块接收故障模型解析模块解析得到的故障序列,在模拟器运行遇到某个故障观察点时被调用,故障注入模块在当前测试的故障序列中,查找具备触发条件的,且与当前故障观察点对应的故障模式相匹配的故障,如果查找到相应的故障,则注入相应的故障。故障行为模拟模块根据故障发生的行为表现,构造相应的故障模拟函数,进行各种故障模式的故障行为模拟。对于寄存器或ALU操作数出错类故障,故障模拟函数的实现方法是产生相应的故障掩码与寄存器正常值作与/或/异或操作,之后写回发生故障的寄存器,造成数据错误;对于运算错误及预处理错误故障,故障模拟函数的实现方法是依照相应故障行为,造成逻辑运算过程或结果出错。外围交联环境仿真模块用于模拟外围环境激励与模拟器的响应,以及模拟模拟器对外的输入和输出。本发明提出的一种面向BIT软件测试的处理器故障注入方法,将运行BIT软件的硬件电路板作为模拟对象,然后进行如下步骤步骤I :对处理器类故障模式进行分析,形成处理器故障模式库;步骤2 :从处理器故障模式库中选取符合测试目标的故障模式,并定义相应故障模式下的故障,并对各故障建立故障模型,将所建立的故障模型写入故障模型序列文件中;所述的故障模型序列文件为用XML语言描述的文件;所述的对各故障建立故障模型,是提取故障的6个特征来建立故障模型,6个特征为元器件,故障位置,故障模式,故障参数,故障触发方式和故障时间;步骤3 :模拟器读入故障模型序列文件,经过故障模型解析模块解析为模拟器识别的故障序列,然后将故障序列输入到故障注入模块中;所述的模拟器识别的故障序列,是用C语言表示的,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一故障模式的待注入故障构成单向链表结构; 步骤4 :模拟器对处理器进行模拟,当遇到故障观察点时,执行步骤5 ;所述的模拟器对处理器进行模拟,就是模拟器对处理器指令集进行模拟执行,将源指令代码以基本块为粒度进行组织,模拟器动态地、按需要地读入二进制源指令代码基本块,并进行翻译,将翻译好的目标代码存放在模拟器开辟的代码缓存中,然后执行目标代码;步骤5 :故障注入模块查询输入的故障序列,判断是否有匹配当前故障观察点对应的故障模式的故障,若有执行下一步骤,若无,转步骤4执行;步骤6:判断步骤5匹配得到的各故障的触发条件是否具备,若都不具备,转步骤4执行,若存在具备触发条件的,查找所有具备触发条件的故障,然后执行步骤7 ;步骤7 :故障注入模块注入故障,为满足故障触发条件的故障进行触发条件设置,并适时触发故障;步骤8 :模拟器在触发某个故障后,通过故障行为模拟模块调用相应的故障模拟函数实现故障的行为模拟;所述的故障模拟函数依照相应的故障行为,造成逻辑运算过程或结果出错,进行各种故障模式的故障行为模拟;步骤9 :监控模拟器运行及故障注入过程,回收执行结果。本发明的优点与积极效果在于(I)本发明提供的故障注入方法及模拟器,解决了 BIT软件测试问题,注入的故障模式种类较全,充分覆盖了处理器的每种故障发生下的测试用例,可对电路板级BIT软件进行较为充分的测试,而只有进行了充分测试的BIT软件,才能保障航空机载设备BIT预报故障的准确性、及时性,进而保障系统的可靠性、安全性。(2)本发明提供的故障注入方法及模拟器,在背景技术所述的用于软、硬件测试的基于模拟的故障注入的应用技术中均有研究前景,而且结合模拟自身独有的优势,也可将本发明中的模拟器应用到原型系统的开发阶段,做可靠性预评估、系统测试性设计的早期评价试验。(3)本发明提供的故障注入方法及模拟器,对BIT软件测试中,对硬件和其上运行的应用程序均无侵入性与损害。


图I是本发明的模拟器所运行的层次结构示意图;图2是本发明的模拟器整体功能模块示意图;图3是XML描述的故障模型序列文件的一个示例;图4是本发明方法中故障建模ー解析的流程示意图;图5是解析后的故障序列的一个示例图;图6是本发明方法中故障模拟ー注入的流程示意图;图7是本发明故障注入的整体步骤流程图; 图8是本发明模拟器进行处理器指令集模拟的过程示意图;图9是本发明模拟对象的PowerPC处理器寄存器体系结构图;图10是本发明模拟器的一个系统架构图;图11是本发明模拟器整体实现的ー个示例图。
具体实施例方式下面将结合附图和实施例对本发明作进ー步的详细说明。BIT软件作为ー种航空电子设备中的嵌入式软件,是不能直接运行在x86架构PC上,其运行的硬件电路板一般是PowerPC.ARM等RISC架构,而由于航空板的封闭性、不可侵入性等原因,又不能在硬件上直接注入故障。由于模拟器是依照真实硬件功能以软件方式实现的,因此对它可以进行任意修改,且对硬件和其上运行的应用程序均无侵入性与损害。因此,结合模拟器和故障注入技术应用于BIT软件测试是ー种可行方案。本发明的基本技术思想是将运行BIT软件的硬件电路板作为模拟对象,采用模拟器模拟的方法来解决BIT软件测试的瓶颈问题,发挥模拟器的优势,诸如对模拟对象的详细功能分析、通过模拟方法可注入的故障模式最多(使得测试用例全面,测试更充分)、对软硬件无任何侵入性。通过这些分析,认为基于模拟器的故障注入方法是可以解决BIT软件测试不充分问题的有效途径。下面对本发明的具体技术方案进行说明。如图I所示,为本发明模拟器所运行的层次示意图。底层平台称为宿主机(Host),将运行在模拟器上的软件平台称为客户机(Guest)。模拟器作为宿主机操作系统上的ー个应用程序,通过纯软件的方法将目标体系结构模拟出来,能够让原来运行在PowerPC上的目标软件(客户机操作系统或/与客户机应用程序)在宿主机操作系统上运行。模拟器要成功地模拟ー个真实的机器,必须能够模拟真实机器所能做的一切事情,从而使客户机能够正常地运行,并意识不到自己是在模拟器环境中,即与在真实硬件上运行无差別。如图2所示,本发明提供了面向BIT软件测试的具有处理器故障注入的模拟器,是对现有的模拟器进行了改进,増加了如下功能模块正常功能模拟模块I :对处理器、存储器、外围设备等元器件的正常行为进行功能级模拟;对于处理器正常行为的模拟包括模拟指令正确执行,对处理器主要功能単元寄存器、逻辑运算单元、中断控制器等进行功能级模拟。模拟指令正确执行,就是保证处理器从存储器中取出指令,并正确执行指令。对处理器的模拟具体实现方法是对处理器指令集进行模拟执行,将源指令代码以基本块为粒度进行组织,按需动态地读取ニ进制源指令代码基本块,并进行翻译,将翻译好的目标代码存放在代码缓存中,然后执行目标代码。
故障行为模拟模块2 :结合处理器故障模式,模拟故障发生时的行为表现;故障行为模拟模块根据故障发生的行为表现,构造相应的故障模拟函数,进行各种故障模式的故障行为模拟。对于寄存器或ALU操作数出错类故障,故障模拟函数的实现方法是产生相应的故障掩码与寄存器正常值作与/或/异或操作,之后写回发生故障的寄存器,造成数据错误;对于运算错误及预处理错误故障,故障模拟函数的实现方法是依照相应故障行为,造成逻辑运算过程或结果出错。故障注入模块3 :接收故障模型解析模块4解析得到的故障序列,在模拟器运行遇到某个故障观察点时被调用,故障注入模块3在当前测试的故障序列中,查找具备触发条件的,且与当前故障观察点对应的故障模式相匹配的故障,如果查找到相应的故障,则注入相应的故障。故障模型解析模块4 :对XML语言描述的故障序列文件进行解析,先进行语法分析,然后进行语义分析,最后得到模拟器识别的故障序列。模拟器识别的故障序列采用C语言表示,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一故障模式 的待注入故障构成单向链表结构。外围交联环境仿真模块5 :由于模拟对象(即BIT软件运行环境)不是一块独立的电路板,而是整个航空电子设备中的一部分,故而需要对其与外围环境的交联加以模拟。模拟外围环境激励与模拟器的响应,还要模拟模拟器对外输入输出。如图7所示,本发明的面向BIT软件测试的处理器故障注入方法的包括如下九个步骤。步骤I :对处理器类故障模式进行分析,建立处理器故障模式库。处理器类故障模式分析(Failure Mode Analysis),是指分析模拟对象的故障模式的影响和可能的故障模拟方法,选出可以在模拟器中实现注入的故障模式。在FMEA(Failure Mode and Effects Analysis,失效模式与影响分析)的基础上,根据开发板上处理器的具体情况,制定出故障模式库和相应的故障模拟方法。下面的表I 表7给出了七种故障模式,并给出了各故障模式的故障描述、故障位置、故障属性和故障发生场景。表I第一种故障模式
故障模式寄存器丟失搡作数_
故障描述一个关于某个寄存器的操作数发生丟失现象
故障位置寄存Il_
故障属性间敬故故障发生时间(绝对时间/相对时间)、持续時间
__IOms )、故障间隔时间(2s ~ 4s )、故障注入次数(3 ~ 6次)_
故障发生场景在程序运行中,对于寄存器R的某一表达式+搡作数发生丢失现象 __Rexpr=>no-op_表2第二种故障模式
权利要求
1.一种面向BIT软件测试的具有处理器故障注入的模拟器,将运行BIT软件的硬件电路板作为模拟对象,其特征在于,在模拟器中设置如下模块正常功能模拟模块、故障行为模拟模块、故障注入模块、故障模型解析模块和外围交联环境仿真模块; 正常功能模拟模块用于对处理器、存储器和外围设备的元器件的正常行为进行功能级模拟;对处理器的模拟实现方法为对处理器指令集进行模拟执行,将源指令代码以基本块为粒度进行组织,按需动态地读取二进制源指令代码基本块,并进行翻译,将翻译好的目标代码存放在代码缓存中,然后执行目标代码; 故障模型解析模块用于对当前测试的采用XML语言描述的故障序列文件进行解析,得到采用C语言表示的模拟器识别的故障序列,所解析得到的故障序列,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一故障模式的待注入故障构成单向链表结构; 故障注入模块接收故障模型解析模块解析得到的故障序列,在模拟器运行遇到某个故障观察点时被调用,故障注入模块在当前测试的故障序列中,查找具备触发条件的,且与当前故障观察点对应的故障模式相匹配的故障,如果查找到相应的故障,则注入相应的故障; 故障行为模拟模块根据故障发生的行为表现,构造相应的故障模拟函数,进行各种故障模式的故障行为模拟;对于寄存器或ALU操作数出错类故障,故障模拟函数的实现方法是产生相应的故障掩码与寄存器正常值作与/或/异或操作,之后写回发生故障的寄存器,造成数据错误;对于运算错误及预处理错误故障,故障模拟函数的实现方法是依照相应故障行为,造成逻辑运算过程或结果出错; 外围交联环境仿真模块用于模拟外围环境激励与模拟器的响应,以及模拟模拟器对外的输入和输出。
2.根据权利要求I所述的模拟器,其特征在于,该模拟器还包括图形用户界面模块,图形用户界面模块包括如下子模块 电路板图形化模块以图形化的方式向用户展示模拟对象; 故障建模模块以图形化的方式向用户提供建模接口,用户在该模块的界面建立故障模型,并生成相应的采用XML语言描述的故障模型序列文件; 模拟器控制模块提供对模拟器故障注入试验过程的控制功能,包括模拟器启动、暂停和终止;还提供对试验配置文件的控制功能; 信息收集显示模块对模拟器中的故障模型序列及运行结束后的故障注入结果进行回收,并且提供存储和显示的功能。
3.一种基于权利要求I所述的模拟器的面向BIT软件测试的处理器故障注入方法,其特征在于,将运行BIT软件的硬件电路板作为模拟对象,然后进行如下步骤 步骤I :对处理器类故障模式进行分析,建立处理器故障模式库; 步骤2 :从处理器故障模式库中选取符合测试目标的故障模式,并定义相应故障模式下的故障,并对各故障建立故障模型,将所建立的故障模型写入故障模型序列文件中;所述的故障模型序列文件为用XML语言描述的文件;所述的对各故障建立故障模型,是提取故障的6个特征来建立故障模型,6个特征为元器件,故障位置,故障模式,故障参数,故障触发方式和故障时间;步骤3 :模拟器读入故障模型序列文件,经过故障模型解析模块解析为模拟器识别的故障序列,然后将故障序列输入到故障注入模块中;所述的模拟器识别的故障序列,是用C语言表示的,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一故障模式的待注入故障构成单向链表结构; 步骤4 :模拟器对处理器进行模拟,当遇到故障观察点时,执行步骤5 ;所述的模拟器对处理器进行模拟,就是模拟器对处理器指令集进行模拟执行,将源指令代码以基本块为粒度进行组织,模拟器动态地、按需要地读入二进制源指令代码基本块,并进行翻译,将翻译好的目标代码存放在模拟器开辟的代码缓存中,然后执行目标代码; 步骤5 :故障注入模块查询输入的故障序列,判断是否有匹配当前故障观察点对应的故障模式的故障,若有执行下一步骤,若无,转步骤4执行; 步骤6 :判断步骤5匹配得到的各故障的触发条件是否具备,若都不具备,转步骤4执行,若存在具备触发条件的,查找所有具备触发条件的故障,然后执行步骤7 ; 步骤7 :故障注入模块注入故障,为满足故障触发条件的故障进行触发条件设置,并适时触发故障; 步骤8 :模拟器在触发某个故障后,通过故障行为模拟模块调用相应的故障模拟函数实现故障的行为模拟;对于寄存器或ALU操作数出错类故障,故障模拟函数的实现方法是产生相应的故障掩码与寄存器正常值作与/或/异或操作,之后写回发生故障的寄存器,造成数据错误;对于运算错误及预处理错误故障,故障模拟函数的实现方法是依照相应故障行为,造成逻辑运算过程或结果出错; 步骤9 :监控模拟器运行及故障注入过程,回收执行结果。
4.根据权利要求3所述的处理器故障注入方法,其特征在于,所述的步骤5具体是,故障注入模块,根据故障模式的哈希值,查询哈希表,取出与该故障模式对应的故障链表。
5.根据权利要求3所述的处理器故障注入方法,其特征在于,所述的步骤6中判断故障的触发条件是否具备,是根据该故障模型的故障参数,查找该故障的触发条件是否满足。
6.根据权利要求3所述的处理器故障注入方法,其特征在于,所述的步骤7中故障注入模块注入故障,具体在模拟器运行过程中的故障注入的基本的触发方式有 (1)时间触发当模拟器计时器执行到指定时刻或者时间范围,故障注入模块对当前总线周期进行故障注入;时间触发用来模拟间歇故障或者瞬时故障; (2)访问触发当对处理器某部件进行访问时,触发故障注入设备进行故障注入动作执行; (3)指令触发当处理器执行特定指令时,触发故障注入模块进行故障注入动作的执行; 在故障注入过程中,以上几种触发方式单独使用,或者组合使用,采用几种触发条件相与、相或的方式来控制故障注入触发。
7.根据权利要求3所述的处理器故障注入方法,其特征在于,所述的步骤9,通过命令行形式监控模拟器的运行,监控内容包括查看CPU运行状态、寄存器集状态、块设备状态、物理地址空间分配、内存某地址值、查看故障序列、以及即时触发故障并查看结果。
全文摘要
本发明提出一种面向BIT软件测试的处理器故障注入方法及其模拟器,将运行BIT软件的硬件电路板作为模拟器的模拟对象。本发明在模拟器中新增模拟处理器、存储器等正常功能的正常功能模拟模块,解析故障序列文件的故障模型解析模块,匹配代注入故障的故障注入模块,故障行为模拟模块和外围交联环境仿真模块。本发明方法通过建立故障模式库,编写并解析XML故障序列文件为模拟器可识别的故障序列,在模拟器模拟遇到故障观察点时查找相应故障并注入,当触发故障时进行故障模拟。本发明注入的故障模式种类较全,充分覆盖了处理器的每种故障发生下的测试用例,可对电路板级BIT软件进行较为充分的测试,而只有进行了充分测试的BIT软件。
文档编号G06F11/36GK102760098SQ20121019438
公开日2012年10月31日 申请日期2012年6月13日 优先权日2012年6月13日
发明者张茂帝, 徐军, 徐萍, 李毅, 王自力, 高小鹏 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1