[发明专利]一种结合静态依赖和动态执行规则的测试用例选择方法有效
| 申请号: | 201910654983.3 | 申请日: | 2019-07-19 |
| 公开(公告)号: | CN110554954B | 公开(公告)日: | 2020-12-01 |
| 发明(设计)人: | 李英玲;王俊杰;王青 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 陈艳 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 结合 静态 依赖 动态 执行 规则 测试 选择 方法 | ||
本发明提出一种结合静态依赖和动态执行规则的测试用例选择方法,为了更准确地选择测试用例从而进一步减少测试规模,提出了本方法级别的测试用例选择方法,本方法结合静态依赖分析和动态执行规则来收集更准确的依赖,从而选择更准确规模更小的测试集。本方法首先定位提交代码中的更改方法,通过静态分析和动态执行规则收集方法级别精准的依赖关系;设计一个基于BFS的增量迭代搜索算法用来搜索更改方法集的所有受影响的方法,从中识别出受影响的测试用例集。本方法能解决已有的静态测试用例选择方法因为不合理的依赖分析,导致遗漏一些必要测试或者选择一些不必要的测试,对于大型复杂系统的频繁地持续集成测试更具应用价值。
技术领域
本发明属于计算机软件测试领域,涉及持续集成测试用例选择技术,研究如何收集精准的依赖关系,并设计一个基于广度优先策略(BFS)的搜索算法,增量迭代地搜索出受更改代码影响的测试用例子集。
背景技术
基于互联网的软件开发要求产品快速迭代,同时保持产品的质量,持续集成(Continuous Integration,简称CI)正是解决这一问题的软件开发实践。持续集成要求开发人员频繁地集成更改的代码到主线代码库,每次集成通过自动化的构建(包括编译和测试)来验证代码质量,从而尽快地发现集成错误。这一开发实践已经在Google、Microsoft、Cisco、GitHub、Eclipse、Apache等著名的软件组织和开源社区中得到了广泛应用。持续集成通过自动化集成测试(简称CI测试)来保证集成到主干的代码质量,持续集成时的测试用例选择是一个非常有挑战性的问题。如果运行所有的测试用例,需要消耗大量的计算资源,并造成测试反馈周期过长;如果选择的测试用例集不合适,又不足以覆盖必要的测试代码以保证待集成代码的质量。测试用例选择的目的是,选择和运行受更改代码影响的测试,从而大大节省测试时间和测试资源,并在实践中得到了广泛的应用。
现有的测试用例选择方法积累了较多的研究成果,但仍然存在不足,诸如时间成本太高、遗漏一些必要的测试,目前还少有研究在减少测试成本的同时,能保证缺陷的检测能力和测试覆盖度。根据测试依赖的收集方式,测试用例选择技术可分为动态技术和静态技术;根据测试依赖和更改的程序元素的粒度,可分为方法级别、文件级别、模块级别等。
动态测试用例选择技术通过运行测试来收集依赖,虽然能选择一个比较准确的测试集,但是收集依赖耗时长且第三方非预期中断等可能导致不完整的测试用例选择;静态选择技术使用静态分析来推导出依赖,比动态选择技术更易于操作,但是现有的静态选择方法因为不合理的依赖分析,导致遗漏一些必要测试用例或者选择一些不必要的测试用例。
现有研究也比较了不同粒度测试用例选择技术,结果表明基于粗粒度依赖(例如文件级别)的测试用例选择技术能减少分析依赖的时间开销,但存在选择一些不必要的测试;基于细粒度依赖的测试用例选择技术(例如方法级别)能收集更精确的依赖,从而选择更准确的测试集,但会增加收集依赖的时间开销。尽管现有的研究已提出较多的基于细粒度依赖关系的选择测试方法,但仍然面临一些挑战(例如一些复杂的依赖关系不能处理,只能支持单个语言的应用场景)。
另外进一步分析了现有的静态选择技术,发现影响测试用例选择有效性的因素主要包括:
1.遗漏依赖关系导致遗漏必要的测试,例如不能处理在反射中方法的调用关系;
2.不精确的依赖关系,导致不必要的测试,例如继承中的动态绑定的调用关系不能被准确地构建。
以上两个问题主要因为某些依赖关系是在运行时动态确定的,无法通过现有的静态分析技术完全得到。
发明内容
在现有类级别的测试用例选择方法的基础上,为了更准确地选择测试用例从而进一步减少测试规模,本发明提出一种结合静态依赖和动态执行规则的测试用例选择方法,属于方法级别的测试用例选择方法,该方法结合静态依赖分析和动态执行规则(反射中的动态执行和继承中的动态绑定)来收集更准确的依赖,从而选择更准确规模更小的测试集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910654983.3/2.html,转载请声明来源钻瓜专利网。





