CN109857675A - 一种利用语句类型的程序错误定位方法 - Google Patents
一种利用语句类型的程序错误定位方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000004807 localization Effects 0.000 title claims abstract description 15
- 238000012360 testing method Methods 0.000 claims abstract description 51
- 238000012986 modification Methods 0.000 abstract description 3
- 230000004048 modification Effects 0.000 abstract description 3
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
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中程序员对照该排名先后进行程序的调试排错。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594870A (zh) * | 2023-04-26 | 2023-08-15 | 南通大学 | 一种基于可疑语句变异的错误定位方法 |
Citations (6)
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 | 浙江理工大学 | 一种基于条件概率的程序错误定位方法 |
-
2019
- 2019-02-28 CN CN201910151560.XA patent/CN109857675B/zh not_active Expired - Fee Related
Patent Citations (6)
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)
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)
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 |
---|---|---|
CN110515826B (zh) | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 | |
EP2960799A1 (en) | Defect localization in software integration tests | |
CN105224463B (zh) | 一种基于崩溃栈数据的软件缺陷代码定位方法 | |
US11442847B2 (en) | Automated determination of software testing resources | |
CN103995780B (zh) | 一种基于语句频度统计的程序错误定位方法 | |
CN102750223B (zh) | 一种基于面向对象程序切片谱的错误定位方法 | |
JP7404839B2 (ja) | ソフトウェアプログラム不良位置の識別 | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
Yang et al. | An empirical study on the usage of fault localization in automated program repair | |
CN104317707B (zh) | 一种基于程序结构影响感知的软件错误定位方法 | |
CN118012767B (zh) | 一种面向多覆盖率用例生成与多方法融合的软件bug定位方法 | |
CN105701013A (zh) | 基于互信息的软件缺陷数据特征选择方法 | |
CN104572474A (zh) | 一种基于动态切片的轻量级错误定位技术实现方法 | |
CN109857675A (zh) | 一种利用语句类型的程序错误定位方法 | |
CN104008051B (zh) | 频谱信息去冗优化的软件缺陷定位方法 | |
CN107102942B (zh) | 一种基于输入域错误定位的极小故障定位方法 | |
CN103455417B (zh) | 一种基于马尔可夫模型的软件错误定位系统及错误定位方法 | |
CN105528293A (zh) | 一种用于回归测试选取测试用例的系统及方法 | |
Cui et al. | Origen: Enhancing rtl code generation with code-to-code augmentation and self-reflection | |
Seiler et al. | Comparing traceability through information retrieval, commits, interaction logs, and tags | |
CN115629998A (zh) | 一种基于KMeans聚类和相似度的测试用例筛选方法 | |
CN105159826B (zh) | 一种定位目标程序中的错误语句的方法和装置 | |
CN114153735A (zh) | 一种基于频谱技术和断言切换技术的缺陷定位方法 | |
CN104536880A (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
CN107291622A (zh) | C25汇编代码静态分析方法 |
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 |