【技术实现步骤摘要】
一种基于编解码框架的核电软件测试用例生成方法
[0001]本专利技术涉及核电软件测试领域,具体涉及一种基于编解码框架的核电软件测试用例生成方法。
技术介绍
[0002]由于核电软件的特殊性,在开发过程中需要进行大量的测试,以确保软件的安全性和可靠性。在核电软件的测试过程中,测试用例的设计和生成是非常关键的。测试用例覆盖率越高,发现缺陷的可能性就越大。核电软件的测试成本高、技术难度大,其测试用例的设计和生成通常是一项非常耗时和困难的任务,需要大量的人力和时间投入。因此,自动化测试用例生成技术成为了近年来研究的热点之一。
[0003]自动化测试用例生成技术可以分为两种:基于搜索的技术和基于机器学习的技术。基于搜索的技术通常使用启发式搜索方法,通过搜索来寻找测试用例。这些技术通常依赖于启发式函数来评估测试用例的质量,但由于搜索空间巨大,这些方法经常会陷入局部最优解。而基于机器学习的技术可以利用训练集中的数据来生成新的测试用例,可以更快速和准确地生成测试用例。然而,现有的基于机器学习的测试用例生成技术通常使用静态分析技术来生成测试用例,这些方法不能完全考虑代码执行路径的特征。同时,这些方法也没有考虑测试用例和代码之间的相互作用。因此,需要一种新的技术来捕捉代码执行路径的结构特点以及与测试用例之间的关联,从而更加准确地生成测试用例。
技术实现思路
[0004]本专利技术的目的在于提供一种基于编解码框架的核电软件测试用例生成方法,能够捕捉代码执行路径的结构特点以及与测试用例之间的关联,从而生成具有高质量的 ...
【技术保护点】
【技术特征摘要】
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...
【专利技术属性】
技术研发人员:高琳,刘明星,吴鹏,曹先省,马权,王俊峰,
申请(专利权)人:四川大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。