软件故障仿真:代表性与实用性
在软件开发和运行过程中,软件故障的研究至关重要。本文将深入探讨软件故障仿真的相关内容,包括现有方法的局限性、新的技术方案以及实验评估结果。
1. 研究背景与相关工作
软件故障的研究主要集中在软件开发阶段,如需求分析、规格说明、设计、编码、测试等环节。许多研究致力于改进软件开发方法,特别是软件测试、软件可靠性建模和软件可靠性风险分析。在软件开发阶段,故障历史、操作概况和其他过程度量被用于软件可靠性模型,以估计软件的可靠性并预测软件故障,进行风险评估。
然而,产品部署后的运行阶段的软件可靠性研究与开发阶段有很大不同。运行环境和软件成熟度不同,软件可靠性应在整个系统的背景下进行研究,而不仅仅是在特定应用的背景下。收集软件故障数据的难度以及需要考虑系统架构(硬件和软件)而不仅仅是软件模块,导致运行阶段软件故障的研究工作相对较少。但研究实际软件故障的影响对于我们的工作至关重要,因为这正是我们希望通过故障注入来模拟的故障类型。
在故障注入领域,有多种不同的方法,包括基于特定硬件、系统仿真和软件的方法。其中,软件实现的故障注入(SWIFI)技术因其低复杂度和低开发成本而变得非常流行。SWIFI的基本思想是通过某种方式中断正在执行的应用程序(通常是插入软件陷阱或在跟踪模式下执行应用程序),并执行特定的故障注入代码,通过在系统的不同部分(如处理器寄存器、内存或应用程序代码)插入错误来模拟(硬件)故障。一些常见的SWIFI工具包括FERRARI、FTAPE、Xception和Goofi等。
此外,突变测试是一种特定形式的故障注入,通过对程序进行小的语法更改来创建不同版本的程序(突变体)。突变测试可被视为一种静态故障注入技术,与传统