二 、bug 修复的彻底性
第一部分主要介绍Java程序中NPR的修复的相关概念。
图2中演示了(NPA1, NPR1)的“bug邻域”,主要包括四种类型的NPA,NPR:MaybeNPAs, Maybe NPRs, Forward NPRs, Backward NPAs.图中可以看到,Maybe NPAs 和Maybe NPRs分别与NPR1和NPA1相关,用实线来表明他们会在程序的其他运行中发生,Forward NPRs,Backward NPAs也分别与NPR1和NPA1相关,用虚线来表明他们可能会在程序的其他运行中发生,这种可能性取决于(NPA1, NPR1)如何被修复。
……………………
查看全文请点击下载:http://www.51testing.com/html/02/n-227802.html
四 、实验
为了评价这种方法,我们进行两次实验来研究“bug 邻域”和bug修复是否彻底。
A、数据准备
我们实验包括三个开源项目(Ant-1.6.0, Lucene-2.2.0, and Tomcat-4.1.27),和三个商用项目(这里称为App-A, App-B, and App-C),表格1里列出了类,方法,字节码说明和(NPA,NPR)组的个数,我们分析时采用了XYLEM工具,实验主要包括两个部分:映射部分和“bug邻域”分析部分,现在假设程序P中空指针bug为(NPA0,NPR0)。
其中映射部分将每句语句按照顺序进行映射,(NPA0,NPR0)的映射结果有可能在P'中的另一个(NPA,NPR)组,也有可能没有任何对应的NPA或者NPR。
“bug 邻域”分析时用了XYLEM来识别P'中与(NPA0,NPR0)对应的bug,过程中用了上文提到的BugNeighborhoodAnalysis算法,然后使用前向后向分析来发现P'中的Maybe NPAs,Maybe NPRs,ForwardNPRs,目前,还没有计算Backward NPAs。
使用P'中的NPAs和NPRs 以及(NPA0,NPR0)在P'中的映射,实验中创建出新的空指针bug,联同映射得到的(NPA,NPR)组一起加入“bug 邻域”中,实验中将判断(NPA0,NPR0)的状态“not fixed”,“尝试修复但是不彻底”,“彻底修复”。
……
查看全文请点击下载:http://www.51testing.com/html/02/n-227802.html
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。