[发明专利]基于覆盖度的错误定位技术的测试用例集优化方法有效
申请号: | 201110126632.9 | 申请日: | 2011-05-13 |
公开(公告)号: | CN102193864A | 公开(公告)日: | 2011-09-21 |
发明(设计)人: | 赵志宏;缪怡;陈振宇;纪昌斌 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 黄明哲 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 覆盖 错误 定位 技术 测试 用例集 优化 方法 | ||
技术领域
本发明属于软件测试技术领域,尤其是自动化测试领域,用于基于覆盖度的错误定位技术CBFL,为一种基于覆盖度的错误定位技术的测试用例集优化方法。
背景技术
作为自动化测试的一项重要技术,基于覆盖度的错误定位技术CBFL正逐渐走向成熟并且被广泛接受。但是,CBFL错误定位的有效性会被偶然性正确的测试用例所影响。
CBFL记录程序中每条语句在通过和未通过的测试用例中的执行信息:执行或者未执行,利用公式,计算每条语句的可疑度。CBFL方法认为,那些在未通过的测试用例中执行的语句更有可能是错误语句。但是,Jeffrey M.Voas提出的PIE模型认为,要让程序失效必须满足3个条件:1)错误语句被执行;2)程序达到″被感染″的状态;3)″被感染″的状态随着控制流被传播到输出。因此,错误语句被执行只是产生失效的必要条件,而非充分条件。只满足条件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个条件,所以没有引发失效。因此,这些通过的测试用例极有可能是偶然性正确的测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110126632.9/2.html,转载请声明来源钻瓜专利网。