[发明专利]一种基于谓词执行序列的软件动态缺陷定位方法有效

专利信息
申请号: 201010219288.3 申请日: 2010-06-25
公开(公告)号: CN101872325A 公开(公告)日: 2010-10-27
发明(设计)人: 郑征;李伟;梁宇;蔡开元 申请(专利权)人: 北京航空航天大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京慧泉知识产权代理有限公司 11232 代理人: 王顺荣;唐爱华
地址: 100191 北京市海淀区*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 谓词 执行 序列 软件 动态 缺陷 定位 方法
【说明书】:

所属技术领域

发明涉及一种软件动态缺陷定位方法,特别是一种基于谓词执行序列的软件动态缺陷定位方法。该方法属于软件测试技术领域。

背景技术

软件动态缺陷定位方法(该方法本质上是一种算法,下文中出于习惯用法,一律用算法一词)的研究起步于21世纪初。Tarantula(该名称是算法的发明人命名,现在暂无中文名称。下文中出现的Libit05和Sober同样是算法的发明人命名,现在也暂无中文名称)算法的提出奠定了软件动态缺陷定位算法的基础,该类算法一般包括程序插桩、程序运行、程序运行信息收集和结果的统计学分析这四个步骤。

程序插桩在软件测试中有广泛的应用,它通过向被测程序中插入新的操作语句以实现测试;在进行了程序插桩之后需要将测试用例加载到程序中,并运行程序;当程序运行到桩点时,函数会记录运行信息(如该语句是否运行,谓词运行的真假等);收集运行信息之后便可以采用统计学方法来分析数据,得到缺陷的可能位置。这四个过程对应软件动态缺陷定位算法的四个基本步骤。

不同的缺陷定位算法一般采用不同的统计方法,较有代表性的是Tarantula算法、Liblit05算法、Sober算法。Tarantula算法是哈罗德等人在“一种利用可视化信息的缺陷定位方法”(详见2002年《第二十四届软件工程国际会议》)一文中提出的,其选择的插桩方法是语句插桩,即在所有可执行语句后插入“探针”,收集所有可执行语句的执行信息;然后,利用这些信息计算出每条可执行语句的可疑度,并从大到小排列(即可按照顺序寻找缺陷)。然而,程序中缺陷的大多数来源都是错误的谓词,其他语句很少导致缺陷。所以,针对所有可执行语句的缺陷定位不仅造成信息冗余,使得缺陷定位成本增大,而且冗余的信息会对缺陷信息造成覆盖,使之不易被发现。而且,缺陷定位的精确度降低使得缺陷定位的实际效果大打折扣。针对这个问题本.里布里特等人在“一种可扩展的基于统计学的故障隔离方法”(详见2005年《美国计算机学会<编程语言的设计和实现>会议》)一文中提出了Liblit05算法。此算法选择谓词作为插桩的对象,通过谓词在程序运行中的运行信息的收集和处理来实现缺陷定位,里布里特虽然解决了Tarantula算法中收集所有语句运行信息而造成的信息冗余问题,但并没有充分地收集谓词的执行信息(主要表现在里布里特仅仅考虑了谓词是否在一次程序运行中被执行到,并没有考虑该谓词在程序中被执行了几次)。这种信息不充分导致了里布里特的算法并没有能够将缺陷定位在一个很小的范围内,实用性不强。为此,刘超等人在“基于统计学的程序纠错:一种基于假设检验的方法”(详见2006年《电机及电子学工程师联合会软件工程汇刊》)一文中提出了Sober算法。该算法首次考虑到谓词信息收集不充分的问题,它不仅记录了谓词是否在一次程序运行中被执行到,而且记录了谓词在一次运行中执行的次数,包括谓词执行判定为“真”和执行判定为“假”的次数。将这两种统计信息也包括到计算谓词缺陷相关度的算法当中,但是Sober算法并没有考虑到谓词的运行次序,因此无法对跟谓词运行次序相关的缺陷进行定位。现举例如下:如图1所示为一段带有缺陷的代码,程序第207行的if语句中的谓词P,正确版本的程序中这个谓词P是count>0,而这里面错误的写成count>1。这个缺陷会使得程序在加载一些测试用例的时候运行错误。谓词的执行信息按照程序运行的正确与否划分为Success和Crash两类,Success对应于程序运行正确时的谓词执行信息,Crash对应于程序运行错误时的谓词执行信息。加载两个测试用例到程序中,程序运行了两次,第一次程序运行正确,第二次错误。在每次运行中这个谓词都执行了五次,都是两次为真三次为假。依据程序运行的正确与否,这两次运行的执行信息分别归为Success组和Crash组,该谓词的执行信息如图2所示,Sober算法只统计该谓词执行判定为“真”和为“假”的次数,而这两次程序运行虽然结果不同,但该谓词判定为“真”的次数都是两次,为“假”的次数都是三次,完全相同,这种情况下此算法无法发现该谓词缺陷。

为了避免谓词信息收集不足的问题,要求新算法收集更多的谓词信息。而从上面的例子可以看出,有必要将谓词的执行次序融入到谓词缺陷关联度的计算算法中,本发明正是基于这种考虑。

发明内容

本发明一种基于谓词执行序列的软件动态缺陷定位方法,其目的是:克服现有方法中缺陷关联度的计算有谓词信息收集不足的缺点,提供一种基于谓词执行序列的动态缺陷定位的方法。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201010219288.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top