CN109857675A - 一种利用语句类型的程序错误定位方法 - Google Patents

一种利用语句类型的程序错误定位方法 Download PDF

Info

Publication number
CN109857675A
CN109857675A CN201910151560.XA CN201910151560A CN109857675A CN 109857675 A CN109857675 A CN 109857675A CN 201910151560 A CN201910151560 A CN 201910151560A CN 109857675 A CN109857675 A CN 109857675A
Authority
CN
China
Prior art keywords
program
sentence
statement
statement type
test case
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910151560.XA
Other languages
English (en)
Other versions
CN109857675B (zh
Inventor
张仕
赖会霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Normal University
Original Assignee
Fujian Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Normal University filed Critical Fujian Normal University
Priority to CN201910151560.XA priority Critical patent/CN109857675B/zh
Publication of CN109857675A publication Critical patent/CN109857675A/zh
Application granted granted Critical
Publication of CN109857675B publication Critical patent/CN109857675B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种利用语句类型的程序错误定位方法,其包括以下步骤:步骤1,确定所要测试的程序P,步骤2,确定测试用例集TS,步骤3,用TS中的测试用例作为输入执行程序P,记录语句的执行情况并形成收集数据;步骤4,利用收集数据获取执行语句s的成功测试用例数EP(TS,P,s);步骤5,根据每一个程序语句s进行语句类型系数计算style(s),步骤6,利用EP(TS,P,s)和style(s)计算反映语句类型的程序错误定位因子EPS(TS,P,s),步骤7,基于程序错误定位因子EPS(TS,P,s)计算每条程序语句的可疑度,步骤8,对每条语句的可疑度从大到小排序,获取错误语句的可疑排名。本发明能准确的区分错误语句,提早发现错误语句,提高错误定位的准确度,提高程序调试、修改错误的效率。

Description

一种利用语句类型的程序错误定位方法
技术领域
本发明涉及计算机科学与技术的程序错误自动定位领域,特别是错误定位过程中的一种自能够利用语句类型的程序错误定位方法。
背景技术
对于计算机软件开发过程而言,重要的步骤便是程序代码的编写。程序代码编写完成后,需要通过大量的测试用例实现对所编写程序的测试,一旦发现错误,首先需要做的工作便是定位错误语句,然后再对错误语句进行修改。
现有程序错误语句定位主要依赖于程序员对程序的调试,逐步跟踪观察程序运行的每一个步骤,从而发现问题所在。近年来,出现了一些根据程序运行情况进行错误语句定位的方法,该方法收集测试用例集对每一个程序语句的覆盖情况,结合该测试用例运行通过与否,从而得到每一条程序语句四个方面的影响因子,他们分别是EP(TS,P,s)、EF(TS,P,s)、NP(TS,P,s)、NF(TS,P,s),分别表示执行了语句s的成功测试用例数、执行了语句s的失败测试用例数、没有执行语句s的成功测试用例数、没有执行语句s的失败测试用例数。
现有方法均直接使用这些影响因子构造语句的可疑度计算公式,没有考虑到程序语句s的性质,所以其错误语句的定位效果难以更进一步提升。针对不同类型的程序语句,其在造成程序错误表现上会展示出不一样的现象,因此,希望有一种具有综合考虑各方面因素的影响因子,使之能够有效提高错误语句定位效果,更好的为程序开发提供支持。
发明内容
本发明的目的在于提供一种利用语句类型的程序错误定位方法。
本发明采用的技术方案是:
一种利用语句类型的程序错误定位方法,其包括以下步骤:
步骤1,确定所要测试的程序P={s1,s2,…,si,…,sm},其中si代表第i条执行语句,m代表程序P的语句数;
步骤2,确定测试用例集TS={t1,t2,…,ti,…,tn},其中ti代表第i条测试用例,n代表测试用例集的测试用例数;
步骤3,分别用TS中的测试用例作为输入执行程序P,记录语句的执行情况和用例与预期结果是否一致,并形成收集数据;
步骤4,利用收集数据获取执行每条语句s的成功测试用例数EP(TS,P,s);
步骤5,根据每一个程序的每条语句s进行语句类型系数计算style(s),计算公式如下:
其中,c1和c2均为可调整的常数且c1不等于c2;
步骤6,利用EP(TS,P,s)和style(s)计算反映语句类型的程序错误定位因子EPS(TS,P,s):
其中,k为一个常数;
步骤7,将EPS(TS,P,s)作为计算因子代入现有的程序语句的可疑度计算公式中计算得到每条程序语句的可疑度,
步骤8,对每条语句的可疑度计算结果进行从大到小排序,获取错误语句的可疑排名。
进一步地,步骤4中利用收集数据还构造EP(TS,P,s)、执行语句s的失败测试用例数EF(TS,P,s)、没有执行语句s的成功测试用例数NP(TS,P,s)和没有执行语句s的失败测试用例数NF(TS,P,s)。
进一步地,步骤5中c1的取值为c1=2,c2的取值为c2=1。
进一步地,步骤6中k的取值为k=4。
进一步地,步骤7中一可疑度计算公式如下:
其中,EF(TS,P,s)表示执行语句s的失败测试用例数,NP(TS,P,s)表示没有执行语句s的成功测试用例数,EPS(TS,P,s)表示反映语句类型的程序错误定位因子。
进一步地,步骤8中程序员对照该排名先后进行程序的调试排错。
本发明采用以上技术方案,所达到的有益效果:当使用能够反映语句类型的程序错误定位因子EPS(TS,P,s)进行程序语句可疑度计算时,该可疑值能够更加准确的区分错误语句,使错误语句能够被更早发现,从而提高错误定位的准确度,提高程序调试、修改错误的效率。
附图说明
以下结合附图和具体实施方式对本发明做进一步详细说明;
图1为本发明一种利用语句类型的程序错误定位方法的流程示意图。
具体实施方式
如图1所示,本发明公开了一种利用语句类型的程序错误定位方法,提出能够反映语句类型特点,且又能在一定程度上反映测试用例在该语句上的执行情况的因子EPS(TS,P,s),从而利用到语句可疑度计算中,提高定位效果。该因子可以替代原来四个影响因子中的EP(TS,P,s),程序错误定位方法具体包括以下步骤:
步骤1,确定所要测试的程序P={s1,s2,…,si,…,sm},其中si代表第i条执行语句,m代表程序P的语句数;
步骤2,确定测试用例集TS={t1,t2,…,ti,…,tn},其中ti代表第i条测试用例,n代表测试用例集的测试用例数;
步骤3,分别用TS中的测试用例作为输入执行程序P,记录语句的执行情况和用例与预期结果是否一致,并形成收集数据;
步骤4,利用收集数据获取执行每条语句s的成功测试用例数EP(TS,P,s);
步骤5,根据每一个程序的每条语句s进行语句类型系数计算style(s),计算公式如下:
其中,c1和c2均为可调整的常数且c1不等于c2;
步骤6,利用EP(TS,P,s)和style(s)计算反映语句类型的程序错误定位因子EPS(TS,P,s):
其中,k为一个常数;
步骤7,将EPS(TS,P,s)作为计算因子代入现有的程序语句的可疑度计算公式中计算得到每条程序语句的可疑度,
步骤8,对每条语句的可疑度计算结果进行从大到小排序,获取错误语句的可疑排名。
进一步地,步骤4中利用收集数据还构造EP(TS,P,s)、执行语句s的失败测试用例数EF(TS,P,s)、没有执行语句s的成功测试用例数NP(TS,P,s)和没有执行语句s的失败测试用例数NF(TS,P,s)。
进一步地,步骤5中c1的取值为c1=2,c2的取值为c2=1。
进一步地,步骤6中k的取值为k=4。
进一步地,步骤7中一可疑度计算公式如下:
其中,EF(TS,P,s)表示执行语句s的失败测试用例数,NP(TS,P,s)表示没有执行语句s的成功测试用例数,EPS(TS,P,s)表示反映语句类型的程序错误定位因子。
进一步地,步骤8中程序员对照该排名先后进行程序的调试排错。
下面就本发明具体的工作原理做详细说明:
例如如下程序,判断a是否大于等于b,若是则返回1,否则返回0。第一列表示程序语句编号,第二列是程序具体的语句,第三列是语句类型的判断style(s)。
表1:程序示例
测试用例集TS包含如下几个测试用例:
{(a=1,b=0),(a=1,b=1),(a=0,b=1),(a=2,b=1),(a=-1,b=2),(a=-1,b=-1),(a=-1,b=2),(a=3,b=0)},分别以TS中测试用例为输入执行程序,可以得到EP(TS,P,s),EF(TS,P,s),NP(TS,P,s),NF(TS,P,s)如下表,结合style(s)计算出EPS(TS,P,s),再计算susp(s),最后根据susp(s)进行排名,可以得到结果如最后一列。
语句 EP(TS,P,s) EF(TS,P,s) NP(TS,P,s) NF(TS,P,s) style(s) EPS(TS,P,s) susp(s) 排名
s1 6 2 0 0 1 1.565 0.561 3
s2 6 2 0 0 2 1.251 0.615 1
s3 3 0 3 2 1 1.316 0 4
s4 3 2 3 0 1 1.316 0.603 2
s5 3 2 3 0 1 1.316 0.603 2
s6 6 2 0 0 1 1.565 0.561 3
表2:测试结果图
从上述实例可以看出,按照现有一些错误定位方法,其无法达到本发明方法达到的效果,例如s1,s2,s6具有相同的EP(TS,P,s),EF(TS,P,s),NP(TS,P,s)和NF(TS,P,s),所以无法区分,而本发明方法通过利用语句类型,使他们能够反映程序中谓词条件错误概率更大的这一事实,从而得到更好的效果。在真正的应用中,通过的测试用例总是占绝大多数,且测试用例数量都可以达到百,或者千的级别,在这种情况下,该方法定位错误具有更高的准确度。
本发明采用以上技术方案,所达到的有益效果:当使用能够反映语句类型的程序错误定位因子EPS(TS,P,s)进行程序语句可疑度计算时,该可疑值能够更加准确的区分错误语句,使错误语句能够被更早发现,从而提高错误定位的准确度,提高程序调试、修改错误的效率。

Claims (6)

1.一种利用语句类型的程序错误定位方法,其特征在于:其包括以下步骤:
步骤1,确定所要测试的程序P={s1,s2,…,si,…,sm},其中si代表第i条执行语句,m代表程序P的语句数;
步骤2,确定测试用例集TS={t1,t2,…,ti,…,tn},其中ti代表第i条测试用例,n代表测试用例集的测试用例数;
步骤3,分别用TS中的测试用例作为输入执行程序P,记录语句的执行情况和用例与预期结果是否一致,并形成收集数据;
步骤4,利用收集数据获取执行每条语句s的成功测试用例数EP(TS,P,s);
步骤5,根据每一个程序的每条语句s进行语句类型系数计算style(s),计算公式如下:
其中,c1和c2均为可调整的常数且c1不等于c2;
步骤6,利用EP(TS,P,s)和style(s)计算反映语句类型的程序错误定位因子EPS(TS,P,s):
其中,k为一个常数;
步骤7,将EPS(TS,P,s)作为计算因子代入现有的程序语句的可疑度计算公式中计算得到每条程序语句的可疑度,
步骤8,对每条语句的可疑度计算结果进行从大到小排序,获取错误语句的可疑排名。
2.根据权利要求1所述的一种利用语句类型的程序错误定位方法,其特征在于:步骤4中利用收集数据还构造EP(TS,P,s)、执行语句s的失败测试用例数EF(TS,P,s)、没有执行语句s的成功测试用例数NP(TS,P,s)和没有执行语句s的失败测试用例数NF(TS,P,s)。
3.根据权利要求1所述的一种利用语句类型的程序错误定位方法,其特征在于:步骤5中c1的取值为c1=2,c2的取值为c2=1。
4.根据权利要求1所述的一种利用语句类型的程序错误定位方法,其特征在于:步骤6中k的取值为k=4。
5.根据权利要求1所述的一种利用语句类型的程序错误定位方法,其特征在于:步骤7中一可疑度计算公式如下:
其中,EF(TS,P,s)表示执行语句s的失败测试用例数,NP(TS,P,s)表示没有执行语句s的成功测试用例数,EPS(TS,P,s)表示反映语句类型的程序错误定位因子。
6.根据权利要求1所述的一种利用语句类型的程序错误定位方法,其特征在于:步骤8中程序员对照该排名先后进行程序的调试排错。
CN201910151560.XA 2019-02-28 2019-02-28 一种利用语句类型的程序错误定位方法 Expired - Fee Related CN109857675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910151560.XA CN109857675B (zh) 2019-02-28 2019-02-28 一种利用语句类型的程序错误定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910151560.XA CN109857675B (zh) 2019-02-28 2019-02-28 一种利用语句类型的程序错误定位方法

Publications (2)

Publication Number Publication Date
CN109857675A true CN109857675A (zh) 2019-06-07
CN109857675B CN109857675B (zh) 2022-05-17

Family

ID=66899528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910151560.XA Expired - Fee Related CN109857675B (zh) 2019-02-28 2019-02-28 一种利用语句类型的程序错误定位方法

Country Status (1)

Country Link
CN (1) CN109857675B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116594870A (zh) * 2023-04-26 2023-08-15 南通大学 一种基于可疑语句变异的错误定位方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016356A1 (en) * 2009-07-14 2011-01-20 International Business Machines Corporation Fault detection and localization in dynamic software applications
US20120054553A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US20130080837A1 (en) * 2011-09-28 2013-03-28 International Business Machines Corporation Fault localization for data-centric programs
CN103995780A (zh) * 2014-05-30 2014-08-20 浙江理工大学 一种基于语句频度统计的程序错误定位方法
CN105159826A (zh) * 2015-08-20 2015-12-16 浪潮(北京)电子信息产业有限公司 一种定位目标程序中的错误语句的方法和装置
CN106776283A (zh) * 2016-11-24 2017-05-31 浙江理工大学 一种基于条件概率的程序错误定位方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016356A1 (en) * 2009-07-14 2011-01-20 International Business Machines Corporation Fault detection and localization in dynamic software applications
US20120054553A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US20130080837A1 (en) * 2011-09-28 2013-03-28 International Business Machines Corporation Fault localization for data-centric programs
CN103995780A (zh) * 2014-05-30 2014-08-20 浙江理工大学 一种基于语句频度统计的程序错误定位方法
CN105159826A (zh) * 2015-08-20 2015-12-16 浪潮(北京)电子信息产业有限公司 一种定位目标程序中的错误语句的方法和装置
CN106776283A (zh) * 2016-11-24 2017-05-31 浙江理工大学 一种基于条件概率的程序错误定位方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHUNYAN MA 等: "An If-While-If model-based performance evaluation of ranking metrics for spectrabased fault localization", 《2013 IEEE 37TH ANNUAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE》 *
刘秀静: "基于错误分类谱的错误定位方法的研究", 《中国硕士学位论文全文数据库 信息科技专辑》 *
胡从兴等: "结合语句执行补集的程序错误定位", 《计算机科学与探索》 *
蔡蕊 等: "基于程序频谱的缺陷定位方法", 《计算机系统应用》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116594870A (zh) * 2023-04-26 2023-08-15 南通大学 一种基于可疑语句变异的错误定位方法
CN116594870B (zh) * 2023-04-26 2024-02-23 南通大学 一种基于可疑语句变异的错误定位方法

Also Published As

Publication number Publication date
CN109857675B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
CN101866316B (zh) 一种基于相对冗余测试集约简的软件缺陷定位方法
CN110515826B (zh) 一种基于次数频谱与神经网络算法的软件缺陷定位方法
EP2960799A1 (en) Defect localization in software integration tests
US10901882B1 (en) Automated determination of software testing resources
CN105224463A (zh) 一种基于崩溃栈数据的软件缺陷代码定位方法
CN105653647B (zh) Sql语句的信息采集方法及系统
CN103995780B (zh) 一种基于语句频度统计的程序错误定位方法
CN104317707B (zh) 一种基于程序结构影响感知的软件错误定位方法
CN105468517B (zh) 一种基于黑盒测试用例约简的统计错误定位方法
JP7404839B2 (ja) ソフトウェアプログラム不良位置の識別
Jashki et al. Towards a more efficient static software change impact analysis method
Yang et al. An empirical study on the usage of fault localization in automated program repair
CN105808438A (zh) 一种基于函数调用路径的测试用例复用方法
CN104572474A (zh) 一种基于动态切片的轻量级错误定位技术实现方法
CN109857675A (zh) 一种利用语句类型的程序错误定位方法
CN115629998A (zh) 一种基于KMeans聚类和相似度的测试用例筛选方法
CN104536882A (zh) 基于频繁子图挖掘的错误定位方法
CN114153735A (zh) 一种基于频谱技术和断言切换技术的缺陷定位方法
CN107102942B (zh) 一种基于输入域错误定位的极小故障定位方法
Seiler et al. Comparing traceability through information retrieval, commits, interaction logs, and tags
CN104536880A (zh) 基于符号执行的gui程序测试用例扩增方法
Sagdeo et al. Precis: Inferring invariants using program path guided clustering
CN105159826B (zh) 一种定位目标程序中的错误语句的方法和装置
Song et al. A New Approach for Parameter Estimation in the Sequence-structure Alignment of Non-coding RNAs.
Adler et al. Revision debug with non-linear version history in regression verification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220517

CF01 Termination of patent right due to non-payment of annual fee