3。1 个体表示
运用遗传算法生成测试数据的第一步也是最重要的一步就是对具体的输入参数编码。编码是为了将解空间的个体表现型转化为易于算法处理的基因型,基因型通过算法处理后解码成为被优化的的个体表现型。编码方法在很大程度上决定了进行遗传运算的方法和遗传运算的效率,也影响了交叉算子、变异算子等遗传算子的运算方法。
本节针对SOFIA 语言描述的Web服务进行测试数据生成,即针对SOFIA 语言中公理部分的全局变量生成测试数据。 SOFIA 全局变量有两种类型:一种是基本类子类型,如 bool,Integer等,另外一种是规约中定义的复杂类子类型。 复杂类子一般由基本类子和其他复杂类子构成。测试数值生成部分的主要功能是为所有待测等式上全局变量集合中的每一个全局变量生成一个输入,并由此组成待测等式上的测试数据集。所以在本节的遗传算法自动生成测试数值的过程中釆用一种多参数级联编码方案。来:自[优E尔L论W文W网www.youerw.com +QQ752018766-
本节介绍了使用基于树编码的遗传算法来生产测试数据的方法,每个个体生成一个对应的编码树,该树根节点的每一棵子树都对应一个全局变量的输入数据,每个叶子节点则表示需要生成的基本类子类型数据。
在种群的每个个体数据初始化的过程中,由于在SOFIA语言变量类型的不同,其所对应的输入数据生成方法也不同。如布尔类型,它每次只可能从true和false这两个值中产生Int、float、double以及字符串类型,则直接随机生成一个对应数据类型的值。