基于错误传播概率网络的软件回归测试用例选择
【摘要】:软件测试是保证软件质量的重要方法,回归测试是软件测试和维护过程中的重要过程。传统的回归测试方法开销较大,如何提高回归测试的效率和减少成本,测试用例的选择就成为一个需要解决的问题。软件内部结构对软件质量有重要影响。因此,对软件结构进行量化分析,研究软件缺陷在内部元素间的传播,可以反映软件质量,进而指导回归测试用例的选择。本文提出了一种选择回归测试用例的方法,根据加权类依赖网络构造的错误传播概率网络来确定软件中修改部分的影响范围,选择测试用例对程序进行重新测试。首先,面向对象软件被抽象成加权的复杂网络——加权类依赖网络和加权特性(包括属性、方法)依赖网络。其中:网络中的节点表示软件中的元素(类、属性、方法),它们之间的依赖关系被抽象成有向边,方向代表依赖和被依赖关系,边上的权值代表缺陷在节点之间传播的概率。加权类依赖网络通过遍历加权特性依赖网络,由特性之间的依赖关系构造类之间的依赖关系,计算特性的直接和间接影响集合来确定类网络边上的权值,即缺陷的直接传播概率。随后分析缺陷在该加权类依赖网络中的传播过程,通过遍历该网络,计算类的直接和间接错误影响概率来构建类层次上的错误概率传播网络,并提出了类的影响度(CI)指标。CI较大的类发生错误的影响范围较广,应当作为软件测试的重点测试对象。然后,分析修改前后软件版本的变化来定位修改部分所在的类,在错误概率传播网络中找到类所在的位置,以及依赖于该类的类节点和边的集合,即该类的波及范围,作为回归测试的目标。在原有的测试用例中选择可以覆盖这些类节点和边集合的测试用例,即为所需的回归测试的最小用例集合。由于测试重点是修改的类及其影响集合,可以大大提高回归测试效率,减少冗余的测试用例数目。实例研究表明,通过对面向对象软件UDoc的连续版本的分析,计算加权类依赖网络和错误概率传播网络,寻找被修改的类的影响集合,选择可以覆盖影响集合的测试用例,验证了可以用较少的测试用例达到覆盖较全面的回归测试效果。