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

一种基于编解码框架的核电软件测试用例生成方法技术

技术编号:38898472 阅读:18 留言:0更新日期:2023-09-22 14:18
本发明专利技术公开了一种基于编解码框架的核电软件测试用例生成方法,首先通过语法分析将程序代码转换为抽象语法树,然后对语法树中的节点和输入的测试用例分别进行词嵌入处理,将节点和测试用例转换成向量表示,使用基于树形的卷积神经网络对每个语句子树进行卷积操作,从而提取出具有区分度的执行路径特征;再将执行路径特征和测试用例词向量连接后,通过Transformer编码器获得执行路径与测试用例的联合特征表达,最后利用Transformer解码器生成测试用例。本发明专利技术能够捕捉代码执行路径的结构特点以及与测试用例之间的关联,从而生成具有高质量的测试用例,提高了核电软件测试的效率和质量。率和质量。率和质量。

【技术实现步骤摘要】
一种基于编解码框架的核电软件测试用例生成方法


[0001]本专利技术涉及核电软件测试领域,具体涉及一种基于编解码框架的核电软件测试用例生成方法。

技术介绍

[0002]由于核电软件的特殊性,在开发过程中需要进行大量的测试,以确保软件的安全性和可靠性。在核电软件的测试过程中,测试用例的设计和生成是非常关键的。测试用例覆盖率越高,发现缺陷的可能性就越大。核电软件的测试成本高、技术难度大,其测试用例的设计和生成通常是一项非常耗时和困难的任务,需要大量的人力和时间投入。因此,自动化测试用例生成技术成为了近年来研究的热点之一。
[0003]自动化测试用例生成技术可以分为两种:基于搜索的技术和基于机器学习的技术。基于搜索的技术通常使用启发式搜索方法,通过搜索来寻找测试用例。这些技术通常依赖于启发式函数来评估测试用例的质量,但由于搜索空间巨大,这些方法经常会陷入局部最优解。而基于机器学习的技术可以利用训练集中的数据来生成新的测试用例,可以更快速和准确地生成测试用例。然而,现有的基于机器学习的测试用例生成技术通常使用静态分析技术来生成测试用例,这些方法不能完全考虑代码执行路径的特征。同时,这些方法也没有考虑测试用例和代码之间的相互作用。因此,需要一种新的技术来捕捉代码执行路径的结构特点以及与测试用例之间的关联,从而更加准确地生成测试用例。

技术实现思路

[0004]本专利技术的目的在于提供一种基于编解码框架的核电软件测试用例生成方法,能够捕捉代码执行路径的结构特点以及与测试用例之间的关联,从而生成具有高质量的测试用例,提高核电软件测试的效率和质量。具体方案如下:
[0005]一种基于编解码框架的核电软件测试用例生成方法,包括以下步骤:
[0006]步骤1:通过语法分析将程序代码转换为抽象语法树:通过词法分析器将代码转换为单词序列,然后使用语法分析器将单词序列转换为抽象语法树;
[0007]步骤2:将抽象语法树表示为一个矩阵,矩阵的每一行表示语法树上的一个节点,语法树中的所有不同节点以及测试用例中的词汇收集起来形成一个词汇表;基于已有的代码数据集和测试用例数据,训练一个词嵌入模型,将语法树中的节点和输入测试用例中的词汇转换成向量表示;
[0008]步骤3:使用基于树形的卷积神经网络对每个语句子树进行卷积操作,通过多层卷积和池化操作,提取出具有区分度的执行路径特征;
[0009]步骤4:将执行路径特征向量和测试用例词向量连接起来,输入到一个训练后的Transformer编码器,Transformer编码器中的多头自注意力子层将计算输入特征之间的关联权重,对输入特征进行加权求和,进而捕捉输入特征之间的长距离依赖关系,最终获得执行路径与测试用例的联合特征表达;
[0010]步骤5:利用Transformer解码器生成测试用例:通过训练一个Transformer解码器,将编码得到的联合特征表达进行解码,重建出测试用例;
[0011]在进行测试用例生成时,首先输入一个测试用例作为种子用例,将该测试用例与待测试代码一起变换到联合特征空间中;在变换得到的特征向量附近,通过随机采样获得指定数量的样本,利用Transformer解码器解码得到生成的测试用例。
[0012]进一步的,所述步骤1具体包括:
[0013]步骤1.1:对原始程序代码进行预处理,移除不必要的空格、注释及无关信息,使代码格式统一;
[0014]步骤1.2:将预处理后的程序代码划分为词法单元,包括关键字、变量名、常量和运算符;
[0015]步骤1.3:使用编译器提供的解析工具将词法单元组织成语法树,语法树的每个节点表示一个语法成分,包括函数、条件语句和循环语句;
[0016]步骤1.4:对生成的语法树进行简化,去除冗余信息,使得语法树更适合进行特征提取。
[0017]更进一步的,所述步骤2的词嵌入模型为一个单隐层神经网络模型,包括一个输入层、一个隐层和一个输出层;输入层包括一个单词的one

hot编码,隐层大小设置为50到300之间,输出层为整个词汇表大小;在模型的训练过程中,将窗口大小设置为2到10之间,负采样数设置为5到20之间,学习率设置为在0.01到0.001之间,迭代次数设置为10到30之间。
[0018]更进一步的,所述步骤3具体包括:
[0019]设是语句子树T
i
中节点i的特征向量,其中n
i
是节点i的特征向量的维度,T
i
是树形结构中节点i的子树;树形结构中的每个节点都对应一个特征向量x
i
,将这些特征向量组成矩阵X=[x1,x2,

,x
N
]∈R
D
×
N
,其中N是树中节点的数量,D是特征向量的维度;对于节点i,定义其父节点为j,儿子节点集合为设f是一个滤波器函数,w
ij
是权重矩阵,b
i
是偏置项,则卷积运算表示为:
[0020][0021]其中,σ为非线性激活函数;x
j
为父节点j的特征向量;
[0022]对于整个树,树形的卷积神经网络的卷积运算定义为:
[0023]Y=σ(W*[Conv(X,f)1,Conv(X,f)2,

,Conv(X,f)
N
]+b)
[0024]其中,W∈R
k
×
D
是卷积核矩阵,k
×
D是卷积核的大小,b∈R
N
是偏置项向量,N是特征向量的维度,Conv(X,f)
i
表示以节点i为根节点的子树上应用滤波器函数f的卷积结果,X是树形结构中所有节点特征向量构成的矩阵,Y是卷积的输出结果。
[0025]更进一步的,所述步骤4具体包括:
[0026]步骤4.1:将联合特征向量的维度d作为Transformer编码器的输入;
[0027]步骤4.2:在输入的基础上,加入位置编码,将输入序列的位置信息嵌入到向量中;位置编码的公式为:
[0028][0029][0030]其中,pos是位置,m是维度,d是特征向量的维度;
[0031]步骤4.3:利用Transformer编码器进行编码,包括由6个相同的编码器层,每个编码器层包含一个多头自注意力机制和两个全连接层;自注意力机制用于学习输入序列的局部和全局依赖关系,全连接层用于在不同的维度之间进行交互;
[0032]Transformer编码器的公式如下:
[0033][0034]其中,表示第k个编码器层的输出向量,表示第k

1个编码器层的输出向量[x
k
;y
k
]表示输入向量,W表示权重参数;
[0035]步骤4.4:编码器的输出是联合特征向量的编码结果,即执行路径与测试用例的联合特征表达。
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于编解码框架的核电软件测试用例生成方法,其特征在于,包括以下步骤:步骤1:通过语法分析将程序代码转换为抽象语法树:通过词法分析器将代码转换为单词序列,然后使用编译器中的解析工具将单词序列转换为抽象语法树;步骤2:将抽象语法树表示为一个矩阵,矩阵的每一行表示语法树上的一个节点,语法树中的所有不同节点以及测试用例中的词汇收集起来形成一个词汇表;基于已有的代码数据集和测试用例数据,训练一个词嵌入模型,将语法树中的节点和输入测试用例中的词汇转换成向量表示;步骤3:使用基于树形的卷积神经网络对每个语句子树进行卷积操作,通过多层卷积和池化操作,提取出具有区分度的执行路径特征;步骤4:将执行路径特征向量和测试用例词向量连接起来,输入到一个训练后的Transformer编码器,Transformer编码器中的多头自注意力子层将计算输入特征之间的关联权重,对输入特征进行加权求和,进而捕捉输入特征之间的长距离依赖关系,最终获得执行路径与测试用例的联合特征表达;步骤5:利用Transformer解码器生成测试用例:通过训练一个Transformer解码器,将编码得到的联合特征表达进行解码,重建出测试用例;在进行测试用例生成时,首先输入一个测试用例作为种子用例,将该测试用例与待测试代码一起变换到联合特征空间中;在变换得到的特征向量附近,通过随机采样获得指定数量的样本,利用Transformer解码器解码得到生成的测试用例。2.根据权利要求1所述的基于编解码框架的核电软件测试用例生成方法,其特征在于,所述步骤1具体包括:步骤1.1:对原始程序代码进行预处理,移除不必要的空格、注释及无关信息,使代码格式统一;步骤1.2:将预处理后的程序代码划分为词法单元,包括关键字、变量名、常量和运算符;步骤1.3:使用编译器提供的解析工具将词法单元组织成语法树,语法树的每个节点表示一个语法成分,包括函数、条件语句和循环语句;步骤1.4:对生成的语法树进行简化,去除冗余信息,使得语法树更适合进行特征提取。3.根据权利要求1所述的基于编解码框架的核电软件测试用例生成方法,其特征在于,所述步骤2的词嵌入模型为一个单隐层神经网络模型,包括一个输入层、一个隐层和一个输出层;输入层包括一个单词的one

hot编码,隐层大小设置为50到300之间,输出层为整个词汇表大小;在模型的训练过程中,将窗口大小设置为2到10之间,负采样数设置为5到20之间,学习率设置为在0.01到0.001之间,迭代次数设置为10到30之间。4.根据权利要求1所述的基于编解码框架的核电软件测试用例生成方法,其特征在于,所述步骤3具体包括:设是语句子树T
i
中节点i的特征向量,其中n
i
是节点i的特征向量的维度,T
i
是树形结构中节点i的子树;树形结构中的每个节点都对应一个特征向量x
i
,将这些特征向量组成矩阵X=[x1,x2,

,x
N
]∈R
D
×
N
,其中N...

【专利技术属性】
技术研发人员:高琳刘明星吴鹏曹先省马权王俊峰
申请(专利权)人:四川大学
类型:发明
国别省市:

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

1