CN105045719B - 基于修复缺陷的变更预测回归测试失效的方法及装置 - Google Patents
基于修复缺陷的变更预测回归测试失效的方法及装置 Download PDFInfo
- Publication number
- CN105045719B CN105045719B CN201510524123.XA CN201510524123A CN105045719B CN 105045719 B CN105045719 B CN 105045719B CN 201510524123 A CN201510524123 A CN 201510524123A CN 105045719 B CN105045719 B CN 105045719B
- Authority
- CN
- China
- Prior art keywords
- change
- defect
- test
- regression test
- caused
- 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
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于修复缺陷的变更预测回归测试失效的方法及装置,涉及源代码的变更分析技术领域,用于解决现有技术无法找到哪些相应的测试用例会引发回归测试的失效的问题。所述方法包括:通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。本发明适用于在修复软件源代码中存在的缺陷时提供导致回归测试失效的具体测试用例。
Description
技术领域
本发明涉及源代码的变更分析技术领域,尤其涉及一种基于修复缺陷的变更预测回归测试失效的方法及装置。
背景技术
为了修复发现的缺陷,软件的源代码经常变更。这些修复缺陷的变更可能引起非预期的行为,使得与现在的回归测试用例的场景不一致,从而导致回归测试失效。研究表明,48.7%的修复缺陷的变更可能会使回归测试失效,也就意味着对于48.7%的变更,开发人员需要多次的运行回归测试。这是个非常耗时和枯燥的过程。因此,在运行回归测试之前,找到哪些相应的测试用例会引发回归测试的失效对于快速修复缺陷是非常有帮助的。
发明内容
本发明提供一种基于修复缺陷的变更预测回归测试失效的方法及装置,能够提供导致回归测试失效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
本发明提供的基于修复缺陷的变更预测回归测试失效的方法,包括:
通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;
使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
本发明提供的基于修复缺陷的变更预测回归测试失效的装置,包括:
特征选取单元,用于通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;
模型训练单元,用于使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
预测单元,用于使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
推荐单元,用于通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
本发明提供的基于修复缺陷的变更预测回归测试失效的方法及装置,通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型,使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型,使用该预测模型对修复缺陷的变更是否会导致回归测试失效进行预测,通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。与现有技术相比,本发明能够提供导致回归测试失效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的基于修复缺陷的变更预测回归测试失效的方法的流程图;
图2为本发明实施例中构建特征模型的18个特征向量;
图3为本发明实施例中推荐可能导致回归测试失效的测试用例时使用的静态调用图的关系图;
图4为本发明实施例提供的基于修复缺陷的变更预测回归测试失效的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种基于修复缺陷的变更预测回归测试失效的方法,如图1所示,所述基于修复缺陷的变更预测回归测试失效的方法包括:
S11、通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型。
S12、使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型。
其中,所述Logistic回归模型如下:
其中,g(x)=w0+w1x1+...+wnxn,w为权重向量,x为特征向量。
S13、使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测。
S14、通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
进一步地,所述通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型包括:
收集软件源代码变更的历史,对软件源代码变更的历史进行分析,得到如图2所示的三种特征类别共18个特征向量;其中,特征类别为“大小”的特征向量共5个,分别为:LA(lines of code added),LD(lines of code deleted),LF(number of files changed),NC(number of changed class),NM(number of changed method);
特征类别为“原子变更”的特征向量共7个,分别为:AC(has added classes),DC(has deleted classes),AM(has added methods),DM(has deleted methods),CM(haschanged methods body),MR(has renamed methods),PC(has changed parameters ofmethods);
特征类别为“语义变更”的特征向量共6个,分别为:CC(number of changeddependencies),DD(number of deleted dependencies),AD(number of addeddependencies),A/RF(has added/removed for blocks),A/RW(has added/removed whileblocks),A/RI(has added/removed if blocks)。
进一步地,所述使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测包括:
将修复缺陷的变更按照时间顺序进行排序;
将修复缺陷的变更分为四份,每一份包含等量的引起回归测试失效的变更;
使用前三份数据作为训练集来训练模型,使用最后一份数据作为测试集。
如图3a所示,有A、B、C三个类。B是继承的A,C调用了A类中的f1的函数。在新版本中修复缺陷的变更是增加了A中的IF block。图3b中是与A,B,C类相对应的3个Junit回归测试类TestA、TestB、TestC。其中TestA中的test1测试的是A类中的f1函数,TestB中的test2测试的是B类中的f2函数,TestC中的test3测试的是C类中的f3函数。
进一步地,所述对可能导致回归测试失效的测试用例进行预测和推荐包括:
推荐以下两种可能导致回归测试失效的测试用例:
第一种是直接测试那些修复缺陷的变更所在的类的测试用例。
TestA类中的test1方法就是推荐的第一种测试用例。
第二种是测试调用修复缺陷所在的类的那些类的测试用例。
如图3c所示,A类中f1函数被B类的f2和C类的f3函数调用,所以当A类中的f1函数改变了,B类和C类的语义也会改变。所以B类的f2函数和C类的f3函数就是推荐的第二种测试用例。
本发明实施例提供的基于修复缺陷的变更预测回归测试失效的方法,通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型,使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型,使用该预测模型对修复缺陷的变更是否会导致回归测试失效进行预测,通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。与现有技术相比,本发明能够提供导致回归测试失效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
本发明实施例还提供一种基于修复缺陷的变更预测回归测试失效的装置,如图4所示,所述基于修复缺陷的变更预测回归测试失效的装置包括:
特征选取单元11,用于通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;
模型训练单元12,用于使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
预测单元13,用于使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
推荐单元14,用于通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
进一步地,所述预测单元13,可用于将修复缺陷的变更按照时间顺序进行排序,将修复缺陷的变更分为四份,每一份包含等量的引起回归测试失效的变更,使用前三份数据作为训练集来训练模型,使用最后一份数据作为测试集。
进一步地,所述推荐单元14,可用于推荐以下两种可能导致回归测试失效的测试用例:直接测试那些修复缺陷的变更所在的类的测试用例,以及测试调用修复缺陷所在的类的那些类的测试用例。
本发明提供的基于修复缺陷的变更预测回归测试失效的装置,通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型,使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型,使用该预测模型对修复缺陷的变更是否会导致回归测试失效进行预测,通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。与现有技术相比,本发明能够提供导致回归测试失效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
本发明实施例提供的基于修复缺陷的变更预测回归测试失效的方法及装置,适用于在修复软件源代码中存在的缺陷时提供导致回归测试失效的具体测试用例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种基于修复缺陷变更的预测回归测试失效的方法,其特征在于,包括:
通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;
使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐;
所述使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测包括:将修复缺陷的变更按照时间顺序进行排序;将修复缺陷的变更分为四份,每一份包含等量的引起回归测试失效的变更;使用前三份数据作为训练集来训练模型,使用最后一份数据作为测试集。
2.根据权利要求1所述的方法,其特征在于,所述通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型包括:
收集软件源代码变更的历史,对软件源代码变更的历史进行分析,得到三种特征类别共18个特征向量;其中,特征类别为“大小”的特征向量共5个,分别为:LA,即lines of codeadded,LD,即lines of code deleted,LF,即number of files changed,NC,即number ofchanged class,NM,即number of changed method;
特征类别为“原子变更”的特征向量共7个,分别为:AC,即has added classes,DC,即has deleted classes,AM,即has added methods,DM,即has deleted methods,CM,即haschanged methods body,MR,即has renamed methods,PC,即has changed parameters ofmethods;
特征类别为“语义变更”的特征向量共6个,分别为:CC,即number of changeddependencies,DD,即number of deleted dependencies,AD,即number of addeddependencies,A/RF,即has added/removed for blocks,A/RW,即has added/removedwhile blocks,A/RI,即has added/removed if blocks。
3.根据权利要求1所述的方法,其特征在于,所述Logistic回归模型如下:
其中,g(x)=w0+w1x1+...+wnxn,w为权重向量,x为特征向量。
4.根据权利要求1所述的方法,其特征在于,所述对可能导致回归测试失效的测试用例进行预测和推荐包括:
推荐以下两种可能导致回归测试失效的测试用例:直接测试那些修复缺陷的变更所在的类的测试用例,以及测试调用修复缺陷所在的类的那些类的测试用例。
5.一种基于修复缺陷变更的预测回归测试失效的装置,其特征在于,包括:
特征选取单元,用于通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型;
模型训练单元,用于使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
预测单元,用于使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
推荐单元,用于通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐;
所述预测单元,还用于将修复缺陷的变更按照时间顺序进行排序,将修复缺陷的变更分为四份,每一份包含等量的引起回归测试失效的变更,使用前三份数据作为训练集来训练模型,使用最后一份数据作为测试集。
6.根据权利要求5所述的装置,其特征在于,所述推荐单元,用于推荐以下两种可能导致回归测试失效的测试用例:直接测试那些修复缺陷的变更所在的类的测试用例,以及测试调用修复缺陷所在的类的那些类的测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510524123.XA CN105045719B (zh) | 2015-08-24 | 2015-08-24 | 基于修复缺陷的变更预测回归测试失效的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510524123.XA CN105045719B (zh) | 2015-08-24 | 2015-08-24 | 基于修复缺陷的变更预测回归测试失效的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045719A CN105045719A (zh) | 2015-11-11 |
CN105045719B true CN105045719B (zh) | 2018-06-19 |
Family
ID=54452282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510524123.XA Active CN105045719B (zh) | 2015-08-24 | 2015-08-24 | 基于修复缺陷的变更预测回归测试失效的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045719B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442514B (zh) * | 2019-07-11 | 2024-01-12 | 扬州大学 | 基于学习算法实现缺陷修复推荐的方法 |
US11295242B2 (en) | 2019-11-13 | 2022-04-05 | International Business Machines Corporation | Automated data and label creation for supervised machine learning regression testing |
US11226889B2 (en) | 2020-05-05 | 2022-01-18 | International Business Machines Corporation | Regression prediction in software development |
CN112115045B (zh) * | 2020-08-19 | 2022-03-18 | 北京航空航天大学 | 一种复杂软件系统失效预测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005063208A (ja) * | 2003-08-14 | 2005-03-10 | Nippon Telegr & Teleph Corp <Ntt> | ソフトウェア信頼度成長モデル選択方法、ソフトウェア信頼度成長モデル選択装置、ソフトウェア信頼度成長モデル選択プログラム、およびプログラム記録媒体 |
CN102831060A (zh) * | 2012-08-24 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的部件软件回归测试用例更新方法 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN104111887A (zh) * | 2014-07-01 | 2014-10-22 | 江苏科技大学 | 基于Logistic模型的软件故障预测系统及方法 |
CN104503917A (zh) * | 2015-01-04 | 2015-04-08 | 牟永敏 | 基于数据流函数调用路径的变更影响域分析方法及系统 |
-
2015
- 2015-08-24 CN CN201510524123.XA patent/CN105045719B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005063208A (ja) * | 2003-08-14 | 2005-03-10 | Nippon Telegr & Teleph Corp <Ntt> | ソフトウェア信頼度成長モデル選択方法、ソフトウェア信頼度成長モデル選択装置、ソフトウェア信頼度成長モデル選択プログラム、およびプログラム記録媒体 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN102831060A (zh) * | 2012-08-24 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的部件软件回归测试用例更新方法 |
CN104111887A (zh) * | 2014-07-01 | 2014-10-22 | 江苏科技大学 | 基于Logistic模型的软件故障预测系统及方法 |
CN104503917A (zh) * | 2015-01-04 | 2015-04-08 | 牟永敏 | 基于数据流函数调用路径的变更影响域分析方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105045719A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045719B (zh) | 基于修复缺陷的变更预测回归测试失效的方法及装置 | |
Heckman et al. | A model building process for identifying actionable static analysis alerts | |
US20120331439A1 (en) | Software development automated analytics | |
US20090265693A1 (en) | Method and system for test run prioritization for software code testing in automated test execution | |
US20120042302A1 (en) | Selective regression testing | |
Mondal et al. | A comparative study on the bug-proneness of different types of code clones | |
EP2960799A1 (en) | Defect localization in software integration tests | |
KR102258942B1 (ko) | 인라인 수율 모니터링을 위한 임계 파라메트릭 전기 테스트 파라미터의 자동 결정을 위한 시스템 및 방법 | |
CN112005259A (zh) | 用于商品测试的测试脚本的智能选择 | |
Bandi et al. | Empirical evidence of code decay: A systematic mapping study | |
Noor et al. | Test case analytics: Mining test case traces to improve risk-driven testing | |
GB2460407A (en) | Using coverage data to choose software regression tests | |
JP7202078B2 (ja) | 保全作業支援システム | |
Ell | Identifying failure inducing developer pairs within developer networks | |
Song et al. | Novel application of deep learning for adaptive testing based on long short-term memory | |
van der Leij et al. | Data-driven extract method recommendations: a study at ING | |
CN110765007A (zh) | 一种面向安卓应用的崩溃信息线上分析方法 | |
US20100131091A1 (en) | A method and relative device for the management of technological recipe information to aid in defining process flows, in particular for the development and production of micro-and nanotechnology devices in cleanroom laboratories | |
JP2023534200A (ja) | 自動支援型回路検証 | |
US20040010441A1 (en) | Metrics analyzer tool and method | |
US9348733B1 (en) | Method and system for coverage determination | |
Islam et al. | A Package Based Clustering for enhancing software defect prediction accuracy | |
CN107102938A (zh) | 测试脚本的更新方法及装置 | |
Duan et al. | Process mining of duplicate tasks: A systematic literature review | |
Aktaş et al. | A learning-based bug predicition method for object-oriented systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |