首页 / 专利库 / 计算机网络 / 软件缺陷 / 一种基于测试执行记录快速定位软件代码缺陷的方法

一种基于测试执行记录快速定位软件代码缺陷的方法

阅读:1012发布:2020-09-01

专利汇可以提供一种基于测试执行记录快速定位软件代码缺陷的方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于测试执行记录快速 定位 软件 代码 缺陷 的方法,其步骤是:1)以测试 用例 为单位, 整理 测试执行记录;2)以代码行为单位,建立 正交 信息表,分别统计代码 覆盖 数据和执行结果数据;3)根据正交信息表,计算代码行的缺陷怀疑率;按照怀疑率排序,辅助定位代码缺陷。本发明方法从软件失效和代码覆盖两个 角 度,运用正交分析方法,发掘 软件代码 缺陷和软件执行结果之间的逻辑依赖关系,准确定位包含缺陷的代码行;同时计算简单,适用于不同类型的编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够快速处理大量的测试执行记录信息;提高 软件缺陷 定位的性能和效率。,下面是一种基于测试执行记录快速定位软件代码缺陷的方法专利的具体信息内容。

1.一种基于测试执行记录快速定位软件代码缺陷的方法,其特征在于包括以下步骤:
1)整理测试执行记录,以测试用例为单位,收集每一个测试用例的执行记录信息,其中包括对代码行的覆盖数据和测试用例的执行结果数据;
2)建立正交信息表,以代码行为单位,分别统计代码行覆盖数据和测试执行结果数据;
3)计算缺陷怀疑率,根据正交信息表,分别计算面向代码覆盖的条件概率、以及面向执行结果的条件概率;综合计算代码行的缺陷怀疑率;最后按照怀疑率从高到低排序,辅助定位代码缺陷。
2.根据权利要求1所述的基于测试执行记录快速定位软件代码缺陷的方法,其特征在于,上述步骤1)覆盖数据用数值0和1表示,其中0代表测试用例未覆盖代码行,1代表测试用例覆盖了代码行;执行结果亦采用数值0和1表示,其中0代表测试用例执行通过,1代表测试用例执行未通过。
3.根据权利要求2所述的基于测试执行记录快速定位软件代码缺陷的方法,其特征在于,上述步骤2)中建立正交信息表的处理流程是:首先析取软件中可执行的代码行;然后对每一个代码行s,划分测试用例集或者直接采用数值计算,构建针对代码行s的正交信息表;该正交信息表是一个2×2表格,表格的行代表覆盖数据,即:y—覆盖s,n—未覆盖s;
列代表执行结果,即:p—通过,f—未通过;如下表所示:
通过 未通过
覆盖 s(yp) s(yf)
未覆盖 s(np) s(nf)
表中4个表项的计算公式如下:
s(yp)=|S1∩T0|=∑t∈Te(t)×(1-r(t))=∑t∈T0e(t)
s(yf)=|S1∩T1|=∑t∈Te(t)×r(t)=∑t∈T1e(t)
s(np)=|S0∩T0|=∑t∈T(1-e(t))×(1-r(t))=∑t∈T0(1-e(t))
s(nf)=|S0∩T1|=∑t∈T(1-e(t))×r(t)=∑t∈T1(1-e(t))
其中T0代表执行通过的测试用例集合,T1代表执行未通过的测试用例集合;S1代表覆盖代码行s的测试用例集合,S0代表未覆盖代码行s的测试用例集合;e(t)代表测试用例t是否覆盖代码行s,r(t)代表用例t的执行结果。
4.根据权利要求3所述的基于测试执行记录快速定位软件代码缺陷的方法,其特征在于,上述步骤3)中面向代码覆盖的条件概率公式包括P(y|f)和P(y|p),其中y代表代码行被覆盖,p和f分别代表执行结果是通过和未通过,计算公式如下:
其中s(yf),s(yp),s(nf),s(np)是代码行s的正交信息表中的表项。
5.根据权利要求3所述的基于测试执行记录快速定位软件代码缺陷的方法,其特征在于,上述步骤3)中面向执行结果的条件概率公式包括P(f|y)和P(f|n),其中n代表代码行未覆盖,计算公式如下:
6.根据权利要求3所述的基于测试执行记录快速定位软件代码缺陷的方法,其特征在于,上述步骤3)中计算代码行的缺陷怀疑率综合面向代码覆盖的条件概率和面向执行结果的条件概率;给定代码行s,其缺陷怀疑率F(s)计算公式如下:

说明书全文

一种基于测试执行记录快速定位软件代码缺陷的方法

技术领域

[0001] 本发明涉及计算机软件自动化测试过程中,代码缺陷的定位和识别问题;特别针对利用测试覆盖信息和测试执行结果,快速定位包含缺陷的代码行集合,提高软件开发效率。

背景技术

[0002] 软件缺陷是指在软件开发过程中引入的损害软件产品质量或背离软件需求,存在于软件制品中的瑕疵或问题。软件制品包括需求规格说明、设计文档、软件代码、测试用例、以及用户手册等。因此软件缺陷也分为:文档缺陷、代码缺陷、测试缺陷、以及过程缺陷等。
[0003] 自动化缺陷定位通过对测试过程中记录的信息进行分析和比较来定位软件代码中的缺陷,其定位及移除效率直接关系到整个软件开发过程的生产率。在测试过程中,当测试用例的实际输出和预期输出不一致时,称为未通过的测试用例,反之称为通过的测试用例;未通过的测试用例说明软件执行发生了失效。软件失效包含四个阶段:其一程序员制造了一个缺陷;其二缺陷造成了错误状态;其三错误状态传播和扩大;其四错误状态引发失效。其中第三阶段导致软件失效的原因(如代码缺陷)不易发现,需要有一个高效准确的软件代码缺陷自动化定位方法。
[0004] 通过测试用例的执行记录来分析和定位代码缺陷的方法,是目前较为实用的一类代码缺陷定位方法。该方法能够同现有的自动化测试技术有效协作,且不需要人工经验的干预。已有的缺陷定位方法包括代码并集/交集法、谓词判定法、近邻选择法、以及公式计算法等。在此基础上,研究者提出引入程序依赖关系、动态调用链或函数栈、程序状态判定和动态切片等执行过程中的动态信息;或者借助软件变更历史数据分析、测试用例优先化和约简等技术,以提高代码缺陷定位的效果。
[0005] 代码缺陷定位中最大的挑战是如何在软件程序中快速准确地找到包含缺陷的最小代码行集合。随着软件工程和开发技术的进步、以及软件更新频率的加快,软件测试的自动化程度越来越高,测试记录规模和复杂度不断提高,而软件测试周期却不断缩减。现有的代码缺陷定位技术尚不能完全满足软件业界的产品开发需求。

发明内容

[0006] 本发明所要解决的技术问题是提出一种基于测试执行记录快速定位软件代码缺陷的方法。该方法在自动化测试过程中,有效利用大量的测试记录信息,运用正交分析方法,发掘软件代码缺陷和软件执行结果之间的逻辑依赖关系,准确定位包含缺陷的代码行;提高软件缺陷定位的性能和效率。
[0007] 为实现上述目的,本发明采用如下的步骤:
[0008] 1)整理测试执行记录,以测试用例为单位,收集每一个测试用例的执行记录信息,其中包括对代码行的覆盖数据和测试用例的执行结果数据;
[0009] 2)建立正交信息表,以代码行为单位,分别统计代码行覆盖数据和测试执行结果数据;
[0010] 3)计算缺陷怀疑率,根据正交信息表,分别计算面向代码覆盖的条件概率、以及面向执行结果的条件概率;综合计算代码行的缺陷怀疑率;最后按照怀疑率从高到低排序,辅助定位代码缺陷。
[0011] 上述步骤1)中的覆盖数据用数值0和1表示,其中0代表测试用例未覆盖(执行)代码行,1代表测试用例覆盖了代码行;执行结果亦采用数值0和1表示,其中0代表测试用例执行通过,1代表测试用例执行未通过。
[0012] 上述步骤2)中建立正交信息表的处理流程是:首先析取软件中可执行的代码行;然后对每一个代码行s,划分测试用例集(可选)或者直接采用数值计算,构建针对代码行s的正交信息表。
[0013] 上述代码行s的正交信息表是一个2×2表格,表格的行代表覆盖数据,即:y—覆盖s,n—未覆盖s;列代表执行结果,即:p—通过,f—未通过;如下表所示:
[0014]通过 未通过
覆盖 s(yp) s(yf)
未覆盖 s(np) s(nf)
[0015] 其中4个表项的计算公式如下:
[0016] s(yp)=|S1∩T0|=∑t∈Te(t)×(1-r(t))=∑t∈T0e(t)
[0017] s(yf)=|S1∩T1|=∑t∈Te(t)×r(t)=∑t∈T1e(t)
[0018] s(np)=|S0∩T0|=∑t∈T(1-e(t))×(1-r(t))=∑t∈T0(1-e(t))[0019] s(nf)=|S0∩T1|=∑t∈T(1-e(t))×r(t)=∑t∈T1(1-e(t))
[0020] 其中T0代表执行通过的测试用例集合,T1代表执行未通过的测试用例集合;S1代表覆盖代码行s的测试用例集合,S0代表未覆盖代码行s的测试用例集合;e(t)代表测试用例t是否覆盖代码行s,r(t)代表用例t的执行结果;上述公式中,正交表项的计算可以采用三种不同实现:集合操作、数值计算、集合操作结合数值计算;应根据实现场景,选择其中性能最高的方法。
[0021] 上述步骤3)中面向代码覆盖的条件概率公式包括P(y|f)和P(y|p),其中y代表代码行被覆盖,p和f分别代表执行结果是通过和未通过,计算公式如下:
[0022]
[0023]
[0024] 其中s(yf),s(yp),s(nf),s(np)是代码行s的正交信息表中的表项。
[0025] 上述步骤3)中面向执行结果的条件概率公式包括P(f|y)和P(f|n),其中n代表代码行未覆盖,计算公式如下:
[0026]
[0027]
[0028] 上述步骤3)中计算代码行的缺陷怀疑率综合面向代码覆盖的条件概率和面向执行结果的条件概率;给定代码行s,其缺陷怀疑率F(s)计算公式如下:
[0029]
[0030] 本发明方法综合软件失效和代码覆盖两个视,通过设计条件概率公式及组合策略,提出一种新的基于正交分析的代码缺陷定位框架和方法,能够快速准确地定位包含缺陷的代码行;理论分析和实验数据表明,本发明方法在缺陷定位准确率和执行效率方面,优于常用的Tarantula方法和Ochiai方法等。本发明方法计算简单,适用于不同类型的编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够快速有效地分析和处理大量的自动测试记录信息,提高软件测试和缺陷定位的性能和效率。附图说明
[0031] 图1是基于测试执行记录快速定位软件代码缺陷方法的总体框架;
[0032] 图2是一个示例程序及其整理后的测试执行记录;
[0033] 图3是为代码行建立正交信息表的处理流程;
[0034] 图4是基于条件概率公式计算代码行缺陷怀疑率的概念框架;
[0035] 图5是计算代码行缺陷怀疑率并排序的处理流程。

具体实施方式

[0036] 图1所示为基于测试执行记录快速定位软件代码缺陷方法的总体技术框架。方法的输入是计算机软件的自动测试记录,包含代码覆盖信息和执行结果信息;方法的输出是按照缺陷怀疑率排序的代码行,辅助开发人员完成缺陷定位。本发明方法包含三个模块:首先以测试用例为单位,整理测试执行记录;然后以代码行为单位,建立正交信息表,分别统计代码覆盖数据和执行结果数据;最后根据正交信息表,计算代码行的缺陷怀疑率,再按照怀疑率为代码行排序。
[0037] 本发明方法的第一个模块是整理测试执行记录。收集每一个测试用例的执行记录信息,包括对代码行的覆盖数据和测试用例的执行结果数据。覆盖数据用数值0和1表示,其中0代表测试用例未覆盖(执行)代码行,1代表测试用例覆盖了代码行;执行结果亦采用数值0和1表示,其中0代表测试用例执行通过,1代表测试用例执行未通过。
[0038] 图2所示是一个示例程序A,及其整理后的测试执行记录。程序A的功能是找到三个数的中位数;包含13个可执行的代码行,其中代码行s7包含一个缺陷(正确的语句是“m=x;”);测试用例集T包含9个测试用例,其中测试用例t6和t8执行未通过(失效)。以测试用例t1为例,t1的输入是(3,3,5),预期输出是3;t1执行(覆盖)了代码行s1~s4,s6,s7,s13,实际输出是3,同预期输出一致,因此t1的执行结果是0(即通过)。考虑测试用例t6,输入是(2,1,3),预期输出是2;覆盖了代码行s1~s4,s6,s7,s13,同用例t1相同;实际输出是1,与预期输出不一致,因此执行结果是1(未通过)。对比用例t1和t6的执行记录,两者覆盖的代码行完全相同,但执行结果却相反;需要结合其他测试用例的执行记录来定位包含缺陷的代码行(即s7)。
[0039] 本发明方法的第二个模块是建立正交信息表,以代码行为单位,分别统计代码覆盖数据和执行结果数据。给定代码行s,其正交信息表是一个2×2表格,表格的行代表覆盖数据,即:y—覆盖s,n—未覆盖s;列代表执行结果,即:p—通过,f—未通过;如表1所示。
[0040] 表1.
[0041]通过 未通过
覆盖 s(yp) s(yf)
未覆盖 s(np) s(nf)
[0042] 正交信息表中的表项可以采用集合操作(交集∩和规模||)来计算。令T0代表执行通过的测试用例集合,T1代表执行未通过的测试用例集合;S1代表覆盖代码行s的测试用例集合,S0代表未覆盖代码行s的测试用例集合。则4个表项的计算公式如下:
[0043] s(yp)=|S1∩T0| (1)
[0044] s(yf)=|S1∩T1| (2)
[0045] s(np)=|S0∩T0| (3)
[0046] s(nf)=|S0∩T1| (4)
[0047] 由于本发明方法采用数值0和1表示覆盖信息和执行结果信息,因此可以借助数值运算来完成正交表项的计算,不用区分集合S0和S1,公式如下:
[0048] s(yp)=∑t∈Te(t)×(1-r(t))=∑t∈T0e(t) (5)
[0049] s(yf)=∑t∈Te(t)×r(t)=∑t∈T1e(t) (6)
[0050] s(np)=∑t∈T(1-e(t))×(1-r(t))=∑t∈T0(1-e(t)) (7)
[0051] s(nf)=∑t∈T(1-e(t))×r(t)=∑t∈T1(1-e(t)) (8)
[0052] 其中e(t)代表测试用例t是否覆盖代码行s,r(t)代表用例t的执行结果。上述公式表明,正交表项的计算可以采用三种不同方法:集合操作、数值计算、集合操作结合数值计算;可以根据实现场景,选择其中性能最高的方法。
[0053] 建立正交信息表的处理流程如图3所示。首先析取软件中可执行的代码行;然后对每一个代码行s,划分测试用例集(可选)或者直接采用数值计算,构建针对代码行s的正交信息表。
[0054] 表2所示是图2示例程序A中代码行s7的正交信息表:
[0055] 表2.
[0056]s(yp)=1 s(yf)=2
s(np)=6 s(nf)=0
[0057] 为进行对比,表3所示是示例程序A中代码行s4的正交信息表:
[0058] 表3.
[0059]s(yp)=3 s(yf)=2
s(np)=4 s(nf)=0
[0060] 本发明方法的第三个模块是计算缺陷怀疑率,根据正交信息表,分别计算面向代码覆盖的条件概率、以及面向执行结果的条件概率;综合计算代码行的缺陷怀疑率。图4是基于条件概率公式计算代码行缺陷怀疑率的概念框架。其中面向代码覆盖的条件概率公式分别是P(y|f)和P(y|p),公式中y代表代码行被覆盖,p和f分别代表执行结果是通过和未通过,其计算公式如下:
[0061]
[0062]
[0063] 面向执行结果的条件概率公式分别是P(f|y)和P(f|n),其中n代表代码行未覆盖,计算公式如下:
[0064]
[0065]
[0066] 四个条件概率公式中,P(y|f)和P(f|y)同代码行缺陷怀疑率之间是正关联(Positive Effect),而P(y|p)和P(f|n)同缺陷怀疑率之间是负关联(Negative Effect)。综合面向代码覆盖的条件概率和面向执行结果的条件概率,可以计算代码行s的怀疑率F(s),公式如下:
[0067]
[0068] 以图2中的示例程序A为例,基于表2,可计算代码行s7的缺陷怀疑率如下:
[0069]
[0070] 与之对应,基于表3可计算代码行s4的缺陷怀疑率如下:
[0071]
[0072] 依次计算,不难得出s7是缺陷怀疑率最高的代码行。
[0073] 计算缺陷怀疑率的处理流程如图5所示。针对软件中每一个可执行的代码行s;基于s的正交信息表,分别计算面向代码覆盖的条件概率、及面向执行结果的条件概率;再综合计算代码行s的缺陷怀疑率;最后按照缺陷怀疑率从高到低为代码行排序,辅助完成代码缺陷定位。
[0074] 本发明方法综合软件失效和代码覆盖两个视角,设计条件概率公式及组合策略,提出一种新的基于正交分析的代码缺陷定位框架和方法。通过发掘软件代码缺陷和软件执行失效之间的逻辑依赖关系,能够快速准确地定位包含缺陷的代码行;理论分析和实验数据表明,本发明方法在缺陷定位准确率和执行效率方面,优于常用的Tarantula方法和Ochiai方法等。本发明方法计算简单,适用于不同类型的编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够快速有效地分析和处理大量的自动测试记录信息,提高软件测试和缺陷定位的性能和效率。
[0075] 本发明方法的具体应用途径很多,以上所述仅是本发明的优选实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈