当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于分类挖掘和版本变更的测试用例优先化方法技术

技术编号:4082247 阅读:239 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于分类挖掘和版本变更的测试用例优先化方法,首先收集不同版本下的测试用例执行结果和模块变更的信息,转化成测试用例执行结果数据矩阵和模块变更数据矩阵;再为每个测试用例建立分类挖掘训练和预测所需训练集;选择贝叶斯分类HNB和AODE两个分类挖掘模型,对每个测试用例采用对应的训练集进行模型训练;根据训练好的模型预测新版本中每个测试用例发现软件缺陷的概率;根据模型预测的综合结果,结合回归测试执行的时间限制,对测试用例进行优先化排序。本发明专利技术能够以较少的测试用例数量更快更多发现新版本软件缺陷。

【技术实现步骤摘要】

本专利技术涉及软件自动化测试中的回归测试用例选择,特别涉及在软件系统存在大 量升级版本、以及存在大量测试用例的情况下,根据测试用例在此前版本的历史数据及新 版本的变更数据,挖掘出版本变更与测试用例执行结果之间的关系,从而在新版本回归测 试中指导测试用例的优先选择。
技术介绍
软件系统在整个产品生命周期中面临持续的升级换代和变更(称为软件演化)以 满足不断变化的软件需求,这需要频繁对软件系统实施回归测试,使得回归测试成本在软 件产品生命周期总成本中占据较大比例。研究指出,回归测试成本占据高达80%的测试总 成本,在软件维护成本中占到50%左右。研究回归测试选择技术,提高回归测试的效率和有 效性,能够降低回归测试成本,带来可观的经济效益。在回归测试中,测试人员需要复用已 有测试用例。在软件系统开发和升级过程中存在大量可用的测试用例,如何重用并选择测 试集成为回归测试的核心问题。在测试资源和时间约束下,测试用例优先化技术能够提高 回归测试的缺陷检测率,从而减少所需的测试用例数量,在保证测试效果的前提下降低测 试成本。测试集优先化技术根据回归测试需求的优先化目标将已有的测试用例进行排序, 使高优先级的测试用例先于低优先级的测试用例执行。传统测试优先化技术主要从代码覆 盖角度,以代码的全覆盖为目标完成测试用例的优先化排序;需要获得测试用例在以前版 本的代码覆盖情况,且需要覆盖所有的软件代码。考虑到缺陷通常由新的修改导致,而新的 修改又通常只占据全部代码的一部分;本专利技术方法通过考虑软件最近的代码变更,结合测 试用例在旧版本上的执行历史,预测测试用例在新版本上的“不通过率”(即发现软件缺陷 的概率),以指导完成对测试用例的优先选取,达到以较少的测试用例数量更快更多发现新 版本软件缺陷的目标。
技术实现思路
本专利技术是以较少数量的测试用例更快更多的发现新版本软件缺陷为目标,提出一 种测试用例的优先化方法。为实现上述目的,本专利技术所述基于分类挖掘和版本变更的测试用例优先化方法, 包括了以下步骤1)历史数据预处理收集不同版本下的测试用例执行结果和模块变更的信息,转 化成不同版本下测试用例执行结果数据矩阵和不同版本间模块变更数据矩阵;2)分类挖掘训练集构建根据步骤1)得到的两个数据矩阵,为每个测试用例建立 分类挖掘训练和预测所需训练集;3)分类挖掘训练和预测选择贝叶斯分类HNB和AODE两个分类挖掘模型,对每个 测试用例采用对应的训练集进行模型训练;根据训练好的模型预测新版本中每个测试用例发现软件缺陷的概率;4)测试用例优先化排序根据模型预测的综合结果,结合回归测试执行的时间限 制,对测试用例进行优先化排序。上述于步骤1)中执行结果数据矩阵的转化过程为收集每个版本\下各测试用 例、的执行结果IV构建测试用例执行结果数据矩阵R(m,n) = mXn,其中m为测试用 例数量;η为软件版本数量;为矩阵元素,表示测试用例、在软件版本\上的执行结果, riJ共有三个取值0表示测试通过;1表示测试未通过;null (空值)表示在版本\中测试 用例、未被执行过。上述步骤1)中模块变更数据矩阵的转化过程为选定样例版本Vtl ;参照版本V(1, 收集每个版本、中各模块Modk的变更情况δ Λ,构建模块变更矩阵Λ (n, 1) = nX1, 其中1为软件包含的模块数量;矩阵元素S Jk表示版本\同样例版本Y0在模块Modk上相 比是否发生变更,共有两个取值0表示版本Vj跟样例版本Vtl相比较,在模块Modk上未发生 变更;1表示版本\跟样例版本%相比较,在模块Modk上发生变更。上述步骤2)的分类挖掘训练集构建过程是为每个测试用例构建分类挖掘训练 集,给定测试用例集T中的测试用例考虑执行过测试用例、的每个版本\,将版本Vj 中每个模块Modk的变更信息δ Jk和该测试用例、在版本\的执行结果合并成一个数 据向量< S J1, δ J2,..., δ J1, riJ> ;然后将测试用例、在各版本的数据向量合并成矩阵,构 成测试用例、的训练集Trainseti ;针对测试用例ti;训练集Trainseti = ,是一个 η’ X (1+1)的矩阵,其中Δ (η’,1)取自模块变更数据矩阵Δ (η, 1),且不考虑未执行用例 、的版本氓是一个η’ Xl向量,是测试用例执行结果矩阵R(m,η)中第i行的转置,表示 测试用例、在η个版本中的执行结果,同样不考虑未执行用例、的版本。上述步骤3)分类挖掘训练和预测中选择贝叶斯分类模型HNB和AODE进行训练 和预测的过程是载入这两个模型并进行初始化,其中载入HNB时以默认方式初始化;载入 AODE时设置最小频度freq,缺省情况取1 ;若训练集较大时增加freq值。对每个测试用例载入对应的训练集Trainseti进行训练;当训练集较大时设置最大训练步数和最大训练 时间。组织新版本的模块变更信息,填入检验集Testseti = [Anew, θ J,其中新版本模块变 更向量Δη = { δ ^new, δ 2,new, ...,δ ^neJ ;将检验集代入上一个步骤训练好的分类挖掘模 型,预测出测试用例、在新版本的执行结果θ i,这个值是浮点值(处于O和1之间),代表 测试用例^能够发现新版本中软件缺陷的概率;综合所有测试用例的预测结果,最终输出 是一个三元组集合 Prof = Kti, θ ” type〉Iti e t,0< Qi 彡 1,1 ^ i ^ m, type e {HNB, AODE}}。上述步骤4)的测试用例优先化排序的过程是首先取测试用例、对应的Prof集 合中两个三元组,将其中的两个θ 和取平均值,得到测试用例^发现新版本软件缺陷的 最终预测概率Pi ;然后根据每个测试用例发现软件缺陷的最终概率Pi对所有测试用例进行 排序;最后根据回归测试阶段的最大允许时间timemax,选取在timemax内能够完成的前m’个 测试用例构成最终的回归测试用例集。本专利技术方法考虑到缺陷通常由新的修改导致,而新的修改又通常只占据全部代码 的一部分;基于最近的代码变更,结合测试用例在以往版本上的执行历史,采用贝叶斯分类 挖掘模型预测各测试用例在新版本中发现软件缺陷的概率,指导完成对测试用例的优先选取。本专利技术能够以较少的测试用例数量更快更多发现新版本软件缺陷。实证数据表明使用 本专利技术方法优先排序的测试用例执行序列在发现新版本软件缺陷效率方面远远优于原始 测试用例序列,接近最理想排序的效果。 下面结合附图进行详细说明。附图说明图1是基于分类挖掘和版本变更的测试用例优先化方法总体流程图,图2是测试数据预处理的流程图,图3是记录不同版本下测试用例执行结身艮信息的数据矩阵,图4是模块变更数据预处理的流程图,图5是记录不同版本下模块变更信息的_女据矩阵,图6是分类挖掘训练集构建的流程图,图7是每个测试用例的分类挖掘训练集的组织结构示意图,图8是分类挖掘训练和预测的流程图,图9是利用预测结果完成测试用例优先化排序的处理流程图。具体实施例方式如图1所示,本专利技术方法处理流程包含历史数据预处理、分类挖掘训练集构建、分 类挖掘训练和预测、以及测试用例优先化排序四个模块。其中历史数据预处理模块负责收 集和提取本文档来自技高网
...

【技术保护点】
一种基于分类挖掘和版本变更的测试用例优先化方法,其特征在于包括以下步骤:1)历史数据预处理:收集不同版本下的测试用例执行结果和模块变更的信息,转化成不同版本下测试用例执行结果数据矩阵和不同版本间模块变更数据矩阵;2)分类挖掘训练集构建:根据步骤1)得到的两个数据矩阵,为每个测试用例建立分类挖掘训练和预测所需训练集;3)分类挖掘训练和预测:选择贝叶斯分类HNB和AODE两个分类挖掘模型,对每个测试用例采用对应的训练集进行模型训练;根据训练好的模型预测新版本中每个测试用例发现软件缺陷的概率;4)测试用例优先化排序:根据模型预测的综合结果,结合回归测试执行的时间限制,对测试用例进行优先化排序。

【技术特征摘要】

【专利技术属性】
技术研发人员:张孟乐顾庆赵海钢陈道蓄
申请(专利权)人:南京大学
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1