一种基于模糊聚类的多错误定位方法

文档序号:8223402阅读:155来源:国知局
一种基于模糊聚类的多错误定位方法
【技术领域】
[0001] 本发明属于计算机技术领域,涉及软件测试技术中的错误定位,尤其是一次性对 多个错误进行定位,为一种基于模糊聚类的多错误定位方法。
【背景技术】
[0002] 在软件的测试过程中为了找出软件中的错误,有时候开发者要人工审查大量的测 试用例,判断其是否执行失败。然后通过审查执行失败的测试用例帮助找到软件中出错根 源,这个过程叫做错误定位。事实上,错误定位的过程是软件测试当中最消耗时间的环节之 〇
[0003] 在过去的十年当中,很多技术被引入到错误定位领域,针对错误定位方法的研究 取得了巨大的进展,其中最为广泛使用并且效果最好的方法是聚类分析程序执行剖面。
[0004] 聚类分析是一种大量的对象发现集群的多元分析方法,如一组执行剖面。每个执 行剖面的特征被一个属性值向量所标记。聚类分析的目的是划分具有很高的相似性的对象 在同一集群的集群,而差异性大的对象被放置在不同的集群。
[0005] 不足的是,许多错误定位技术都是基于一个不可靠的假设:程序中只有一个错误。 在实际情况中,多个错误导致一个测试用例的失败的例子经常发生,这意味着一个测试用 例可以定位多个错误。现有技术提到的应用在错误定位上的聚类技术都是"硬聚类",每个 元素只属于一个类簇,不仅无法对多个错误进行准确定位,而且会给错误定位结果带来误 差,使得结果不准确或者遗漏错误。事实上,在多个错误存在时,"硬类聚"是不可行的。软 件测试人员无法分析这种情况。传统的单错误定位方法有很大的局限性,软件测试当中非 常需要一种针对多错误程序来进行错误定位的新方法。

【发明内容】

[0006] 本发明要解决的问题是:在程序有多个错误的时候,传统意义上的错误定位技术 失效,定位结果不准确。然而,在实际应用当中,经常遇到多个错误包含在一个程序当中的 情况,这样的情况无法用传统的错误定位技术来定位错误。本发明要解决的就是在多错误 的情况下如何进行准确的错误定位。
[0007] 本发明的技术方案为:一种基于模糊聚类的多错误定位方法,程序当中存在至少 一个错误,使用模糊聚类技术对程序特征信息进行聚类,然后结合缺陷定位技术,依据聚类 结果对程序错误进行定位,包括以下步骤:
[0008] 1)对程序运行所有测试用例,收集执行剖面,执行剖面中的每一个属性都代表程 序当中的一个函数,将执行剖面用向量来表示,向量中的数值代表属性对应的函数是否被 调用;
[0009] 2)模糊聚类,采用FCM聚类方法,输入为由执行剖面得到的向量集合X、设定的类 簇数量c和距离函数,距离函数采用欧式距离;聚类算法最终返回一个关系矩阵,所述关系 矩阵的行表示某个执行剖面分别属于c个类簇的可能性,如果可能性大于设定的阈值,就 认为执行剖面属于这个类簇,一个执行剖面可以属于多个类簇;
[0010] 3)错误定位,使用Spectrum-Based错误定位技术来测试各个类簇,根据和测试用 例相关的函数的四个覆盖参数来进行计算,四个覆盖参数分别是
[0011] anp:没有执行这个函数并且通过的测试用例个数;
[0012] anf:没有执行这个函数并且失效的测试用例个数;
[0013] aep:执行这个函数并且通过的测试用例个数;
[0014] aef:执行这个函数并且失效的测试用例个数;
[0015] 四个参数之和等于测试用例集的大小,根据采用的排序指标为每一个函数计算权 重,所述权重代表了函数出错可能性的大小,按照函数出错可能性从大到小排列,获取风险 排列表,找出最有可能出错的位置。
[0016] 在软件错误定位领域的研究中,研究人员都假设程序只有一个错误,在此前提下 进行错误定位。这样的假设有助于定位方法的简化,容易得出结果。然而,实际情况是,在 工业界中,当程序包含多个错误的时候,错误之间会对彼此产生影响,使用传统的单错误定 位方法来定位包含多个错误的程序,会产生遗漏,造成错误定位的结果不准确,使得软件测 试效率低下。可见基于程序只有一个错误这个不符合实际的假设的方法并没有给程序测试 人员带来实际的帮助。本发明在现有技术基础上打破了现有错误定位方法的单错误假设, 采用FCM模糊聚类方法,没有把一个执行剖面归于某个特定的类簇,而是认为一个执行剖 面与很多类簇都有关系,在实现中用概率来表示这个关系的大小。多个类簇表征了程序中 的多个错误,这些错误互相影响,使得一个执行剖面可能属于多个类簇,因此,本发明方法 针对多错误互相影响的问题,设计了用于多错误定位的方法,而不会产生现有技术的一个 执行剖面只与一个错误相关的缺陷。软件测试人员可以借助本发明方法同时有效的自动定 位多个错误。本发明方法更适用于当前软件测试的实际情况,具有良好的实用性和定位精 度。
【附图说明】
[0017] 图1为本发明的方法框架示意图。
[0018] 图2为本发明基于模糊聚类的多错误定位技术和现有技术的基于硬聚类的错误 定位技术实验效果对比图。
【具体实施方式】
[0019] 本发明使用的主要技术有:fuzzy c-means(FCM)聚类算法,错误定位(fault localization)技术和对于聚类结果的评估技术(Evaluation Metric)。下面介绍方法的 流程并具体说明本发明所使用的各项技术的实施方式。
[0020] 首先,收集频谱信息。本发明使用的错误定位技术主要是基于频谱的错误定位技 术。在使用此技术之前,首先需要收集程序执行频谱。将测试用例集输入到程序中,对程序 运行所有测试用例,同时记录程序执行过程中的函数调用情况以及执行结果,收集得到执 行剖面,执行剖面中的每一个属性都代表程序当中的一个函数,将执行剖面用向量来表示, 向量中的数值代表属性对应的函数是否被调用。在本发明实施例中,设在某一次程序执行 过程中,某个函数调用则对应向量位取值为1,没有调用则取值为0。
[0021] 然后使用模糊聚类技术对程序特征信息进行聚类,最后结合缺陷定位技术,依据 聚类结果对程序错误进行定位。
[0022] 1.FCM聚类算法
[0023] FCM聚类算法是一种使用最广泛的模糊聚类算法,由Bezdek于1981年提出。
[0024] 算法流程如下:
[0025] 1)FCM算法的输入:
[0026] A、类簇的数量c;
[0027] B、一个指定的模糊参数(fuzziness parameter)m,m>l,m的取值影响聚类的精确 度,但怎样取得最优值不在本发明讨论范围之内,一般根据经验取一个合适的值即可;
[0028] C、一组要被聚类的向量集合,设集合的大小为n ;
[0029]D、一个计算两个向量之间距离的函数| |. | |。
[0030] 这里的向量集合也就是由执行剖面得到的向量集合X,距离函数采用欧式距离。在 设定类簇数量时需注意,太多的聚类会导致很相似的执行剖面被分到不同的类簇,太少的 聚类会导致类簇内部的执行剖面差异较大,难以分辨。实施时可调试确定类簇数量。
[0031] 2)初始化,随机选择c个向量作为簇中心,组成类簇中心向量集合V。
[0032] 3)使用如下公式来计算一个n*c的关系矩阵u:
【主权项】
1. 一种基于模糊聚类的多错误定位方法,其特征是程序当中存在至少一个错误,使用 模糊聚类技术对程序特征信息进行聚类,然后结合缺陷定位技术,依据聚类结果对程序错 误进行定位,包括以下步骤: 1) 对程序运行所有测试用例,收集执行剖面,执行剖面中的每一个属性都代表程序 当中的一个函数,将执行剖面用向量来表示,向量中的数值代表属性对应的函数是否被调 用; 2) 模糊聚类,采用FCM聚类方法,输入为由执行剖面得到的向量集合X、设定的类簇数 量c和距离函数,距离函数采用欧式距离;聚类算法最终返回一个关系矩阵,所述关系矩阵 的行表示某个执行剖面分别属于c个类簇的可能性,如果可能性大于设定的阈值,就认为 执行剖面属于这个类簇,一个执行剖面可以属于多个类簇; 3) 错误定位,使用Spectrum-Based错误定位技术来测试各个类簇,根据和测试用例相 关的函数的四个覆盖参数来进行计算,四个覆盖参数分别是 anp:没有执行这个函数并且通过的测试用例个数; anf:没有执行这个函数并且失效的测试用例个数; aep:执行这个函数并且通过的测试用例个数; arf:执行这个函数并且失效的测试用例个数; 四个参数之和等于测试用例集的大小,根据采用的排序指标为每一个函数计算权重, 所述权重代表了函数出错可能性的大小,按照函数出错可能性从大到小排列,获取风险排 列表,找出最有可能出错的位置。
2. 根据权利要求1所述的一种基于模糊聚类的多错误定位方法,其特征是步骤3)中采 用以下三种方法之一来计算权重: 1. Tarantula : 函数ft的权重=
2. Naish2 : 函数ft的权重=
函数ft的权重=
其中,Step:执行了函数ft且 通过了的测试用例个数; aV:执行了函数ft但是结果为失败的测试用例个数; alp:没有执行函数&结果为通过的测试用例个数; Waf:没有执行函数&结果为失败的测试用例个数; t为函数的标号,表示第t个函数。
【专利摘要】一种基于模糊聚类的多错误定位方法,程序当中存在至少一个错误,使用模糊聚类技术对程序特征信息进行聚类,然后结合缺陷定位技术,依据聚类结果对程序错误进行定位。本发明开创性地提出了在多错误环境下的错误分离技术,同时通过该技术在传统的错误定位技术上改进,提升了错误定位技术的实用性和定位精度。通过实验证明,本发明能够较好的提升多错误环境下的错误定位精度。
【IPC分类】G06F11-36
【公开号】CN104536879
【申请号】CN201410710127
【发明人】陈振宇, 冯洋, 王晨, 杨浩宇, 张智轶
【申请人】南京慕测信息科技有限公司
【公开日】2015年4月22日
【申请日】2014年11月28日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1