● 摘要
随着软件应用领域的拓宽和应用程度的深入,以及软件本身的规模和复杂度的增长,软件质量无论在学术界,还是在工程界都受到了充分的关注和重视。作为软件质量保证手段之一的软件测试也逐渐受到更多组织和机构的重视。在软件测试整个生命周期中,回归测试是一种用来确保改变不会给软件当下行为带来负面影响的软件测试活动并占据了整个测试过程中相当大的比重。也是当下国内独立的第三方软件测评中心所从事的主要测试活动。然而由于执行回归测试具有高成本高投入的特点,如何以一种有效率且高效的(efficient and effective)方式对软件产品进行高质量的回归测试,一直是业界迫切关注的一个问题。 围绕回归测试,长期以来在测试选择,修改识别,测试执行以及测试集的维护等几个层面展开了广泛深入的研究。但是,当把由研究者和工程实践者开发的技术真正应用于工程实践上并进一步将其大规模投入到工业中时,仍然存在大量难以真正有效应用的问题与挑战。近年来人们越来越意识到测试过程具有的社会属性,以及在此过程中测试人员等相关人员起到的重要作用,目光不再仅仅锁定在被测软件这一研究对象,也开始考虑与测试活动紧密相关的人这一要素,尝试从一个新的视角来探究回归测试过程。如何以一种系统的方式有效提取回归测试过程信息并在此基础上提供一种途径来辅助测试人员做出测试过程中的相关测试决策,是本文研究的重要目标。 随着经验软件工程(empirical software engineering)的兴起,经验研究方法得到前所未有的重视并在软件工程很多研究领域得到进一步的应用。而经验研究方法从收集和分析数据的视角一般分为定量的方法和定性的方法。因回归测试过程涉及与人紧密相关的特性以及在决策活动中存在不确定的因素这一特质,定性方法中的扎根理论(grounded theory)与基于概率推理的贝叶斯网络将是本文研究的重要理论基础。 本文首先对回归测试研究的现状进行了深入的讨论,在此基础上分析了当前回归测试所面临的主要问题并定义了一个多维视角的回归测试过程概念。由此为出发点,本文进行了基于扎根理论与贝叶斯网络的回归测试过程建模技术研究。扎根理论研究方法是一种基于归纳的定性分析技术,来描述研究对象及其变化规律,已经在软件过程改进、需求文档、测试成本及质量改进等研究领域中得到应用。贝叶斯网是一种结合图论和统计学原理,表达随机变量间概率不确定性的方法,近年来已经成为人工智能领域在不确定环境中进行知识表示和推理的一种有效工具,被应用于各种专家系统和诊断系统。 本文以扎根理论和贝叶斯网络为理论基础,以目前回归测试研究所存在的问题为出发点,在第三方软件测评中心的回归测试流程实践背景前提下,对回归测试过程建模技术进行了深入的研究,主要工作包括: 1.基于以往对回归测试各种定义,结合实际测试中回归测试呈现的特点,从经验软件工程的视角切入,给出了本文回归测试过程的定义,为下一步研究回归测试过程的数据提取和建模提供了理论依据。 2.针对“在实际测试过程中如何有效采集过程中产生的各式数据,从中发掘出隐藏在数据背后的有用信息”这一问题,深入研究了扎根理论这一定性方法,并结合半结构化访谈方法,提出了一种系统的基于扎根理论与半结构化访谈的过程数据收集与分析方法。之后,结合两个实际案例研究,从宏观与微观两个层面分别展示了此方法的具体实现。 3.针对测试人员在测试过程中做出相关决策时存在的不确定性因素这一特性,在上一部分的研究基础上,提出了运用扎根理论与贝叶斯网络来描述存在多种不确定性因素影响的软件测试过程的基本思路,构建了一个测试过程有效性预测的定性模型。将面向对象的思想引入到模型整体结构的构建之中,并在特征变量确定环节,通过扎根理论的编码识别构建模型的变量以及变量可能存在的状态空间;在网络结构确定环节,通过因果关系习语(cause-consequence idiom)与定义习语(definitional idiom),分别用来描述不同节点之间的关系,以及控制在构建节点概率时引出概率的数量。而在模型实例化阶段,基于本文构建的模型节点均是具有等级性质的节点(ranked node),将截尾正态分布引入其中,根据所需构建相应的概率分布表。 4.结合第三方软件测评中心的真实数据,针对上述构建的模型,进行了场景分析以及敏感性分析的相关实证案例研究。 案例研究的实验表明,本文在改进和融合回归测试,扎根理论以及贝叶斯网络这三个领域的相关努力不仅具有研究价值,而且具有一定的实用价值,本文的研究成果同样适用于软件测试过程乃至整个软件工程领域相关活动,区别在于所选取的研究过程的具体场景。