background image

故障注入技术在软件测试中的应用

  摘要:为了准确地利用故障注入技术对软件容错进行评测,利用

“动态生成一静态存储一

动态触发

”的故障注入模型,结合软件测试的特点,在保证评测准确性的前提下,解决了容

错机制导致的故障需求复杂、故障生成困难等问题,实现了一个较为理想的故障注入测试方
法在软件测试中的应用。

 

  

 关键词:故障注入;软件测试;容错 

  

 一、前言 

  

 随着计算机软件在航天关键领域应用的日益广泛,其可靠性也变得越来越重要。容错

技术从利用硬件的冗余,发展到现在利用软件、时间、信息等方面的容错处理机制,实现了
对系统运行时所可能出现错误的有效、合理、可靠的处理,是保证系统可靠性的重要技术。

 

  

 本文在前人提出

“动态生成--静态存储--动态触发”故障注入模型的基础上,结合软件

测试的特点,实现了一个较为理想的故障注入测试方式。

 

  

 二、故障注入的概念 

  

 故障注入是指按照选定的故障模型, 用人工的方法有意识地产生故障并施加于特定的

目标系统中,以加速该系统的错误和失效的发生,同时采集系统对所注入故障的反应信息
并对回收信息进行分析,从而提供有关结果的过程。

 

  

 故障注入可分为软件故障注入、硬件故障注入和仿真故障注入。与其他两种方法相比,

软件故障注入有实现简单、灵活、花费少、工作量小、评测范围大、对原系统无损害等特点,有
广泛的应用前景。

 

  

 三、软件故障注入技术分析 

  

 软件故障注入是通过软件方法,在机器指令可以访问到的范围内,通过修改硬件或软

件的状态变量或数据来模拟故障的产生,加速系统的失效。

 

  

 动态注入是在被测系统正常运行过程中,在特定的状态或条件下,通过一定的机制修

改被测系统的二进制映像,从而实现故障注入。由于注入故障前被测系统的二进制映像不被
改变,因此它能逼真地模拟被测系统的运行。另外,由于该种方式是根据被测系统的运行状
态或条件注入故障的,所以它具有灵活性。

 

  

 静态故障注入主要通过程序变异的方法,通过改变原程序,使被测系统文件静态的存

在错误,从而使其运行时出现故障。由于静态注入占用很少的系统资源,能够较好的保持系
统原来的时序,因此这种注入法有很好的优化性。

 

  

 因此,设计故障注入系统时,要把动态注入的逼真性、灵活性的特点和静态注入优化

性的特点结合起来,并尽可能的实现系统的可重用性。

 

  

 四、故障注入模型介绍 

  

 (一)模型概述。该模型由主机系统和目标机系统组成,它们通过某种方式(网络接

口、串口、并口)相联接,如图

1 所示。 

  

 图 1 故障注入模型 

  

 该故障注入模型中,主机系统负责生成故障,它可根据用户的需要灵活地生成各类故

障。目标系统负责运行变异的被测程序,并在适当的时候通过查询的方法从故障链表内提取
故障信息并触发故障。本模型中,将故障分为位置相关的故障和位置无关的故障两类。

 

  

 (二)模型的逻辑结构。基于以上设计思想,本模型在逻辑上可分为三个模块:故障

生成模块、通讯模块和目标系统模块。

 

  

 故障生成模块负责根据用户的需要灵活地提取或生成故障,通讯模块负责将故障生成

模块所生成的故障存储在故障链表内,目标系统模块负责运行被测系统并从故障链表内提
取各类故障信息并触发故障。