[发明专利]一种基于测试执行记录快速定位软件代码缺陷的方法有效
申请号: | 201310264686.0 | 申请日: | 2013-06-27 |
公开(公告)号: | CN103309811A | 公开(公告)日: | 2013-09-18 |
发明(设计)人: | 顾庆;施小燕;陈道蓄 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 贺翔 |
地址: | 210008 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 测试 执行 记录 快速 定位 软件 代码 缺陷 方法 | ||
技术领域
本发明涉及计算机软件自动化测试过程中,代码缺陷的定位和识别问题;特别针对利用测试覆盖信息和测试执行结果,快速定位包含缺陷的代码行集合,提高软件开发效率。
背景技术
软件缺陷是指在软件开发过程中引入的损害软件产品质量或背离软件需求,存在于软件制品中的瑕疵或问题。软件制品包括需求规格说明、设计文档、软件代码、测试用例、以及用户手册等。因此软件缺陷也分为:文档缺陷、代码缺陷、测试缺陷、以及过程缺陷等。
自动化缺陷定位通过对测试过程中记录的信息进行分析和比较来定位软件代码中的缺陷,其定位及移除效率直接关系到整个软件开发过程的生产率。在测试过程中,当测试用例的实际输出和预期输出不一致时,称为未通过的测试用例,反之称为通过的测试用例;未通过的测试用例说明软件执行发生了失效。软件失效包含四个阶段:其一程序员制造了一个缺陷;其二缺陷造成了错误状态;其三错误状态传播和扩大;其四错误状态引发失效。其中第三阶段导致软件失效的原因(如代码缺陷)不易发现,需要有一个高效准确的软件代码缺陷自动化定位方法。
通过测试用例的执行记录来分析和定位代码缺陷的方法,是目前较为实用的一类代码缺陷定位方法。该方法能够同现有的自动化测试技术有效协作,且不需要人工经验的干预。已有的缺陷定位方法包括代码块并集/交集法、谓词判定法、近邻选择法、以及公式计算法等。在此基础上,研究者提出引入程序依赖关系、动态调用链或函数栈、程序状态判定和动态切片等执行过程中的动态信息;或者借助软件变更历史数据分析、测试用例优先化和约简等技术,以提高代码缺陷定位的效果。
代码缺陷定位中最大的挑战是如何在软件程序中快速准确地找到包含缺陷的最小代码行集合。随着软件工程和开发技术的进步、以及软件更新频率的加快,软件测试的自动化程度越来越高,测试记录规模和复杂度不断提高,而软件测试周期却不断缩减。现有的代码缺陷定位技术尚不能完全满足软件业界的产品开发需求。
发明内容
本发明所要解决的技术问题是提出一种基于测试执行记录快速定位软件代码缺陷的方法。该方法在自动化测试过程中,有效利用大量的测试记录信息,运用正交分析方法,发掘软件代码缺陷和软件执行结果之间的逻辑依赖关系,准确定位包含缺陷的代码行;提高软件缺陷定位的性能和效率。
为实现上述目的,本发明采用如下的步骤:
1)整理测试执行记录,以测试用例为单位,收集每一个测试用例的执行记录信息,其中包括对代码行的覆盖数据和测试用例的执行结果数据;
2)建立正交信息表,以代码行为单位,分别统计代码行覆盖数据和测试执行结果数据;
3)计算缺陷怀疑率,根据正交信息表,分别计算面向代码覆盖的条件概率、以及面向执行结果的条件概率;综合计算代码行的缺陷怀疑率;最后按照怀疑率从高到低排序,辅助定位代码缺陷。
上述步骤1)中的覆盖数据用数值0和1表示,其中0代表测试用例未覆盖(执行)代码行,1代表测试用例覆盖了代码行;执行结果亦采用数值0和1表示,其中0代表测试用例执行通过,1代表测试用例执行未通过。
上述步骤2)中建立正交信息表的处理流程是:首先析取软件中可执行的代码行;然后对每一个代码行s,划分测试用例集(可选)或者直接采用数值计算,构建针对代码行s的正交信息表。
上述代码行s的正交信息表是一个2×2表格,表格的行代表覆盖数据,即:y—覆盖s,n—未覆盖s;列代表执行结果,即:p—通过,f—未通过;如下表所示:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310264686.0/2.html,转载请声明来源钻瓜专利网。