[发明专利]一种基于谓词执行序列的软件动态缺陷定位方法有效
申请号: | 201010219288.3 | 申请日: | 2010-06-25 |
公开(公告)号: | CN101872325A | 公开(公告)日: | 2010-10-27 |
发明(设计)人: | 郑征;李伟;梁宇;蔡开元 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 谓词 执行 序列 软件 动态 缺陷 定位 方法 | ||
1.一种基于谓词执行序列的软件动态缺陷定位方法,其特征在于:它包括以下五个步骤:
第一步对含缺陷的程序插桩;插桩是为了得到程序运行时的谓词执行序列信息,对程序中的分支谓词:if、while、for以及return语句中的谓词进行插桩;桩函数要求在程序运行时输出谓词的状态信息,状态信息包括两种:第一种信息是,该谓词的编号;第二种信息是,待测程序在加载测试用例后,运行正确或错误时,谓词的执行状态,用“+”表示谓词执行判定为“真”,“-”表示谓词执行判定为“假”;
第二步加载程序的测试用例,运行插有输出谓词执行序列桩函数的程序;记录程序运行正确的次数和运行错误的次数,为便于后文的说明方便,用m表示运行正确的次数,n表示运行错误的次数;
第三步分别收集程序运行正确时,和运行错误时,桩函数的输出信息;
第四步对收集到的谓词运行信息做统计学分析,该步骤分为五小步:
(一)利用得到的信息,统计程序中单个谓词在程序一次运行中的执行序列;程序每运行一次,对单个谓词的执行有三种情况:执行多次;执行一次;不执行;程序运行到某谓词时,若该谓词判定为“真”,计为1,若该谓词判定为“假”,计为0,程序一次运行,若该谓词执行了多次,则它的执行序列是0和1所组成的序列;若只执行了一次,则它的执行序列就只有一个数:0或1;若没有被执行,则它此次的执行序列为空;用这种方法统计,则单个谓词共有m个程序运行正确的执行序列,和n个程序运行错误的执行序列;
(二)利用谓词的执行序列,统计出单个谓词的执行序列向量P4;P4是一个四维向量,包括n01、n10、n00,n11这四个值,其中n01和n10分别用来记录谓词的执行序列中在一次程序运行的结果中,从0变化到1的次数和从1变为0的次数;而n00和n11分别记录谓词执行序列中连续两次为0的次数和连续两次为1的次数;在一次程序运行中,若某谓词执行了多次,分别记录n01、n10、n00,n11的值;若只执行了一次:谓词执行序列为0时,设定n00=0.5,n01=n10=n11=0;谓词执行序列为1时,设定n11=0.5,n01=n10=n00=0;若该谓词没有执行,则n01=n10=n11=n00=0;从而,得到单个谓词m个程序运行正确的执行序列向量和n个程序运行错误的执行序列向量;
(三)利用谓词执行序列向量P4,计算单个谓词的缺陷关联度;定义单个谓词的缺陷关联度Pdiverge=|P4+-P4-|,这里的P4+表示程序正确运行时谓词的执行序列向量,P4-表示程序错误运行时谓词的执行序列向量;P4+的计算方法为:m个程序运行正确的执行序列向量相加,然后进行归一化处理,即程序运行正确的执行序列向量)/m;P4-的计算方法为:n个程序运行错误的执行序列向量相加,然后进行归一化处理,即程序运行错误的执行序列向量)/n;
(四)利用第三步得到的谓词执行信息,对程序中的每个谓词执行上述的
(一)至(三)步,直至得到全部谓词的缺陷关联度;
(五)按照缺陷关联度的高低,将所有谓词从高到低排序;
第五步根据第四步中得到的谓词序列,对谓词依序进行查找,直到找到缺陷为止。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010219288.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:内挂隐蔽式手机套
- 下一篇:可充当支架使用的笔记本电脑包