专利名称:基于覆盖度的错误定位技术的测试用例集优化方法
技术领域:
本发明属于软件测试技术领域,尤其是自动化测试领域,用于基于覆盖度的错误定位技术CBFL,为一种基于覆盖度的错误定位技术的测试用例集优化方法。
背景技术:
作为自动化测试的一项重要技术,基于覆盖度的错误定位技术CBFL正逐渐走向成熟并且被广泛接受。但是,CBFL错误定位的有效性会被偶然性正确的测试用例所影响。CBFL记录程序中每条语句在通过和未通过的测试用例中的执行信息执行或者未执行,利用公式,计算每条语句的可疑度。CBFL方法认为,那些在未通过的测试用例中执行的语句更有可能是错误语句。但是,Jeffrey Μ. Voas提出的PIE模型认为,要让程序失效必须满足3个条件1)错误语句被执行;幻程序达到"被感染"的状态;幻“被感染" 的状态随着控制流被传播到输出。因此,错误语句被执行只是产生失效的必要条件,而非充分条件。只满足条件1)但仍然通过的测试用例被叫做弱偶然性正确的测试用例,而满足条件1)和2)但仍然通过的测试用例被叫做强偶然性正确的测试用例。以下所指的偶然性正确的测试用例都是指前者。2009年,Wes Masri等人提出了几种影响CBFL错误定位效果的因素,偶然性正确的测试用例名列其中。也就是说,当测试用例集中存在有偶然性正确的测试用例时,错误语句的可疑度会被其影响而降低。近几年来,聚类分析被引入了测试用例选择的领域中。通过对测试用例的执行剖面进行聚类,拥有相似执行路径/行为特征的测试用例被聚集到同一个类簇中。利用这一特点,Vangala等人通过对原始的测试用例集进行聚类,来识别测试用例集中的冗余测试用例。无独有偶,Dickinson等人也利用了聚类分析来做测试用例选择,并且提出了聚类过滤 (cluster filtering)的概念。这种技术先对测试用例的执行剖面进行聚类,然后利用某种抽样技术,从每个类簇中抽取一些测试用例来表示整个类簇。这种用部分抽样所得的测试用例来代表整个测试用例集的方法大大约简了测试用例的个数。
发明内容
本发明要解决的问题是对于基于覆盖度的错误定位技术CBFL,识别并处理原始测试用例集里的偶然性正确的测试用例,从而改进基于覆盖度的自动化错误定位的效果。本发明的技术方案为基于覆盖度的错误定位技术的测试用例集优化方法,对于给定的测试用例集T,通过聚类从中识别偶然性正确测试用例,所述偶然性正确测试用例指错误语句被执行,但执行结果仍然为"通过"的测试用例,对识别出的偶然性正确的测试用例进行处理,得到优化的测试用例集用于基于覆盖度的错误定位1)在需要测试的目标程序上运行测试用例集T,在运行测试用例的同时,收集测试用例的执行剖面信息,运行完测试用例集T之后,根据输出结果,判定每个测试用例的执行结果为"通过"或者"未通过";
2)对得到的执行剖面信息进行聚类;本发明聚类的方法不受限制;3)识别偶然性正确的测试用例执行剖面信息进行聚类后,测试用例被划分到若干个类簇中,将那些和"未通过"的测试用例聚集在一个类簇中的"通过"的测试用例标识为偶然性正确的测试用例,并把它们加入到集合Ticc中,集合Ticc即为所识别出的偶然性正确的测试用例的集合;4)处理偶然性正确的测试用例任选以下两种方式中的一种处理集合Ticc中的识别结果41)过滤策略,将Ticc中的测试用例从测试用例集T中删除;42)重贴标签策略,将Ticc中的测试用例的执行结果判定标签从〃通过〃改成〃 未通过";标识为偶然性正确的测试用例经过上述处理后,得到优化的测试用例集T’。由于本发明的偶然性正确测试用例的识别方法利用了测试用例的覆盖度信息,所以该方法仅用于CBFL,但是它适用于属于CBFL的所有错误定位方法。聚类分析在测试用例选择领域已有应用,本发明在偶然性正确问题上也引入了这种技术。虽然两者都属于测试用例集优化的范畴,但是前者的目的在于缩减测试用例集的大小,这可以帮助程序员尽早地发现错误,减少回归测试的时间,而本发明的目的在于提高测试用例集帮助错误定位的能力,减少程序员查找错误的时间,从而降低调试错误的成本, 两者的聚类目标不同,聚类后的处理也不同。由于一个类簇中的测试用例拥有相似的执行路径,因此,不难推断,一个类簇中的通过的测试用例可能和这个类簇中的未通过的测试用例一样,经过了错误语句,但是由于它们没有全部满足PIE模型中提出的3个条件,所以没有引发失效。因此,这些通过的测试用例极有可能是偶然性正确的测试用例。本发明的有益效果是在约简了原测试用例集的大小的同时优化了测试用例集的质量,减少了偶然性正确的测试用例对基于覆盖度的错误定位的干扰作用,从而提高了自动化错误定位的效率和准确度,节省了程序员寻找错误的时间成本。
图1为本发明的流程示意图。图2为本发明实施例中,识别偶然性正确测试用例的准确度,ρ代表聚类个数的比例,图 2(a)-(e)分别表示 ρ = 1%,2%,4%,6%,8%00图3为本发明实施例中,应用过滤策略,对基于覆盖度的错误定位的方法的提高效果,P代表聚类个数的比例,图3 (a)-(e)分别表示P = 1^,2^,4^,6^,8 ^图4为本发明实施例中,应用重贴标签策略,对基于覆盖度的错误定位的方法的提高效果,P代表聚类个数的比例,图4(a)-(e)分别表示ρ = 1^,2^,4^,6^,8 ^
具体实施例方式本发明将聚类分析应用到偶然性正确的测试用例的挑选问题上,把挑选出的测试用例从原始测试用例集中删除或者改变这些测试用例的执行结果标签,通过以上2种方法来优化原始测试用例集,在优化后的测试用例集上应用已有的自动化错误定位技术,使得错误定位的效率和准确度得到提高。对于给定的测试用例集T,这个测试用例集由2部分组成Tp和Tf,本发明的目标就是从Tp中识别出Tcc,识别的结果为TiCC,TiCC中的每一个测试用例都有很大的可能性属于Tcc,其中T 对一个给定的程序所使用的测试用例集Tp 通过的测试用例的集合Tf 未通过的测试用例的集合Tcc 偶然性正确的测试用例的集合Ticc 所识别出的偶然性正确的测试用例的集合在实际应用中,需要通过5个步骤来完成本发明的工作,如图1 :1)在需要测试的目标程序上运行测试用例集。在运行测试用例的同时,收集测试用例的执行剖面信息。运行完测试用例集之后,根据输出结果,判定每个测试用例的执行结果为〃通过〃或者〃未通过〃;2)对执行剖面进行聚类,聚类的方法不受限制,具有相似的执行剖面的测试用例被聚类即可;3)识别偶然性正确的测试用例;4)处理偶然性正确的测试用例;5)在优化过的测试用例集上应用已有的基于覆盖度的自动错误定位技术。其中,步骤1)、2)、幻在自动化错误定位和聚类分析中都有现成的方法和应用,在此不再赘述。这里主要针对步骤;3)、4)进行详细的解释。对执行剖面进行聚类之后,测试用例被划分到若干个类簇中。每个类簇中都可能包含有通过和未通过的测试用例,本发明将那些和未通过的测试用例聚集在一个类簇中的通过的测试用例标识为偶然性正确的测试用例,并把它们加入到集合Ticc中。Ticc中的元素极有可能是偶然性正确的测试用例,理由如下(1)执行过错误语句的测试用例并不一定会引发失效,但反之不成立,未通过的测试用例必然执行过错误语句;(2)具有相似的执行剖面的测试用例会被划分到一个类簇中,这就意味着所挑选出的通过的测试用例和未通过的测试用例具有相似的执行路径。综上所述,那些被挑选出的测试用例很有可能执行了错误语句,但仍然给出了正确输出,这和偶然性正确的定义相符。为了处理Ticc,本发明提出了 2种不同的策略 过滤策略。Ticc中的测试用例会被从原始测试用例集中删除,从而减少这些测试用例对自动化错误定位的干扰作用。 重贴标签策略。Ticc中的测试用例的结果判定标签会被从"通过"改成"未通过"。这样,错误语句的可疑度被提高,可能导致该语句的可疑度排名上升。下面通过具体的实施例来说明本发明的实施。西门子测试用例集是在学术领域被广泛使用的测试用例集。很多评估软件测试以及错误发现的方法都使用它作为目标程序来进行实验。表1列出了西门子程序的详细信肩、ο
表1西门子程序的详细信息
权利要求
1.基于覆盖度的错误定位技术的测试用例集优化方法,其特征是对于给定的测试用例集T,通过聚类从中识别偶然性正确测试用例,所述偶然性正确测试用例指错误语句被执行,但执行结果仍然为"通过"的测试用例,对识别出的偶然性正确的测试用例进行处理, 得到优化的测试用例集用于基于覆盖度的错误定位1)在需要测试的目标程序上运行测试用例集T,在运行测试用例的同时,收集测试用例的执行剖面信息,运行完测试用例集T之后,根据输出结果,判定每个测试用例的执行结果为〃通过〃或者〃未通过〃;2)对得到的执行剖面信息进行聚类;3)识别偶然性正确的测试用例执行剖面信息进行聚类后,测试用例被划分到若干个类簇中,将那些和"未通过"的测试用例聚集在一个类簇中的"通过"的测试用例标识为偶然性正确的测试用例,并把它们加入到集合Ticc中,集合Ticc即为所识别出的偶然性正确的测试用例的集合;4)处理偶然性正确的测试用例任选以下两种方式中的一种处理集合Ticc中的识别结果41)过滤策略,将Ticc中的测试用例从测试用例集T中删除;42)重贴标签策略,将Ticc中的测试用例的执行结果判定标签从"通过"改成"未通过";标识为偶然性正确的测试用例经过上述处理后,得到优化的测试用例集T’。
全文摘要
基于覆盖度的错误定位技术的测试用例集优化方法,对于给定的测试用例集T,通过聚类从中识别偶然性正确测试用例,所述偶然性正确测试用例指错误语句被执行,但执行结果仍然为“通过”的测试用例,对识别出的偶然性正确的测试用例进行处理,得到优化的测试用例集用于基于覆盖度的错误定位。本发明的有益效果是在约简了原测试用例集的大小的同时优化了测试用例集的质量,减少了偶然性正确的测试用例对基于覆盖度的错误定位的干扰作用,从而提高了自动化错误定位的效率和准确度,节省了程序员寻找错误的时间成本。
文档编号G06F11/36GK102193864SQ20111012663
公开日2011年9月21日 申请日期2011年5月13日 优先权日2011年5月13日
发明者纪昌斌, 缪怡, 赵志宏, 陈振宇 申请人:南京大学