4.3.2 问题的描述

更新于 2026年10月10日 版权声明
4.3.2 问题的描述

1.问题的提出

之前已经介绍,测试用例生成问题可以被定义为约束满足问题,对于面向路径的测试用例生成问题,影响测试用例生成效率即为约束求解的效率。并且生成测试用例耗时与该条路径上相关度量指标的大小相关,要预测测试用例生成的时间,需要分析求解过程的影响因素。图4-23是一个待测程序及相应的控制流图,用它来说明该问题。图中if_out_6、if_out_7、if_out_8、if_out_9和exit_10是虚节点。采用分支覆盖,有5条待覆盖路径,分别是Path1:0→1→9→10、Path2:0→1→2→8→9→10、Path3:0→1→2→3→7→8→9→10、Path4:0→1→2→3→4→6→7→8→9→10和Path5:0→1→2→3→4→5→6→7→8→9→10(路径上的数字均对应控制流图的节点)。可以统计每条路径的相关指标及求解该条路径上约束条件所需要的时间,即统计待测文件上包含的约束{x 1>x 2,x 1>=10,2x 1+x 2=40,x 1-x 2=5}及各自路径上包含的约束,如一条路径Path1包含的约束{x 1>x 2}。影响测试用例生成的指标构成指标集{路径长度,语句个数,分支个数,表达式个数,等式个数,非等式个数,位运算表达式个数,循环个数,循环的最大深度,函数调用个数,独立变量个数,数组个数,结构体个数,指针个数},可以初步得到路径Path5上的指标集为{11,5,4,4,2,2,0,0,0,1,2,0,0,0},再通过CTS对该条路径生成测试用例,得到预测集{时间}。通过多层神经网络拟合指标集与预测集的关系,神经网络模型主要确定神经网络输入层节点数、输出层节点数和隐含层节点数。另外选择合适的连接函数,最后得到合适的权值和阈值。

图示

图4-23 待测程序test及其控制流图

模型的确立要对组成的数据集进行处理,数据的处理框架包括数据准备、数据建模和数据预测三部分。其中数据准备包括采集数据和数据清洗,数据建模包括数据标注、特征工程和模型训练,如图4-24所示。

2.问题的定义

基于以上提出的问题,对影响的测试用例数据集和影响测试用例生成时间的神经网络模型进行定义。

图示

图4-24 数据处理流程图

影响测试用例生成的指标集被定义为一个多元组Index(Len,St,Br,Con,Eq,Ieq,Bit,Cy,Cyd,Fc,Iv,Ar,St,Po)。测试用例生成时间被看作一元组Time(T),共同组成数据集(Index,Time)。

·Len代表当前路径的长度。

·St代表路径语句个数。

·Br代表路径包含的分支个数。

·Con代表路径上包含的约束表达式个数。

·Eq代表路径上包含的等式约束个数。(https://www.daowen.com)

·Ieq代表路径上包含的非等式约束个数。

·Bit代表路径上包含的位运算表达式个数。

·Cy代表路径上循环的个数。

·Cyd代表路径执行最大循环的深度。

·Fc代表路径上函数调用的个数。

·Iv代表路径上独立变量的个数。

·Ar代表路径上包含的数组个数。

·St代表路径上包含的结构体个数。

·Po代表路径上包含的指针个数。

通过对数据集利用多层神经网络构建测试用例生成时间预测神经网络模型TNNM来拟合(Index,Time)之间的关系,TNNM模型对应(I,O,H,F)四元组。利用遗传算法改进TNNM称为GA+TNNM,利用粒子群算法改进TNNM称为PSO+TNNM。

·I表示神经网络的输入层设计。

·O表示神经网络的输出层设计。

·H表示神经网络的隐含层设计。

·F表示神经网络的连接函数选取。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)