关联缺陷及其应用研究
【摘要】:
计算机软件技术的发展大大促进了计算机应用领域的发展,尤其是一些关键应用系统的开发和使用(如银行信贷系统、ATM系统等),软件质量已经成为软件产品最重要的属性之一。软件缺陷(Defect)普遍存在并具有极大危害性,不仅会造成重大的经济损失,甚至危及人身安全。提高软件质量,加强软件产品的可靠性,对缺陷进行检测、评估和预防一直是计算机领域内的主要研究内容之一。
而在实际测试过程中,很多软件缺陷并不是相互独立的,它们存在着某种关联关系,即失效关联(Failure Correlation)。从缺陷自身方面来分析,造成这种关联关系存在是因为它们之间存在控制流和数据流所综合导致的,而数据流的关联在缺陷的检测和评估方面很少考虑。
关联缺陷的存在很大程度上是由于缺陷的检测能力被其它缺陷所屏蔽,它不仅影响软件测试结果,还扭曲了软件可靠性评估模型的评估结果。软件关联缺陷是一种普遍存在的现象,结合国家863项目的研究,我们从软件缺陷的自身角度来分析软件检测以及可靠性评估失效的原因,对关联缺陷进行了详细分析。在此基础上将关联缺陷应用于软件可靠性评估和软件自动化测试中,实验表明在很大程度上提高了的软件缺陷检测能力和软件可靠性评估的准确度。
在软件可靠性评估方面,为了在软件可靠性评估时获得更符合实际缺陷数量的预测值,我们将广义关联应用于现有可靠性评估模型的改进上,并提出了P-NHPP(Phase Nonhomogeneous Poisson Process)可靠性模型。P-NHPP是对NHPP模型的一种改进,将数据关联考虑至软件可靠性模型的改进上,针对缺陷与缺陷相互独立的基本假设,构建P-NHPP模型。P-NHPP模型从可靠性评估的数据采集入手,将关联缺陷应用于G-O模型中,并通过估计均方误差值和预测平均误差进行对比分析,实验分析表明,P-NHPP具有较好的拟合效果和预测能力。
在软件自动化测试方面,我们引入变异测试技术。作为衡量测试用例集完备性的测试策略,变异测试是一种“面向缺陷”的单元测试技术,主要用来生成完备的测试用例集。其中面向路径测试数据生成技术通过约束系统构造和求解过程实现用例集生成,是一种高效的测试用例生成技术。但目前大部分面向路径测试用例生成技术只考虑了程序语句间的控制依赖,即通过对控制流图的分析来构建约束系统,而忽略了语句间的数据依赖对约束系统的影响。充分考虑两种依赖关系,本文针对域削减的测试数据生成技术进行了改进,提出了一种考虑数据依赖的域削减方法DRD(Domain Reduction Approach with Data Dependence)。DRD充分考虑关联产生的数据依赖,将数据依赖加入程序执行路径中,形成考虑数据关联的PDD(Path with Data Dependence),在此基础上构建并求解约束系统,实验表明,这种方法虽然不一定能找到测试数据最优解,但在测试数据生成的成功率和执行效率上都有较大程度的提高。