基于故障传播路径覆盖的软件测试

发布日期:2019年9月19日
基于故障传播路径覆盖的软件测试 基于故障传播路径覆盖的软件测试

本内容试读结束

下载后可阅读完整内容,立即下载

关联缺陷具有不确定性,现有的一些软件测试方法与测试策略难以发现此类缺陷。本文提出了一种面向故障传播路径覆盖的软件测试方法,该方法在分析经验与历史数据的基础上,对缺陷特征和类型进行推测和归纳,从而培育出能够诱发这些缺陷的种子缺陷,并将其注入到软件代码中。通过设计算法,找到能够激活这些种子缺陷的测试用例,再以得到的测试用例作为输入,激活缺陷并覆盖其传播路径。最终在传播路径上发现潜在的关联缺陷。

如今,软件在计算机系统中起着日益重要的作用,而随着人们对软件的依赖性越来越强,软件的可靠性问题在软件工程领域的重要性显得愈发明显。因此,软件测试在软件的生命周期中所占的比重越来越高。在对软件测试的过程中有学者发现,软件缺陷之间存在某种关联关系。

Katerina 和Trivedi [1]引入了失效关联的概念,认为在实际测试过程中软件失效不是相互独立的,并且提出了一种Markov 更新模型来对有失效关联的软件可靠性进行建模。Chen [2]等人认为测试回合不是相互独立的, 在此基础上提出了一种二进制Markov 过程模型, 用来预测随机测试策略发现的软件失效数。

Bishop [3]等人指出可以用失效屏蔽效应来解释软件失效之间的关联关系,并可以通过适当的软件设计来杜绝失效关联。Mehmet [4]则根据失效关联/分支覆盖关联定义了一种Bayesian 测试停止规则,以决定何时停止测试。

在软件缺陷层面,景涛[5]提出了关联缺陷的定义,并将关联缺陷应用于软件检测过程中,提出了一种缺陷放回的测试方法来剔除关联缺陷。但是没有对缺陷之间关联的形式进行建模,也没有提出一种针对关联缺陷的测试方法。刘新忠[6]进一步推进了关联缺陷的研究,他认为关联缺陷的存在很大程度上是由于缺陷的检测能力被其它缺陷所屏蔽,并且引入了关联缺陷的P-NHPP 模型来对关联缺陷进行检测和评估,但是对这类缺陷的预测和最后的验证没有系统的算法和方法。

在测试方法层面,宋想[7]提出了一种基本路径覆盖的测试用例生成方法,有效解决了软件测试中部分路径不可达的问题,却没有考虑关联缺陷并不仅存在于某一条基本路径,因此基于基本路径覆盖所生成的测试用例会约束缺陷检测率的提高。

综上所述,针对这种缺陷的预测,我们将使用引入种子缺陷的方法,来诱发与之相关联的缺陷,使其成为可测的故障;而针对最后的验证我们将提出一种基于故障传播路径覆盖的测试方法,利用智能算法测试用例自动生成的功能不断尝试输入,尽可能多地覆盖故障传播路径,在这一过程中发现更多的缺陷。最后,设计对比实验,验证相比较全路径覆盖测试法和基本路径覆盖测试法,基于故障传播路径覆盖的缺陷测试法可以用最少的测试用例发现最多的缺陷数量。



相关标签