[发明专利]一种使用生成式网络进行失败测试用例生成的方法有效
申请号: | 202111145441.7 | 申请日: | 2021-09-28 |
公开(公告)号: | CN113836027B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 胡安林;谢欢;雷晏;刘春燕;李茂锦 | 申请(专利权)人: | 重庆大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F18/2135;G06N3/0464;G06N3/084;G06N3/0455;G06N3/0475;G06N3/045;G06N3/094 |
代理公司: | 重庆晟轩知识产权代理事务所(普通合伙) 50238 | 代理人: | 王海凤 |
地址: | 400044 *** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 使用 生成 网络 进行 失败 测试 方法 | ||
1.一种使用生成式网络进行失败测试用例生成的方法,其特征在于:包括如下步骤:
S100:任意选择一个有缺陷的程序P和一组原始测试用例T,有缺陷的程序P包含N条可执行语句,原始测试用例T包含的测试用例数量为M,原始测试用例T中第i个测试用例为Ti,且Ti相对于程序P的已知输出为Ai;
S110:使用P执行T中第i个测试用例Ti,得到第i个测试用例Ti在程序P中的语句覆盖信息和第i个测试用例Ti经过程序P的实际输出Bi;
S120:对比Ai和Bi,若Ai和Bi相同,则第i个测试用例的标签Yi为0,若Ai和Bi不同,则第i个测试用例的标签Yi为1;
S130:重复S110和S120,遍历T中所有测试用例,得到所有测试用例的语句覆盖信息和所有测试用例的标签;
所有测试用例的语句覆盖信息组成覆盖矩阵X,其中X的维度为M×N;
所有测试用例的标签组成标签向量y,其中y的维度为M×1;
S200:对覆盖矩阵X进行特征选择处理,得到筛选降维后的特征空间X′,具体步骤如下:
S210:建立降维覆盖矩阵Xreduce,预设Xreduce中的特征向量数量为q,可执行语句数量为K且KN,Xreduce矩阵维度为M×K;
S220:计算覆盖矩阵X的协方差矩阵covX,且covX的维度为N×N;
S230:计算协方差矩阵covX的特征值eigenVal和每个特征值eigenVal对应的特征向量eigenVec;
其中,eigenVal包含N个特征值,eigenVec包含N个特征向量且每个特征向量的维度为N×1;
S240:将特征值eigenVal进行降序排列,选取前q个的特征值对应的特征向量组成特征向量矩阵V,且其矩阵V的维度为N×q;
S250:计算P中每条可执行语句的贡献值通过对贡献值的筛选,得到降维后的特征空间;
其中u∈{1,2,3,…,N},u表示P中的第u条可执行语句;p表示V的第p列,且p=1,2,…q;Vup表示V的第u行,第p列;
S251:将贡献值cu进行降序排列,选取前K个值,依据前K个值对应的下标u,则将Xu依次加入Xreduce中,得到筛选降维后的特征空间X′;
其中,Xu表示覆盖矩阵X的第u列,特征空间X′的维度为M×K;
S300:构建条件变分自编码网络模型;
条件变分自编码网络模型包括一个编码器和一个解码器,编码器和解码器分别由多个深度学习组件构成,其中编码器用于输出隐变量,解码器用于还原输入给编码器的样本数据;
所述编码器包括一层输入层、两层卷积层和一层输出层;
所述解码器包括一层输入层、两层卷积层和一层输出层;
S400:使用特征空间X′和特征空间X′中每个测试用例对应的标签作为训练数据,对条件变分自编码网络模型进行训练,最终得到训练好的条件变分自编码网络模型,具体训练过程如下:
S410:预设训练最大迭代次数,预设条件变分自编码网络模型输出的隐变量维度为s,并对该网络模型进行初始化;
S420:设起始行为第i′行,依次向后选择,每次选择特征空间X′中的h行,并将这h行对应的标签转换为one-hot向量,得到h个one-hot向量;
其中,i′∈{1,1+h,1+2h,…,1+(└M/h┘+1)*h};
S430:将h个one-hot向量与h行特征空间X′结合得到矩阵W,将矩阵W作为条件变分自编码网络模型的输入,输出得到h个隐变量,计算隐变量的具体步骤如下:
S431:将输入数据经过两层卷积层计算后,得到均值向量m和噪声权重向量σ,并使用KLD损失函数对噪声权重向量σ进行约束;
S432:利用高斯分布随机生成噪音向量t;
S433:利用均值向量m、噪声权重向量σ和噪音向量t计算隐变量z,具体表达式如下:
z=m+eσ*t(1)
其中,z的维度为s×h;
S440:将h个隐变量对应的标签转换为one-hot向量,将每个隐变量与相对应的one-hot向量进行叠加,得到数据组D,其中D的维度为(s+2)×h;
S450:将数据组D作为解码器的输入,经过两层卷积层处理,输出得到Xreconstruct,且Xreconstruct的维度与编码器的输入维度一致;
S460:计算损失函数衡量Xreconstruct的还原质量,具体表达式如下:
其中,MSEloss表示损失函数,j=1,2,…K;
S470:根据总损失值total_loss对条件变分自编码网络模型中的参数使用误差逆传播进行参数更新,总损失total_loss表达式如下:
total_loss=KLD loss+MSE loss (3)
其中,KLD loss表示KLD损失;
S480:重复S420-S470,遍历特征空间X′中所有测试用例数据,当训练达到最大迭代次数时停止训练,得到训练好的条件变分自编码网络模型,然后进行下一步,否则返回S420;
S500:从训练好的条件变分自编码网络模型中提取出解码器;
S600:对高斯分布进行数据采样,得到噪音向量,将标签指定为1并进行转换得到带标签的one-hot向量;
S700:将噪音向量和带标签的one-hot向量输入到解码器中,得到最终的失败测试用例结果。
2.如权利要求1所述的一种使用生成式网络进行失败测试用例生成的方法,其特征在于:所述S431中的对噪声权重向量σ进行约束的KLD损失函数具体表达式如下:
其中,KLDloss表示损失函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆大学,未经重庆大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111145441.7/1.html,转载请声明来源钻瓜专利网。