CN107102942B - 一种基于输入域错误定位的极小故障定位方法 - Google Patents
一种基于输入域错误定位的极小故障定位方法 Download PDFInfo
- Publication number
- CN107102942B CN107102942B CN201710213344.4A CN201710213344A CN107102942B CN 107102942 B CN107102942 B CN 107102942B CN 201710213344 A CN201710213344 A CN 201710213344A CN 107102942 B CN107102942 B CN 107102942B
- Authority
- CN
- China
- Prior art keywords
- test case
- minimum fault
- mode
- generating
- fault mode
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种基于输入域错误定位的极小故障定位方法,具体包含以下步骤:首先生成并分析输入集,对其分类,形成失效的测试用例和通过的测试用例;然后通过迭代交互故障定位方法得到故障定位结果,获得未经过约简的极小故障模式集;最后对得到的未经过约简的极小故障模式进行约简,减少冗余性,得到更为精简的极小故障模式集。本发明在现有的迭代交互故障定位方法下进行进一步的优化,对极小故障模式进行约简,减少了极小故障模式的冗余性,保证极小故障定位达到更优的效果。本发明能够帮助减少需要使用极小故障模式集的程序开发人员的调用时间,有效地提高程序开发人员的工作效率。
Description
技术领域
本发明属于软件测试领域,涉及一种组合测试中的故障定位,尤其涉及改进现有方法含有较多隐含假设,且现有方法的错误定位能力有限环境下的定位方法。
背景技术
软件测试是软件工程中必不可少的用来鉴定软件的正确性、完整性、安全性和品质的过程,是保证软件质量的重要环节。软件测试的关键问题是寻找尽可能小的测试用例集,以最小的成本发现待测试软件中潜在的问题。人们根据软件开发的不同阶段、不同的测试对象、基于不同的理论和角度提出了一系列软件测试方法。在软件开发的不同阶段,测试也被分为单元测试、集成测试、系统测试、回归测试等等。按照测试的类型划分,测试又可被分为功能测试、压力测试、性能测试、安全测试、兼容性测试等等
组合测试旨在从待测软件面临的庞大组合空间中,选取少量的测试用例,以高效、科学、系统地检测软件系统中各种因素及其相互作用可能促发的故障。使用组合测试发现错误后,需要进行故障定位工作,以便对软件进行调试和修正。在待测系统中,如果有一个m值模式,包含它的所有测试用例都是失败测试用例,那它就是该系统的一个故障模式,如果它的任意真子模式都不再是故障模式,那么它就是该系统的一个极小故障模式(MinimalFailure-causing Schema,MFS)。极小故障模式是软件系统中众多可能故障模式的内核,是使软件系统发生组合相关的故障的根本原因,它精确地描述了哪些因素间的相互作用会触发故障。极小故障模式中设计的每个因素都是触发软件故障必不可少的条件之一,组合测试以及其后的故障定位过程本质上就是发现和寻找极小故障模式的过程。
由于实际情况下执行完整的测试用例太过庞大,但若执行不完整的测试用例得到的失败测试用例和通过测试用例都不完整,会出现MFS的欠缺,因此人们提出了很多非常有效的方法,如分类树法、故障调试技术、故障定位表等其他故障定位方法,所有这些故障定位方法可分为两类:自适应方法(Adaptive Method)和非自适应方法(Non-adaptiveMethod)。但是这些方法还存在很多问题,例如定位精度不高和定位成本很高等问题,需要进一步的深入研究。
发明内容
本发明要解决的技术问题是通过现有的迭代交互故障定位方法生成的极小故障模式集具有重复性,极小故障模式集有冗余。
为解决上述问题,本发明在迭代交互故障定位方法的基础上对其生成的极小故障模式集进行分析和改进,解决极小故障模式集的冗余性,提出的技术方案为一种基于输入域错误定位的极小故障定位方法,具体包含以下步骤:
步骤1:生成并分析输入集,对其分类,形成失效的测试用例和通过的测试用例;
步骤2:通过迭代交互故障定位方法得到故障定位结果,获得未经过约简的极小故障模式集;
步骤3:对得到的未经过约简的极小故障模式进行约简,减少冗余性,得到更为精简的极小故障模式集。
进一步,上述步骤1具体包含以下步骤:
步骤1-1:通过现有工具生成τ-维组合覆盖表作为待测软件SUT的测试用例集T;
步骤1-2:测试包含T的SUT,判断T中测试用例是否为失效测试用例;
步骤1-2-1:如判断为是,将失效测试用例放入T1中;
步骤1-2-2:如判断为否,将通过测试用例放入T2中;
步骤1-3:生成子模式;
步骤1-3-1:将T1的所有子模式放入ScheSet(T1)中;
步骤1-3-2:将T2的所有子模式放入ScheSet(T2)中;
步骤1-4:生成初始结果SuspSet(0)=ScheSet(T1)-ScheSet(T2)。
步骤2具体包含以下步骤:
步骤2-1:判断上一次循环结果SuspSet(i-1)是否达到合适集合大小或者是否同SuspSet(i-2)的集合大小相同;
步骤2-1-1:如判断为是,退出循环,返回SuspSet(i),跳转到步骤3,继续分析;
步骤2-1-2:如判断为否,进行下一步生成附加测试用例工作;
步骤2-2:生成附加测试用例,为每次循环生成T1中的每个失效测试用例的变异强度为i的附加测试用例集AT(i);
步骤2-3:将AT(i)分为失效测试用例集AT(i)1和通过测试用例集AT(i)2;
步骤2-4:生成循环结果SuspSet(i)=SuspSet(i-1)-ScheSet(AT(i)2),跳转到步骤2-1,继续分析。
上述步骤3具体包含以下步骤:
步骤3-1:将每个极小故障模式依照现有的极小故障模式集进行父子模式关系的排序,判断当前极小故障模式是否拥有子模式;
步骤3-2:如判断为是,删除父模式,保留子模式,跳转到步骤3-1,继续分析;
步骤3-3:如判断为否,保留当前故障模式作为极小故障模式,停止程序。
与现有技术相比,本发明具有如下有益效果:
1,本发明在现有的迭代交互故障定位方法下进行进一步的优化,对极小故障模式进行约简,减少了极小故障模式的冗余性,保证极小故障定位达到更优的效果。
2,本发明能够帮助减少需要使用极小故障模式集的程序开发人员的调用时间,有效地提高程序开发人员的工作效率。
附图说明
图1为分析输入集的方法流程图。
图2为运用迭代交互故障定位方法得到故障定位结果的方法流程图。
图3为对得到的故障模式进行约简的方法流程图。
具体实施方式
下图结合说明图附图对本发明创造作进一步的详细说明。
本发明提供了一种解决现有的迭代交互故障定位方法中生成的故障模式具有重复性使得极小故障模式有冗余的方法,该方法在现有迭代交互故障定位方法的基础对生成的极小故障模式集进行优化,其内容是通过删除其中的父模式留下子模式来达到对极小故障模式集的约简,从而减少了现有极小故障模式集的冗余程度,提高了极小故障定位的效果。
为便于本领域的普通技术人员理解和实施本发明,现提供2个实施例。
实施例1:实现本发明方法的具体包括如下步骤:
步骤1:生成输入集,并通过如图1所示分类其中的失效的测试用例和通过的测试用例,具体的技术方案如下:
步骤1-1:通过现有工具生成τ-维组合覆盖表作为待测软件SUT的测试用例集T;
步骤1-2:测试包含T的SUT,判断T中测试用例是否为失效测试用例;
步骤1-2-1:判断为是,将失效测试用例放入T1中;
步骤1-2-2:判断为否,将通过测试用例放入T2中;
步骤1-3:生成子模式;
步骤1-3-1:将T1的所有子模式放入ScheSet(T1)中;
步骤1-3-2:将T2的所有子模式放入ScheSet(T2)中;
步骤1-4:生成初始结果SuspSet(0)=ScheSet(T1)-ScheSet(T2);
步骤2:通过迭代交互故障定位方法得到故障定位结果,获得未经过约简的极小故障模式集,如图2所示,具体的技术方案如下:
步骤2-1:判断上一次循环结果SuspSet(i-1)是否达到合适集合大小或者是否同SuspSet(i-2)的集合大小相同;
步骤2-1-1:判断为是,退出循环,返回SuspSet(i),跳转到步骤3,继续分析;
步骤2-1-2:判断为否,进行下一步生成附加测试用例工作;
步骤2-2:生成附加测试用例,为每次循环生成T1中的每个失效测试用例的变异强度为i的附加测试用例集AT(i);
步骤2-3:将AT(i)分为失效测试用例集AT(i)1和通过测试用例集AT(i)2;
步骤2-4:生成循环结果SuspSet(i)=SuspSet(i-1)-ScheSet(AT(i)2),跳转到步骤2-1,继续分析;
步骤3:对得到的极小故障模式集进行约简,减少冗余性,得到更为精简的极小故障模式集,如图3所示,具体的技术方案如下:
步骤3-1:将每个极小故障模式依照现有的极小故障模式集进行父子模式关系的排序,判断当前极小故障模式是否拥有子模式;
步骤3-1-1:判断为是,删除父模式,保留子模式,跳转到步骤3-1,继续分析;
步骤3-1-2:判断为否,保留当前故障模式作为极小故障模式,停止程序。
实施例2:
具体应用场景:本发明考虑到在测试用例集中测试用例数量众多时,通过迭代交互故障定位方法得到的故障定位结果会有一定程度的冗余情况,测试用例数量越多,冗余的严重性也就越高,得到的极小故障模式集也就过于庞大,使得极小故障定位的效率不够高。本发明就是在这种情况下,在迭代交互故障定位方法的基础上进行改进优化,提高极小故障定位的效率。首先,生成并分析输入集,对其中的失效测试用例集和通过测试用例集进行分类,然后通过迭代交互故障定位方法得到的故障定位结果为未经过约简的极小故障模式集,接着利用极小故障模式集中各极小故障模式间的父子模式关系对现有的极小故障模式集进行约简。这样,减少了现有方法中极小故障模式集中的冗余性,优化了极小故障模式集的数量,保证了极小故障定位达到更优的效果,减轻了需要使用极小故障模式集的程序开发人员的工作负担,提高了工作效率。
Claims (1)
1.一种基于输入域错误定位的极小故障定位方法,其特征在于包含以下步骤:
步骤1:生成并分析输入集,对其分类,形成失效的测试用例和通过的测试用例,包括:
步骤1-1:通过现有工具生成τ-维组合覆盖表作为待测软件SUT的测试用例集T;
步骤1-2:测试包含T的SUT,判断T中测试用例是否为失效测试用例;
步骤1-2-1:如判断为是,将失效测试用例放入T1中;
步骤1-2-2:如判断为否,将通过测试用例放入T2中;
步骤1-3:生成子模式;
步骤1-3-1:将T1的所有子模式放入ScheSet(T1)中;
步骤1-3-2:将T2的所有子模式放入ScheSet(T2)中;
步骤1-4:生成初始结果SuspSet(0)=ScheSet(T1)-ScheSet(T2);
步骤2:通过迭代交互故障定位方法得到故障定位结果,获得未经过约简的极小故障模式集,包括:
步骤2-1:判断上一次循环结果SuspSet(i-1)是否达到合适集合大小或者是否同SuspSet(i-2)的集合大小相同;
步骤2-1-1:如判断为是,退出循环,返回SuspSet(i),跳转到步骤2-3,继续分析;
步骤2-1-2:如判断为否,进行下一步生成附加测试用例工作;
步骤2-2:生成附加测试用例,为每次循环生成T1中的每个失效测试用例的变异强度为i的附加测试用例集AT(i);
步骤2-3:将AT(i)分为失效测试用例集AT(i)1和通过测试用例集AT(i)2;
步骤2-4:生成循环结果SuspSet(i)=SuspSet(i-1)-ScheSet(AT(i)2),跳转到步骤2-1,继续分析;
步骤3:对得到的未经过约简的极小故障模式进行约简,减少冗余性,得到更为精简的极小故障模式集,包括:
步骤3-1:将每个极小故障模式依照现有的极小故障模式集进行父子模式关系的排序,判断当前极小故障模式是否拥有子模式;
步骤3-2:如判断为是,删除父模式,保留子模式,跳转到步骤3-1,继续分析;
步骤3-3:如判断为否,保留当前故障模式作为极小故障模式,停止程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710213344.4A CN107102942B (zh) | 2017-04-01 | 2017-04-01 | 一种基于输入域错误定位的极小故障定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710213344.4A CN107102942B (zh) | 2017-04-01 | 2017-04-01 | 一种基于输入域错误定位的极小故障定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107102942A CN107102942A (zh) | 2017-08-29 |
CN107102942B true CN107102942B (zh) | 2020-09-25 |
Family
ID=59675453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710213344.4A Active CN107102942B (zh) | 2017-04-01 | 2017-04-01 | 一种基于输入域错误定位的极小故障定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107102942B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319517B (zh) * | 2017-12-21 | 2021-08-27 | 北京旋极信息技术股份有限公司 | 一种故障诊断的方法及装置 |
CN109490753B (zh) * | 2018-11-13 | 2020-12-08 | 吉林大学 | 一种结合极小碰集约简集成电路测试模式集的方法 |
CN113127334A (zh) * | 2020-01-15 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备和存储设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866316A (zh) * | 2010-06-23 | 2010-10-20 | 南京大学 | 一种基于相对冗余测试集约简的软件缺陷定位方法 |
CN102063376A (zh) * | 2011-02-16 | 2011-05-18 | 哈尔滨工程大学 | 一种测试用例选取方法 |
CN104050086A (zh) * | 2014-07-01 | 2014-09-17 | 南京邮电大学 | 基于组合测试的错误定位方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2358563A1 (en) * | 2001-10-05 | 2003-04-05 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for managing software testing |
-
2017
- 2017-04-01 CN CN201710213344.4A patent/CN107102942B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866316A (zh) * | 2010-06-23 | 2010-10-20 | 南京大学 | 一种基于相对冗余测试集约简的软件缺陷定位方法 |
CN102063376A (zh) * | 2011-02-16 | 2011-05-18 | 哈尔滨工程大学 | 一种测试用例选取方法 |
CN104050086A (zh) * | 2014-07-01 | 2014-09-17 | 南京邮电大学 | 基于组合测试的错误定位方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107102942A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846637B2 (en) | Machine learning based software program repair | |
US10296447B2 (en) | Automated software program repair | |
US10133657B2 (en) | Textual similarity based software program repair | |
CN110515826B (zh) | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 | |
CN107102942B (zh) | 一种基于输入域错误定位的极小故障定位方法 | |
CN109885499B (zh) | 一种机器人自动化测试系统及测试方法 | |
US10496459B2 (en) | Automated software program repair candidate selection | |
US10268572B2 (en) | Interactive software program repair | |
Jiang et al. | A debugging approach for java runtime exceptions based on program slicing and stack traces | |
CN104572474A (zh) | 一种基于动态切片的轻量级错误定位技术实现方法 | |
Guo et al. | An empirical study on the effect of dynamic slicing on automated program repair efficiency | |
US10180897B2 (en) | Automated software program repair | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
Shaheamlung et al. | A comprehensive review for test case prioritization in software engineering | |
Lei et al. | Effective fault localization approach using feedback | |
CN112685320A (zh) | 一种基于多候选程序的软件缺陷修复方法及装置 | |
JP2020126603A (ja) | 自動候補修正パッチ生成 | |
US20200257613A1 (en) | Automated software program repair | |
CN109032943A (zh) | 一种基于robot framework测试用例并发执行的方法 | |
Shu et al. | Fault localization using a failed execution slice | |
Liu | A tool supported testing method for reducing cost and improving quality | |
Pathania et al. | Role of test case prioritization based on regression testing using clustering | |
Sun et al. | d (mu) Reg: A Path-Aware Mutation Analysis Guided Approach to Regression Testing | |
Bach et al. | Dynamic unit test extraction via time travel debugging for test cost reduction | |
CN112416807A (zh) | 一种测试用例结果分析及关联的系统及方法 |
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 |