论文部分内容阅读
可靠性是计算机系统的重要指标之一,在航天、航海、金融、交通、核工业控制等很多任务或时间关键性领域中,一旦在使用中出现故障后果不堪设想,可能造成巨大的经济损失和人员伤亡。因此对这些系统在投入使用之前一定要进行充分的测试,消除系统内可能存在的故障和漏洞,同时也要在使用之前模拟未来使用环境中可能出现的环境扰动,如常见的单粒子翻转故障,来对系统的可靠性等指标进行充分的评测,根据测试结果采用必要的设计和防护方法,保证其满足可靠性要求。故障注入技术作为一种可靠性评测手段日益受到人们的重视。故障注入是通过人为地产生并引入故障到目标系统中加速系统产生错误和失效,然后通过分析故障引入后的系统行为反应,实现对目标系统可靠性进行评测的技术。与传统可靠性评测技术相比,它具有无需建立和求解复杂的系统模型,而且实验时间短、结果精度高等优点。故障注入技术有硬件实现的故障注入、模拟实现的故障注入和软件实现的故障注入三种。与前两种方法相比,基于软件实现的故障注入具有操作简便、开发成本低廉,不会对目标系统造成损伤等优点。本文主要研究了软件故障注入技术,将软件故障注入应用到软件测试的不同环节,分别研究了变异测试技术,基于中间层的故障注入技术与基于空间的故障注入技术,并设计了软件故障注入工具。首先,根据各类故障模型利用突变理论对软件故障注入进行了建模及分析,并设计了故障注入策略算法。这种策略通过对故障模型的注入强度进行比较与分类,实现了根据注入强度进行故障注入实验的故障注入算法,为有效的故障注入实验实施提供依据。研究讨论了面向程序变异测试技术的特点及发展规律,设计并提出了第一个关于Tcl的变异分析原型工具Tester,目前实现了3大类共13个运算符的变异算子,利用其进行了变异分析实验,实验结果标明Tester能有效的实施变异分析测试。研究了面向自动机的变异,面向自动机的变异主要目的是评测测试用例生成方法的有效性,这比面向程序的变异技术更进一步。我们设计了11种变异算子变异自动机,利用变异后的自动机评测测试用例生成方法,主要评测了TT方法与W方法。研究了面向CTL逻辑说明的变异,面向CTL逻辑说明的变异可以利用变异测试有效地生成测试用例。前面两者是利用变异测试评测测试用例的充分性及测试用例生成方法的有效性,此种变异则是利用变异测试直接生成测试用例,这里需要利用SMV模型检验器的反例生成能力。我们设计了10种变异算子变异CTL逻辑说明。这些我们都通过实验说明了提出的变异算子的有效性。研究了基于中间层的软件故障注入。对于模块与环境之间的集成整合,Unix环境下研究了利用FIG实施的中间层故障注入技术。Windows环境下研究了利用detours库截获系统调用,对截获的调用注入故障,模拟各种环境扰动故障,通过这种方式评测模块面对可能环境故障的可恢复性与可靠性。对于模块之间的整合,研究利用软件故障注入实现的模块级和信号级的可靠性评测。目前,对于模块级的可靠性评测可以利用的理论有单调关联系统理论,本文对此理论作了介绍,指出了将其应用于利用软件故障注入评测系统可靠性方面的不足,对于此种情况提出了一种基于软件故障注入技术的可靠性评测方法。针对星载软件系统因宇宙射线和环境扰动而产生的软件错误及错误传播问题,研究了一种错误传播分析方法,利用此方法可从信号和模块两个层次评测软件的可靠性,并根据结果对系统信号或模块的脆弱性进行分析,找出系统较为脆弱的信号与模块及最可能传播错误的信号传播路径;定义了信号与模块的错误传播率、暴露率等参数,并设计了参数的计算方法;提出了错误传播图的构建算法。研究了基于存储空间注入技术的软件故障注入实验与分析中存在的问题。提出了并设计了两种基于空间注入技术的注入方式,并利用它们分别进行了故障注入实验,通过实验着重分析了注入地址不同的空间分布对实验产生的影响,设计了实验记录格式并规范化了实验数据的分析和计算。完善了软件故障注入理论,提出了注入强度λ的概念,证明了所提出的两种注入方式的故障计数过程本质是泊松过程。详细讨论并分析了基于不同空间地址概率分布的故障注入实验问题,得出结论,对于空间注入技术实施的故障注入实验总存在一种相对较优的注入方案。这里研究内容可对利用软件故障注入对软件系统进行可靠性分析的工作提供帮助。介绍了我们设计的单计算机软件故障注入工具SOFI,本章详细讨论了研究开发的基于软件故障注入技术的单计算机系统可靠性评测系统,包括该系统的主要功能模块及设计中值得注意的问题等,此外,还给出了应用该评测系统所进行的故障注入实验及可靠性评测实验,包括基于空间的注入实验和基于中间层的注入实验。实验表明了SOFI工具的灵活性与有效性。