1.一种基于遗传变异的模糊测试用例生成方法,其特征在于实施步骤包括:1)选择两个种子测试用例;2)针对新测试用例的种子长度,选择一个数据位置作为当前数据位置;3)针对当前数据位置,判断两个种子测试用例的数据是否相同,如果相同则跳转执行步骤4);否则,跳转执行步骤5);4)将种子测试用例当前数据位置的数据遗传到新测试用例的当前数据位置;5)判断两个种子测试用例的当前数据位置的数据中任意一个属于预设的字符串比较集合是否成立,预设的字符串比较集合为针对用于执行测试用例的目标二进制文件进行静态分析提取其中的字符串数据得到,如果成立则将新测试用例的当前数据位置的数据随机突变为预设的字符串比较集合中的数据,跳转执行步骤7);否则,跳转执行步骤6);所述字符串比较集合为根据用于执行测试用例的目标二进制文件中字符串数据所在位置的密集程度划分得到的第一子集PAC、第二子集PSC、第三子集CSP,第一子集PAC的密集程度比第二子集PSC、第三子集CSP两者的密集程度高,所述第二子集PSC、第三子集CSP两者的密集程度相同;6)随机选择一方种子测试用例当前数据位置的数据遗传到新测试用例的当前数据位置;7)判断种子长度是否已经遍历完毕,如果尚未遍历完毕,则继续选择下一个数据位置作为当前数据位置,跳转执行步骤3);否则跳转执行下一步;8)按照指定的比例对新测试用例进行随机突变,将完成随机突变后的新测试用例作为最终得到的新测试用例输出。
2.根据权利要求1所述的基于遗传变异的模糊测试用例生成方法,其特征在于,步骤5)中预设的字符串比较集合为针对用于执行测试用例的目标二进制文件进行静态分析提取其中的字符串数据得到。
3.根据权利要求1所述的基于遗传变异的模糊测试用例生成方法,其特征在于,步骤5)的详细步骤包括:5.1)判断两个种子测试用例的当前数据位置的数据中任意一个属于字符串比较集合中第一子集PAC是否成立,如果成立则将新测试用例的当前数据位置的数据按照第一概率优先随机突变为预设的字符串比较集合中第一子集PAC的数据、否则随机突变为第二子集PSC或第三子集CSP随机数据,跳转执行步骤7);否则,跳转执行步骤5.2);5.2)判断两个种子测试用例的当前数据位置的数据中任意一个属于字符串比较集合中第二子集PSC是否成立,如果成立则将新测试用例的当前数据位置的数据按照第二概率优先随机突变为预设的字符串比较集合中第二子集PSC的数据、否则随机突变为随机数据,跳转执行步骤7);否则,跳转执行步骤5.3);5.3)判断两个种子测试用例的当前数据位置的数据中任意一个属于字符串比较集合中第三子集CSP是否成立,如果成立则将新测试用例的当前数据位置的数据按照第二概率优先随机突变为预设的字符串比较集合中第三子集CSP的数据、否则随机突变为随机数据,跳转执行步骤7);否则,跳转执行步骤6)。
4.根据权利要求3所述的基于遗传变异的模糊测试用例生成方法,其特征在于,所述第一概率比第二概率大。
5.根据权利要求1所述的基于遗传变异的模糊测试用例生成方法,其特征在于,所述字符串比较集合的提取生成步骤包括:S1)提取用于执行测试用例的目标二进制文件中的所有字符串数据,并记录字符串数据所在位置,根据字符串所在位置的密集程度,将字符串分为不同的字符串组,此类字符串组集合称为P,其中每个字符串组成称为p,p∈P;S2)获取目标二进制文件中的字符串比较信息,并记录记录字符串数据所使用时的比较代码位置,根据字符串比较代码位置的密集程度,将字符串分为不同的字符串组,此类字符串组集合称为C,其中的每个字符串组称为c,c∈C;S3)将两类字符串集合中的字符串组进行与操作,获得p和c的并集,此类字符串组集合称为第一子集PAC,其中的每个字符串组称为pac,pac∈PC,pac=p∩c;S4)将两类字符串集合中的字符串组进行差操作,获得p和c的差集与c和p的差集,此类字符串组集合称为第二子集PSC、第三子集CSP,其中每个字符串组分别称为psc和csp,psc∈PSC,csp∈CSP, psc=p-c, csp=c-p;S5)将第二子集PSC、第三子集CSP中只有一个元素的字符串组从两集合中移除,并将所有单独的字符串组成一个新的第四子集S,最终得到由第一子集PAC、第二子集PSC、第三子集CSP、第四子集S构成的字符串比较集合。
6.根据权利要求1所述的基于遗传变异的模糊测试用例生成方法,其特征在于,步骤1)选择两个种子测试用例具体是指从种子集合中选择,且生成所述种子集合的详细步骤包括:1.1)收集用于作为训练集的种子测试用例;1.2)将种子测试用例放入目标二进制文件中执行,获取每个种子测试用例执行中的路径覆盖信息;1.3)将路径覆盖信息为PS1、PS2的两个种子测试用例随机组合生成新的组合测试用例,将新的组合测试用例放入目标二进制文件中执行,获取新的组合测试用例的路径覆盖信息PN;1.4)将两个种子测试用例的路径覆盖信息为PS1、PS2作为输入,将两个种子测试用例的对应新的组合测试用例的路径覆盖信息PN和路径覆盖信息为PS1、PS2两者的差别作为进行分类的依据,利用收集的种子测试用例构建训练集来完成训练机器学习模型,当新的组合测试用例的路径覆盖信息PN和路径覆盖信息为PS1、PS2两者的差别大于阀值时,将新测试用例和其路径覆盖信息加入种子集合;1.5)将任意路径覆盖信息为PS1、PS2的两个种子测试用例输入训练机器学习模型进行分类,选择两个种子测试用例的对应新的组合测试用例的路径覆盖信息PN和路径覆盖信息为PS1、PS2两者的差别最大的一类的两个种子组合成新的测试用例放入目标二进制文件中执行,获取新的组合测试用例的路径覆盖信息PN,判断指定时间长度内路径覆盖率是否增加,如增加,跳转执行步骤1.4),否则判定种子集合生成完毕并退出。
7.一种基于遗传变异的模糊测试用例生成系统,包括计算机设备,其特征在于,所述计算机设备被编程以执行权利要求1~6中任意一项所述基于遗传变异的模糊测试用例生成方法的步骤。