基于修复缺陷的变更预测回归测试失效的方法及装置的制造方法

文档序号:9326805阅读:462来源:国知局
基于修复缺陷的变更预测回归测试失效的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及源代码的变更分析技术领域,尤其涉及一种基于修复缺陷的变更预测 回归测试失效的方法及装置。
【背景技术】
[0002] 为了修复发现的缺陷,软件的源代码经常变更。这些修复缺陷的变更可能引起非 预期的行为,使得与现在的回归测试用例的场景不一致,从而导致回归测试失效。研究表 明,48. 7%的修复缺陷的变更可能会使回归测试失效,也就意味着对于48. 7%的变更,开发 人员需要多次的运行回归测试。这是个非常耗时和枯燥的过程。因此,在运行回归测试之 前,找到哪些相应的测试用例会引发回归测试的失效对于快速修复缺陷是非常有帮助的。

【发明内容】

[0003] 本发明提供一种基于修复缺陷的变更预测回归测试失效的方法及装置,能够提供 导致回归测试失效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
[0004] 本发明提供的基于修复缺陷的变更预测回归测试失效的方法,包括:
[0005] 通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建 特征模型;
[0006] 使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型;
[0007] 使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测;
[0008] 通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
[0009] 本发明提供的基于修复缺陷的变更预测回归测试失效的装置,包括:
[0010] 特征选取单元,用于通过对修复缺陷的变更历史的分析,获取有影响的因素,从中 选取特征向量,构建特征模型;
[0011] 模型训练单元,用于使用Logistic回归模型,对所构建的特征模型进行机器学 习,得到预测模型;
[0012] 预测单元,用于使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进 行预测;
[0013] 推荐单元,用于通过对静态调用图的分析,对可能导致回归测试失效的测试用例 进行推荐。
[0014] 本发明提供的基于修复缺陷的变更预测回归测试失效的方法及装置,通过对修 复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量,构建特征模型,使用 Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模型,使用该预测模型对 修复缺陷的变更是否会导致回归测试失效进行预测,通过对静态调用图的分析,对可能导 致回归测试失效的测试用例进行推荐。与现有技术相比,本发明能够提供导致回归测试失 效的具体测试用例,便于快速修复软件源代码中存在的缺陷。
【附图说明】
[0015] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它 的附图。
[0016] 图1为本发明实施例提供的基于修复缺陷的变更预测回归测试失效的方法的流 程图;
[0017] 图2为本发明实施例中构建特征模型的18个特征向量;
[0018] 图3为本发明实施例中推荐可能导致回归测试失效的测试用例时使用的静态调 用图的关系图;
[0019] 图4为本发明实施例提供的基于修复缺陷的变更预测回归测试失效的装置的结 构示意图。
【具体实施方式】
[0020] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它 实施例,都属于本发明保护的范围。
[0021] 本发明实施例提供一种基于修复缺陷的变更预测回归测试失效的方法,如图1所 示,所述基于修复缺陷的变更预测回归测试失效的方法包括:
[0022] S11、通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取特征向量, 构建特征模型。
[0023] S12、使用Logistic回归模型,对所构建的特征模型进行机器学习,得到预测模 型。
[0024] 其中,所述Logistic回归模型如下:
[0026] 其中,g(X) = Wt^w1X1+. .. +wnxn,w为权重向量,X为特征向量。
[0027] S13、使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进行预测。
[0028] S14、通过对静态调用图的分析,对可能导致回归测试失效的测试用例进行推荐。
[0029] 进一步地,所述通过对修复缺陷的变更历史的分析,获取有影响的因素,从中选取 特征向量,构建特征模型包括:
[0030] 收集软件源代码变更的历史,对软件源代码变更的历史进行分析,得到如图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);
[0031] 特征类别为"原子变更"的特征向量共7个,分别为:AC(has added classes), DC(has deleted classes), AM(has added methods), DM(has deleted methods), CM(has changed methods body), MR(has renamed methods),PC (has changed parameters of methods);
[0032] 特征类别为"语义变更"的特征向量共6个,分别为:CC (number of changed dependencies),DD (number of deleted dependencies),AD(number of added dependencies),A/RF(has added/removed for blocks), A/Rff(has added/removed while blocks),A/RI (has added/removed if blocks)〇
[0033] 进一步地,所述使用所述预测模型对修复缺陷的变更是否会导致回归测试失效进 行预测包括:
[0034] 将修复缺陷的变更按照时间顺序进行排序;
[0035] 将修复缺陷的变更分为四份,每一份包含等量的引起回归测试失效的变更;
[0036] 使用前三份数据作为训练集来训练模型,使用最后一份数据作为测试集。
[0037] 如图3a所示,有A、B、C三个类。B是继承的A,C调用了 A类中的Π 的函数。在 新版本中修复缺陷的变更是增加了 A中的IF block。图3b中是与A,B,C类相对应的3个 Junit回归测试类TestA、TestB、TestC。其中TestA中的testl测试的是A类中的f 1函 数,TestB中的test2测试的是B类中的f2函数,TestC中的test3测试的是C类中的f3 函数。
[0038] 进一步地,所述对可能导致回归测试失效的测试用例进行预测和推荐包括:
[0039] 推荐以下两种可能导致回归测试失效的测试用例:
[0040] 第一种是直接测试那些修复缺陷的变更所在的类的测试用例。
[0041] TestA类中的testl方法就是推荐的第一种测试用例。
[0042] 第二种是测试调用修复缺陷所在的类的那些类的测试用例。
[0043] 如图3c所示,A类中Π 函数被B类的f2和C类的f3函数调用,所以当A类中的 Π 函数改变了,B类和C类的语义也会改变。所以B类的f2函数和C类的f3函数就是推 荐的第二种测试用例。
[0044] 本发明实施例提供的基于修复缺陷的变更预测回归
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1