发明名称 一种基于分类挖掘和版本变更的测试用例优先化方法
摘要 本发明公开了一种基于分类挖掘和版本变更的测试用例优先化方法,首先收集不同版本下的测试用例执行结果和模块变更的信息,转化成测试用例执行结果数据矩阵和模块变更数据矩阵;再为每个测试用例建立分类挖掘训练和预测所需训练集;选择贝叶斯分类HNB和AODE两个分类挖掘模型,对每个测试用例采用对应的训练集进行模型训练;根据训练好的模型预测新版本中每个测试用例发现软件缺陷的概率;根据模型预测的综合结果,结合回归测试执行的时间限制,对测试用例进行优先化排序。本发明能够以较少的测试用例数量更快更多发现新版本软件缺陷。
申请公布号 CN101908020B 申请公布日期 2012.05.09
申请号 CN201010264026.9 申请日期 2010.08.27
申请人 南京大学 发明人 张孟乐;顾庆;赵海钢;陈道蓄
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 江苏圣典律师事务所 32237 代理人 黄振华
主权项 一种基于分类挖掘和版本变更的测试用例优先化方法,其特征在于包括以下步骤:1)历史数据预处理:收集不同版本下的测试用例执行结果和模块变更的信息,转化成不同版本下测试用例执行结果数据矩阵和不同版本间模块变更数据矩阵;其中执行结果数据矩阵的转化过程为:收集每个版本vj下各测试用例ti的执行结果rij,构建测试用例执行结果数据矩阵R(m,n)=[rij]m×n,其中m为测试用例数量;n为软件版本数量;rij为矩阵元素,表示测试用例ti在软件版本vj上的执行结果,rij共有三个取值:0表示测试通过;1表示测试未通过;null即空值,表示在版本vj中测试用例ti未被执行过;模块变更数据矩阵的转化过程为:选定样例版本v0;参照版本v0,收集每个版本vj中各模块Modk的变更情况δjk,构建模块变更矩阵Δ(n,l)=[δjk]n×l,其中l为软件包含的模块数量,n为软件版本数量;矩阵元素δjk表示版本vj同样例版本v0在模块Modk上相比是否发生变更,共有两个取值:0表示版本vj跟样例版本v0相比较,在模块Modk上未发生变更;1表示版本vj跟样例版本v0相比较,在模块Modk上发生变更;2)分类挖掘训练集构建:根据步骤1)得到的两个数据矩阵,为每个测试用例建立分类挖掘训练和预测所需训练集;分类挖掘训练集构建过程是:为每个测试用例构建分类挖掘训练集,给定测试用例集T中的测试用例ti,考虑执行过测试用例ti的每个版本vj,将版本vj中每个模块Modk的变更信息δjk和该测试用例ti在版本vj的执行结果rij合并成一个数据向量:<δj1,δj2,...,δjl,rij>;然后将测试用例ti在各版本的数据向量合并成矩阵,构成测试用例ti的训练集Trainseti;针对测试用例ti,训练集Trainseti=[Δ,Ri],是一个n’×(l+1)的矩阵,其中Δ(n’,l)取自模块变更数据矩阵Δ(n,l),且不考虑未执行用例ti的版本;Ri是一个n’×1向量,是测试用例执行结果矩阵R(m,n)中第i行的转置,表示测试用例ti在n个版本中的执行结果,同样不考虑未执行用例ti的版本;3)分类挖掘训练和预测:选择贝叶斯分类HNB和AODE两个分类挖掘模型,对每个测试用例采用对应的训练集进行模型训练;根据训练好的模型预测新版本中每个测试用例发现软件缺陷的概率;4)测试用例优先化排序:根据模型预测的综合结果,结合回归测试执行的时间限制,对测试用例进行优先化排序。
地址 210093 江苏省南京市汉口路22号