多测师12 发表于 2023-2-28 10:12:06

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

  故障注入技术在软件测试中的应用
  为了准确地利用故障注入技术对软件容错进行评测,利用“动态生成一静态存储一动态触发”的故障注入模型,结合软件测试的特点,在保证评测准确性的前提下,解决了容错机制导致的故障需求复杂、故障生成困难等问题,实现了一个较为理想的故障注入测试方法在软件测试中的应用。
  关键词:故障注入;软件测试;容错
  一、前言
  随着计算机软件在航天关键领域应用的日益广泛,其可靠性也变得越来越重要。容错技术从利用硬件的冗余,发展到现在利用软件、时间、信息等方面的容错处理机制,实现了对系统运行时所可能出现错误的有效、合理、可靠的处理,是保证系统可靠性的重要技术。
  本文在前人提出“动态生成--静态存储--动态触发”故障注入模型的基础上,结合软件测试的特点,实现了一个较为理想的故障注入测试方式。
  二、故障注入的概念
  故障注入是指按照选定的故障模型, 用人工的方法有意识地产生故障并施加于特定的目标系统中,以加速该系统的错误和失效的发生,同时采集系统对所注入故障的反应信息,并对回收信息进行分析,从而提供有关结果的过程。
  故障注入可分为软件故障注入、硬件故障注入和仿真故障注入。与其他两种方法相比,软件故障注入有实现简单、灵活、花费少、工作量小、评测范围大、对原系统无损害等特点,有广泛的应用前景。

https://www.duoceshi.cn/uploads/ueditor/20230227/1-23022F91945b8.jpg
  三、软件故障注入技术分析
  软件故障注入是通过软件方法,在机器指令可以访问到的范围内,通过修改硬件或软件的状态变量或数据来模拟故障的产生,加速系统的失效。
  动态注入是在被测系统正常运行过程中,在特定的状态或条件下,通过一定的机制修改被测系统的二进制映像,从而实现故障注入。由于注入故障前被测系统的二进制映像不被改变,因此它能逼真地模拟被测系统的运行。另外,由于该种方式是根据被测系统的运行状态或条件注入故障的,所以它具有灵活性。
  静态故障注入主要通过程序变异的方法,通过改变原程序,使被测系统文件静态的存在错误,从而使其运行时出现故障。由于静态注入占用很少的系统资源,能够较好的保持系统原来的时序,因此这种注入法有很好的优化性。
  因此,设计故障注入系统时,要把动态注入的逼真性、灵活性的特点和静态注入优化性的特点结合起来,并尽可能的实现系统的可重用性。
  四、故障注入模型介绍
  (一)模型概述。该模型由主机系统和目标机系统组成,它们通过某种方式(网络接口、串口、并口)相联接。
  该故障注入模型中,主机系统负责生成故障,它可根据用户的需要灵活地生成各类故障。目标系统负责运行变异的被测程序,并在适当的时候通过查询的方法从故障链表内提取故障信息并触发故障。本模型中,将故障分为位置相关的故障和位置无关的故障两类。
  (二)模型的逻辑结构。基于以上设计思想,本模型在逻辑上可分为三个模块:故障生成模块、通讯模块和目标系统模块。
  故障生成模块负责根据用户的需要灵活地提取或生成故障,通讯模块负责将故障生成模块所生成的故障存储在故障链表内,目标系统模块负责运行被测系统并从故障链表内提取各类故障信息并触发故障。
  五、模型在软件测试中的应用
  目标系统模块是模型的重点,它主要完成两个功能:运行被测软件和触发故障。目标系统在逻辑结构上可分成两部分:变异的目标系统和一个循环任务。变异的目标系统是为了测试而进行插装后的被测软件,负责运行被测软件并触发位置相关的故障;循环任务是用来循环检测故障链表内是否有位置无关的故障信息,如果有则触发该故障,这样,就可以判断故障存储区内是否有该故障并进行相应处理。
  故障注入系统生成的故障输入数据可以分成不同的测试序列,每个序列都是一组发送给目标程序的测试数据。输入数据包含的数据量和类型将决定故障注入系统执行何种测试。根据测试的需求,使用相适应的数据生成方法生成测试需要的测试序列。
  将生成的故障数据,通过接口传送给被测软件,在目标机上运行时,被测软件调用故障数据。根据故障数据注入后,程序的运行情况,目标机通过通讯模块将测试的信息提交给主机,供测试人员监视。
  根据测试过程中,通过对软件的故障注入以及采集的数据进行分析和评估。主要从控制容错性和数据容错性两个方面进行软件的评估。
  六、结束语
  该软件评测技术是从嵌入式软件的可靠性和故障注入模型出发,依据故障注入模型,设计了如何实现将故障注入技术应用于软件测试的过程中。而且该模型作为一个故障注人的通用模型,能够实现故障注入的优化性、灵活性和可重用性。


页: [1]
查看完整版本: 故障注入技术在软件测试中的应用