故障注入技术在软件测试中的应用
摘要:为了准确地利用故障注入技术对软件容错进行评测,利用
“动态生成一静态存储一
动态触发
”的故障注入模型,结合软件测试的特点,在保证评测准确性的前提下,解决了容
错机制导致的故障需求复杂、故障生成困难等问题,实现了一个较为理想的故障注入测试方
法在软件测试中的应用。
关键词:故障注入;软件测试;容错
一、前言
随着计算机软件在航天关键领域应用的日益广泛,其可靠性也变得越来越重要。容错
技术从利用硬件的冗余,发展到现在利用软件、时间、信息等方面的容错处理机制,实现了
对系统运行时所可能出现错误的有效、合理、可靠的处理,是保证系统可靠性的重要技术。
本文在前人提出
“动态生成--静态存储--动态触发”故障注入模型的基础上,结合软件
测试的特点,实现了一个较为理想的故障注入测试方式。
二、故障注入的概念
故障注入是指按照选定的故障模型, 用人工的方法有意识地产生故障并施加于特定的
目标系统中,以加速该系统的错误和失效的发生,同时采集系统对所注入故障的反应信息
并对回收信息进行分析,从而提供有关结果的过程。
故障注入可分为软件故障注入、硬件故障注入和仿真故障注入。与其他两种方法相比,
软件故障注入有实现简单、灵活、花费少、工作量小、评测范围大、对原系统无损害等特点,有
广泛的应用前景。
三、软件故障注入技术分析
软件故障注入是通过软件方法,在机器指令可以访问到的范围内,通过修改硬件或软
件的状态变量或数据来模拟故障的产生,加速系统的失效。
动态注入是在被测系统正常运行过程中,在特定的状态或条件下,通过一定的机制修
改被测系统的二进制映像,从而实现故障注入。由于注入故障前被测系统的二进制映像不被
改变,因此它能逼真地模拟被测系统的运行。另外,由于该种方式是根据被测系统的运行状
态或条件注入故障的,所以它具有灵活性。
静态故障注入主要通过程序变异的方法,通过改变原程序,使被测系统文件静态的存
在错误,从而使其运行时出现故障。由于静态注入占用很少的系统资源,能够较好的保持系
统原来的时序,因此这种注入法有很好的优化性。
因此,设计故障注入系统时,要把动态注入的逼真性、灵活性的特点和静态注入优化
性的特点结合起来,并尽可能的实现系统的可重用性。
四、故障注入模型介绍
(一)模型概述。该模型由主机系统和目标机系统组成,它们通过某种方式(网络接
口、串口、并口)相联接,如图
1 所示。
图 1 故障注入模型
该故障注入模型中,主机系统负责生成故障,它可根据用户的需要灵活地生成各类故
障。目标系统负责运行变异的被测程序,并在适当的时候通过查询的方法从故障链表内提取
故障信息并触发故障。本模型中,将故障分为位置相关的故障和位置无关的故障两类。
(二)模型的逻辑结构。基于以上设计思想,本模型在逻辑上可分为三个模块:故障
生成模块、通讯模块和目标系统模块。
故障生成模块负责根据用户的需要灵活地提取或生成故障,通讯模块负责将故障生成
模块所生成的故障存储在故障链表内,目标系统模块负责运行被测系统并从故障链表内提
取各类故障信息并触发故障。