应用遗传算法自动生成测试数据的实验分析

合集下载

基于遗传算法优化的SOFM神经网络生成测试数据集的方法

基于遗传算法优化的SOFM神经网络生成测试数据集的方法

基于遗传算法优化的SOFM神经网络生成测试数据集的方法在当今科技飞速发展的时代,数据已成为驱动创新的重要燃料。

然而,高质量的测试数据集往往难以获取,尤其是在机器学习和人工智能领域。

传统的数据集生成方法往往存在效率低下、质量参差不齐等问题。

因此,寻找一种高效且可靠的数据集生成方法显得尤为重要。

本文将探讨一种基于遗传算法优化的自组织特征映射(SOFM)神经网络生成测试数据集的新方法。

首先,让我们来理解一下SOFM神经网络。

SOFM神经网络是一种无监督学习的神经网络模型,它能够将高维数据映射到低维空间,同时保持数据的内在结构。

这种特性使得SOFM神经网络在数据可视化、聚类分析等领域有着广泛的应用。

然而,SOFM神经网络的训练过程往往需要大量的计算资源和时间,这在一定程度上限制了其在大规模数据集生成中的应用。

为了解决这一问题,我们可以引入遗传算法来优化SOFM神经网络的训练过程。

遗传算法是一种模拟自然选择和遗传机制的全局优化算法,它具有并行性、鲁棒性和自适应性等特点。

通过将遗传算法与SOFM神经网络相结合,我们可以在训练过程中自动调整网络参数,从而提高训练效率和数据质量。

具体来说,我们可以将SOFM神经网络的权重矩阵作为遗传算法的个体编码,通过交叉、变异等操作产生新的个体,并根据适应度函数评估个体的优劣。

适应度函数可以根据数据集的质量指标(如聚类精度、信息熵等)来设计。

通过多代进化,我们可以找到一组最优的网络参数,从而生成高质量的测试数据集。

这种基于遗传算法优化的SOFM神经网络生成测试数据集的方法具有以下优势:1.高效性:通过遗传算法自动调整网络参数,可以大大减少人工调参的时间和精力,提高训练效率。

2.可靠性:遗传算法具有较强的全局搜索能力,可以避免陷入局部最优解,从而提高数据集的质量。

3.可扩展性:该方法可以应用于各种规模的数据集生成任务,只需调整遗传算法的参数即可。

当然,这种方法也存在一定的局限性。

基于遗传算法的DM-GA组合测试数据生成方法

基于遗传算法的DM-GA组合测试数据生成方法
理 想 的 两 两 组合 测试 数据 生成 方法 。
关键词
中图分类号
组合 测试 两两组合 测试
T 31 P 0
遗传 算法 精 英策 略 自适 应变异概 率

文 献标 识码
DM - GA : PAI A RW I E S TES NG TI DATA GENERATI oN APPRoACH BASED oN GENETI ALGoRI C THM
胜劣汰 的进 化过程来解决 优化 的问题 , 采用 了二进 制编码 表现
3 计算染色体组合 的多样性 , 计算 变异 概率 P ) 并 的值 。 4 检查是否满足 迭代停 止条 件 , ) 即是否 满足变 异概率 P
=0 或 是否达到最大迭代 次数 t ema , i — x。 m
5 选择用于进行 D —A操作 的染色体 。 ) MG 6 )对染色体进行交叉和变异操作 。 7 )对染色体采用精英策略 , 留优秀个体。 保
参数值两 两组合覆 盖矩 阵 P _ SS 色体 编号( <i )。 0 ≤ 。 2 )计算染色体 的适应度 函数值 =ftesi , 中 i 染 i ns() 其 为
2 DM- 算法的提 出 GA
2 1 传 统 遗传 算法 .
遗传算 法是一类模拟 生物进化 的智 能优化 算法 , 它是 由文 献[] 5 于七 十年代提 出。通过模 拟 自然界 生命的适 者生存 和优
2 2 1 D G 算 法 改进 策略 . . M- A
个体 的遗传基 因。基 本步骤为 : 产生 初始种 群 ; 评价 每个 ① ② 个体 的适应 度值 ; 选 择用 于遗传 操作 的个 体 , ③ 此选 择是 建立 在群体 中个体 的适应 度值 上 的; 交叉 运算 ; 变 异运 算 ; ④ ⑤ ⑥

实验六:遗传算法求解TSP问题实验3篇

实验六:遗传算法求解TSP问题实验3篇

实验六:遗传算法求解TSP问题实验3篇以下是关于遗传算法求解TSP问题的实验报告,分为三个部分,总计超过3000字。

一、实验背景与原理1.1 实验背景旅行商问题(Traveling Salesman Problem,TSP)是组合优化中的经典问题。

给定一组城市和每两个城市之间的距离,求解访问每个城市一次并返回出发城市的最短路径。

TSP 问题具有很高的研究价值,广泛应用于物流、交通运输、路径规划等领域。

1.2 遗传算法原理遗传算法(Genetic Algorithm,GA)是一种模拟自然选择和遗传机制的搜索算法。

它通过选择、交叉和变异操作生成新一代解,逐步优化问题的解。

遗传算法具有全局搜索能力强、适用于多种优化问题等优点。

二、实验设计与实现2.1 实验设计本实验使用遗传算法求解TSP问题,主要包括以下步骤:(1)初始化种群:随机生成一定数量的个体(路径),每个个体代表一条访问城市的路径。

(2)计算适应度:根据路径长度计算每个个体的适应度,适应度越高,路径越短。

(3)选择操作:根据适应度选择优秀的个体进入下一代。

(4)交叉操作:随机选择两个个体进行交叉,生成新的个体。

(5)变异操作:对交叉后的个体进行变异,增加解的多样性。

(6)更新种群:将新生成的个体替换掉上一代适应度较低的个体。

(7)迭代:重复步骤(2)至(6),直至满足终止条件。

2.2 实验实现本实验使用Python语言实现遗传算法求解TSP问题。

以下为实现过程中的关键代码:(1)初始化种群```pythondef initialize_population(city_num, population_size): population = []for _ in range(population_size):individual = list(range(city_num))random.shuffle(individual)population.append(individual)return population```(2)计算适应度```pythondef calculate_fitness(population, distance_matrix): fitness = []for individual in population:path_length =sum([distance_matrix[individual[i]][individual[i+1]] for i in range(len(individual) 1)])fitness.append(1 / path_length)return fitness```(3)选择操作```pythondef selection(population, fitness, population_size): selected_population = []fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]for _ in range(population_size):individual = random.choices(population, fitness_probability)[0]selected_population.append(individual)return selected_population```(4)交叉操作```pythondef crossover(parent1, parent2):index1 = random.randint(0, len(parent1) 2)index2 = random.randint(index1 + 1, len(parent1) 1)child1 = parent1[:index1] +parent2[index1:index2] + parent1[index2:]child2 = parent2[:index1] +parent1[index1:index2] + parent2[index2:]return child1, child2```(5)变异操作```pythondef mutation(individual, mutation_rate):for i in range(len(individual)):if random.random() < mutation_rate:j = random.randint(0, len(individual) 1) individual[i], individual[j] = individual[j], individual[i]return individual```(6)更新种群```pythondef update_population(parent_population, child_population, fitness):fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]new_population =random.choices(parent_population + child_population, fitness_probability, k=len(parent_population)) return new_population```(7)迭代```pythondef genetic_algorithm(city_num, population_size, crossover_rate, mutation_rate, max_iterations): distance_matrix =create_distance_matrix(city_num)population = initialize_population(city_num, population_size)for _ in range(max_iterations):fitness = calculate_fitness(population, distance_matrix)selected_population = selection(population, fitness, population_size)parent_population = []child_population = []for i in range(0, population_size, 2):parent1, parent2 = selected_population[i], selected_population[i+1]child1, child2 = crossover(parent1, parent2)child1 = mutation(child1, mutation_rate)child2 = mutation(child2, mutation_rate)parent_population.extend([parent1, parent2]) child_population.extend([child1, child2])population =update_population(parent_population, child_population, fitness)best_individual =population[fitness.index(max(fitness))]best_path_length =sum([distance_matrix[best_individual[i]][best_individual[i +1]] for i in range(len(best_individual) 1)])return best_individual, best_path_length```三、实验结果与分析3.1 实验结果本实验选取了10个城市进行测试,遗传算法参数设置如下:种群大小:50交叉率:0.8变异率:0.1最大迭代次数:100实验得到的最佳路径长度为:1953.53.2 实验分析(1)参数设置对算法性能的影响种群大小:种群大小会影响算法的搜索能力和收敛速度。

基于混合遗传算法的测试数据自动生成研究

基于混合遗传算法的测试数据自动生成研究

o t z t n i s a c e y smu ai g a n a ig meh d Th s t e a o lme t a h o h r Th x e i n a e u t h w a p i ai e r h d b i lt n e l t o . mi o s n n u , h y c n c mp e n c t e  ̄ e e e p rme tl s l s o t t r s h
0 引 言
软 件 测 试 在 软 件 周 期 中 占 有 非 常 重 要 的 位 置 ,是 保 证 软 件 质 量 、提 高 软 件 可 靠 性 的 关 键 步 骤 。 而 生 成 测 试 数 据
法 针 对 遗 传 算 法 的缺 陷 ,利 用 模 拟 退 火 算 法 具 有 突 跳 性 的特 点 , 每 两 个 温 度 之 间 的 状 态 点 是 无 关 的 , 好 地解 决 了遗 传 即 很
测试数据 。
关键词 : 混合 遗传 算 法 ; 测 试 数 据 ; 软 件 测 试 ; 遗 传 算 法 ; 搜 索 效 率 中图法分类 号:P 1 T 31 文献标识码 : A 文 章 编 号 :0072 2 1) 1 6 00 10 —04(00 2— 7—4 4
S u y o u o ai e t aag n r to a e nh b i e ei l o ih td fa t m t ts t e eai nb s do y rd g n tcag rt m c d
Ab t a t I r e r v ee c e c f e t a aa t mai e e a in a t o a e nh b dg n t l o t m r p s d sr c : no d r oi t mp o e h f in yo t s t u o tcg n r t , h db s do y r e e i a g r h i p o o e . t i d o me i c i s

基于ART优化选择策略的遗传算法生成测试数据方法

基于ART优化选择策略的遗传算法生成测试数据方法

基于ART优化选择策略的遗传算法生成测试数据方法基于ART优化选择策略的遗传算法生成测试数据方法摘要:在软件开发过程中,测试数据的生成是保证软件质量的重要环节之一。

为了高效地生成具有良好覆盖率的测试用例,本文提出了一种基于Adaptive Resonance Theory (ART)优化选择策略的遗传算法生成测试数据的方法。

该方法通过结合ART的分类和选择机制,以及遗传算法的交叉和变异操作,使得生成的测试数据集能够具备更好的覆盖能力和多样性。

实验证明,本方法在测试数据生成方面具有较好的性能和有效性。

1. 引言软件测试是保证软件质量的重要手段之一。

而测试数据的生成是软件测试过程中的核心环节之一。

传统的测试数据生成方法包括随机生成、边界值分析和等价类划分等,这些方法在一定程度上能够生成测试数据,但对于复杂的软件系统来说,测试覆盖率和多样性仍然是一个挑战。

2. 相关工作在过去的几十年中,研究人员提出了很多改进的测试数据生成方法,其中遗传算法是一种被广泛研究和应用的方法。

3. ART优化选择策略ART是一种基于生物学启发的神经网络模型,它具有自适应的分类和选择机制。

在本方法中,我们将ART的分类和选择机制应用于遗传算法的后代选择过程中。

4. 遗传算法生成测试数据的方法本方法的整体流程包括初始化种群、分类选择、交叉变异等步骤。

首先,通过随机生成一组初始解作为种群的初始状态。

然后,利用ART分类将种群中的个体划分为若干类别,以提高后代选择的多样性。

接下来,采用遗传算法的交叉和变异操作对分类后的个体进行优化选择。

5. 实验结果与分析我们以一个图像处理软件的测试用例生成为例进行了实验。

通过与传统的测试数据生成方法进行对比,实验结果表明,本文提出的方法能够生成更具覆盖率和多样性的测试数据集。

6. 结论本文提出了一种基于ART优化选择策略的遗传算法生成测试数据的方法。

实验证明,该方法能够生成具有较好覆盖能力和多样性的测试数据集,为提高测试效果和软件质量提供了一种有效的手段。

基于遗传算法的测试数据自动生成技术研究的开题报告

基于遗传算法的测试数据自动生成技术研究的开题报告

基于遗传算法的测试数据自动生成技术研究的开题报告一、研究背景和意义随着软件开发的不断发展,软件测试的重要性也越来越受到重视。

测试是保证软件质量、可靠性和安全性的重要手段,但测试数据的生成和选择成为影响测试准确性和效率的重要因素之一。

传统测试方法往往需要大量的人力、物力和时间资源,而生成的测试数据可能不全面、不充分和不准确,从而导致测试效果不佳。

遗传算法作为一种优秀的搜索和优化方法,具有高效率、自适应、全局优化等特点,被广泛应用于生物学、工程学、计算机科学等领域。

将遗传算法应用于测试数据的生成和选择,可以大大提高测试效率和准确性,为软件测试提供重要支持。

二、研究目标和内容本研究旨在基于遗传算法,探索一种高效、自适应的测试数据自动生成技术。

具体研究内容包括:1. 提出一种基于遗传算法的测试数据自动生成模型,结合测试目标、特性和约束条件,实现测试数据的全面、充分和准确生成。

2. 设计和实现测试数据的适应性和迭代选择机制,优化测试数据的生成过程,提高测试质量和效率。

3. 利用实验分析、建模和仿真等手段,验证和评估基于遗传算法的测试数据自动生成技术的有效性和实用性。

三、研究方法和步骤本研究将采用以下研究方法和步骤:1. 研究遗传算法和软件测试的相关理论和技术,分析测试数据自动生成的关键问题和挑战。

2. 提出基于遗传算法的测试数据自动生成模型,确定优化目标、评价指标和约束条件。

3. 实现测试数据的生成和选择机制,包括编码、遗传操作、适应性评价和选择策略等关键环节。

4. 利用模拟和实际测试案例,验证和评估基于遗传算法的测试数据自动生成技术的有效性和实用性。

5. 分析和总结研究结果,提出进一步改进和拓展的建议和方向。

四、预期成果和创新点本研究的预期成果包括:1. 提出一种基于遗传算法的测试数据自动生成技术,实现测试数据的全面、充分和准确生成。

2. 设计和实现测试数据的适应性和迭代选择机制,优化测试数据的生成过程,提高测试质量和效率。

遗传算法实验报告

遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟生物进化过程的优化算法,通过模拟自然选择、遗传变异和交叉等操作,逐步优化问题的解。

本实验旨在探究遗传算法在解决优化问题中的应用,并通过实验验证其效果。

一、实验背景遗传算法最早由美国科学家约翰·霍兰德于20世纪60年代提出,其灵感来源于达尔文的进化论。

遗传算法通过基因编码、适应度评估、选择、交叉和变异等操作,模拟了进化过程中的遗传和变异,从而找到问题的最优解。

二、实验目的本实验旨在通过遗传算法解决一个经典的优化问题,验证其在解决实际问题中的有效性。

同时,对遗传算法的参数设置和操作过程进行调整和优化,以提高算法的性能。

三、实验步骤1. 问题定义:选择一个经典的优化问题,例如旅行商问题(TSP)或背包问题。

2. 解空间建模:将问题的解表示为染色体,设计基因编码方式。

3. 适应度函数定义:根据问题的特点,设计一个能够评估染色体解的适应度函数。

4. 初始化种群:随机生成一组初始染色体,作为种群。

5. 选择操作:根据适应度函数,选择一部分较优秀的染色体作为父代。

6. 交叉操作:通过交叉操作,生成新的子代染色体。

7. 变异操作:对子代染色体进行变异操作,引入新的基因变异。

8. 适应度评估:计算新的子代染色体的适应度。

9. 父代替换:根据适应度函数,选择一部分较优秀的子代染色体替换掉父代染色体。

10. 终止条件判断:判断是否满足终止条件,若满足则结束算法,否则返回步骤5。

11. 输出结果:输出最优解及其适应度值。

四、实验结果与分析通过实验,我们得到了一组优化问题的最优解,并计算出其适应度值。

通过观察实验结果,我们可以发现遗传算法在解决优化问题中的有效性。

同时,我们还可以通过调整遗传算法的参数和操作过程,进一步提高算法的性能。

五、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。

遗传算法作为一种优化算法,具有较强的适应性和鲁棒性,在解决实际问题中具有广泛的应用前景。

遗传算法实验报告

人工智能实验报告遗传算法实验报告一、问题描述对遗传算法的选择操作,设种群规模为4,个体用二进制编码,适应度函数,x的取值区间为[0,30]。

若遗传操作规定如下:(1)选择概率为100%,选择算法为轮盘赌算法;(2)交叉概率为1,交叉算法为单点交叉,交叉顺序按个体在种群中的顺序;(3)变异几率为0请编写程序,求取函数在区间[0,30]的最大值。

二、方法原理遗传算法:遗传算法是借鉴生物界自然选择和群体进化机制形成的一种全局寻优算法。

与传统的优化算法相比,遗传算法具有如下优点:不是从单个点,而是从多个点构成的群体开始搜索;在搜索最优解过程中,只需要由目标函数值转换得来的适应值信息,而不需要导数等其它辅助信息;搜索过程不易陷入局部最优点。

目前,该算法已渗透到许多领域,并成为解决各领域复杂问题的有力工具。

在遗传算法中,将问题空间中的决策变量通过一定编码方法表示成遗传空间的一个个体,它是一个基因型串结构数据;同时,将目标函数值转换成适应值,它用来评价个体的优劣,并作为遗传操作的依据。

遗传操作包括三个算子:选择、交叉和变异。

选择用来实施适者生存的原则,即把当前群体中的个体按与适应值成比例的概率复制到新的群体中,构成交配池(当前代与下一代之间的中间群体)。

选择算子的作用效果是提高了群体的平均适应值。

由于选择算子没有产生新个体,所以群体中最好个体的适应值不会因选择操作而有所改进。

交叉算子可以产生新的个体,它首先使从交配池中的个体随机配对,然后将两两配对的个体按某种方式相互交换部分基因。

变异是对个体的某一个或某一些基因值按某一较小概率进行改变。

从产生新个体的能力方面来说,交叉算子是产生新个体的主要方法,它决定了遗传算法的全局搜索能力;而变异算子只是产生新个体的辅助方法,但也必不可少,因为它决定了遗传算法的局部搜索能力。

交叉和变异相配合,共同完成对搜索空间的全局和局部搜索。

三、实现过程(1)编码:使用二进制编码,随机产生一个初始种群。

遗传算法在自动化测试中的应用案例

遗传算法在自动化测试中的应用案例自动化测试是软件开发过程中不可或缺的一环。

它通过使用各种工具和技术来自动执行测试用例,从而提高测试效率和准确性。

然而,随着软件规模的不断增大和复杂性的增加,传统的手动编写和执行测试用例的方法已经无法满足需求。

在这种情况下,遗传算法作为一种优化算法,被引入到自动化测试中,以提高测试用例的质量和覆盖率。

遗传算法是一种模拟自然进化过程的优化算法,它通过模拟遗传、变异和选择等过程,从一个初始的随机种群中逐步演化出最优解。

在自动化测试中,遗传算法可以被用来生成更加有效和全面的测试用例。

首先,遗传算法可以用来生成测试用例的输入数据。

在软件测试中,输入数据的选择对于测试用例的有效性至关重要。

传统的方法往往只能覆盖到一部分输入空间,而遗传算法可以通过随机生成和演化的方式,搜索到更加广泛和多样化的输入数据。

这样一来,测试用例的覆盖率就会大大提高,从而发现更多的潜在问题。

其次,遗传算法可以用来优化测试用例的执行顺序。

在自动化测试中,测试用例的执行顺序对于发现问题的效率和速度有着重要的影响。

传统的方法往往只能按照固定的顺序执行测试用例,而遗传算法可以通过评估测试用例之间的相互关系,找到最优的执行顺序。

这样一来,测试用例的执行时间就会大大减少,从而提高测试效率。

此外,遗传算法还可以用来生成更加复杂和多样化的测试用例。

在传统的自动化测试中,测试用例往往只能覆盖到一些基本的功能和场景。

而遗传算法可以通过不断演化和优化,生成更加复杂和多样化的测试用例。

这样一来,测试用例的质量和覆盖率就会大大提高,从而发现更多的潜在问题。

最后,遗传算法还可以用来优化测试用例的断言和预期结果。

在自动化测试中,断言和预期结果的正确性对于测试用例的有效性至关重要。

传统的方法往往只能通过手动编写和维护的方式,而遗传算法可以通过不断演化和优化,找到最优的断言和预期结果。

这样一来,测试用例的准确性就会大大提高,从而发现更多的潜在问题。

基于遗传算法的路径测试用例的自动生成探讨

2 o m ̄o s R 繁9 翔

No . 9
ELEc T RONI C TEsT
基于遗传算法的路径测试用例 的 自动 生成探讨
田丽芳
( 黄淮学 院信 息工程学 院 ,河南驻马店 4 6 3 0 0 0 )
摘要 :在软件 开发 中进 行软件测试是 为了保 证软件质量和可 靠性 。软件测试 中测 试数据合理设计很关键 。如何 优化测试 数据 ,自动 生成 测试 数据是 人们一 直研究 的问题 ,本文针 对测试 用例 的自动化 生成 进行 了深入 的研
e x p e i r me n t a l r e s u l t s s h o w ha t t ,t h e a u t o ma i t c g e n e r a i t o n o f t e s t c a s e s o f t h e s y s t e m c a n c o mp l e t e a s e t o ft a r g e t p a t h,a n d
of t e s t d a t a o f t he a ut om a ic t g e ne r a io t n o f t e s t c a s e s ,b a s e d o n t he i n—de pt h r e s e a r c h, us i ng g e ne t i c a l g or i t hm ba s e d
0 引言
工设 计输 入 测试 数 据 ,费 工 费时 易 出错 ,那 么 ,如何 来 确 保 软件 开 发质 量 ,实 现 软件 测试 工具 的 自动 化 。现 在
目前 ,软件 应 用 已经 渗透 到 各 个领 域 ,软件 质量 问 测试 用 例 的 自动生 成 还远 不尽 如 人 意 。本 文探 讨 一种 有
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2005212220 收修改稿日期:2006205216 基金项目:国家自然科学基金项目(60373016)资助;国家“八六三”高技术项目(2004AA 112030)资助. 作者简介:贾晓霞,女,1976年生,博士研究生,主要研究方向为软件测试方法、软件质量分析方法;吴 际,男,1974年生,博士,讲师,主要研究方向为模型驱动软件测试方法、软件质量统计分析方法;金茂忠,男,1941年生,教授,博士生导师,主要研究方向为编译技术、软件测试方法、软件工程、面向对象技术;高仲仪,男,1935年生,教授,主要研究方向为编译技术,软件测试.应用遗传算法自动生成测试数据的实验分析贾晓霞,吴 际,金茂忠,高仲仪(北京航空航天大学计算机学院,北京100083)E 2m ail :sailgao@s ohu .com摘 要:将遗传算法应用于覆盖指定路径的测试数据生成已得到了广泛的研究.具体实现中,影响测试数据生成效率的因素很多,如先验知识,GA 参数,路径复杂度等.本文在简要介绍应用GA 生成测试数据的关键技术后,设计实验分析了影响测试数据生成的部分因素,并据此得出了一些结论.关键词:遗传算法;测试数据自动生成;软件测试中图分类号:T P 311 文献标识码:A 文章编号:100021220(2007)0320520206So m e Exper i m en t Ana lysis of Usi n g Gener i c A lgor ith m i n Auto ma i c Test Da t a Genera ti onJ I A X iao 2xia ,WU J i ,J I N M ao 2zhong ,GAO Zhong 2yi(S chool of Co m p uter S cience and T echnolog y ,B eij ing U niversity of A eronautics and A stronautics ,B eij ing 100083,China )Abstract :A pp licati ons of Generic A lgorithm to generate test data to cover the appointed path have been studied w idely .In p ractice ,there are a series of factors that affect the generati on efficiency of the test data ,such as transcendent know ledge ,GA param eters ,path comp lexity etc .In th is paper ,key technol ogies of app lying Generic A lgorithm to test data generati on are outlined at first .T hen experi m ents are designed to analyze the factors that m ay affect the generati on efficiency of the testing data .Conclusi ons are draw n according to the experi m ents and discussi ons .T he results are useful for continuing research .Key words :generic algorithm ;autom atic test data generati on ;s oftw are tesing1 引 言面向路径测试是软件白盒测试的重要手段,其中一个关键点就是寻找特定的输入,使其可覆盖待测程序的某条路径.因此,如何自动求得该所需测试数据成为重要的研究问题.目前已有的方法包括:符号执行,迭代松弛法以及函数最小化方法[1,2]等.函数最小化方法是其中一个重要的研究方向.将测试数据自动生成问题表示为函数最小化问题之后,需采用一定的优化算法对其求解.爬山法、模拟退火、禁忌算法以及遗传算法[326]都是广泛采用的方法.本文并不就面向路径的测试数据生成问题做广泛讨论,也不展开讨论各种寻优算法的使用,而是对应用遗传算法自动生成覆盖指定路径的测试数据生成问题,进行一些实验分析.本文首先介绍作者应用GA 自动生成测试数据的框架,接着提出了实验目的和实验设计,并就实验结果进行分析,最后总结了全文.2 应用GA 的测试数据自动生成本文讨论应用GA 自动生成覆盖指定路径的测试数据问题,实现的原型系统中的关键点包括:2.1 路径生成基于其选定待测路径;待测函数的路径由静态分析生成;2.2 有效参数分析影响待测路径分支的所有变量都是该路径的有效参数,这些参数需由GA 编码处理;2.3 分支函数插装图1 GA 用于测试数据自动生成时的数据流图F ig .1 D atafl ow diagram of test dataqutom atic generati on using GA分支函数叠加构成评价函数(也就是图1中的适值),评价函数引导GA 向有利方向进化;分支函数插装在第二遍静态分小型微型计算机系统Journal of Ch inese Computer Syste m s 2007年3月第3期V ol 128N o .32007析时完成;2.4 待测函数的自动执行GA需反复迭代运行以求得最优解,通过构造驱动模块,插装后的函数可自动执行;2.5 GA的迭代运行评价函数引导GA向有利于进化的方向前进.这些关键问题都体现在图1的数据流图中.图1的数据流图体现了上述几个关键问题,也体现了GA用于测试数据生成的基本流程.通过对源程序进行第一遍静态分析(parser),获得待测函数的基本结构,并在第二遍静态分析时完成对分支函数的插装以及驱动模块的构造;插装后的程序由驱动模块驱动编译执行,迭代进行GA运算,以期找到满足条件的解.细节在此不再赘述,可参见[7].3 实验设计应用GA生成测试数据的效率受很多因素的影响,如对程序的先验知识、GA参数、路经复杂度等,本文拟从实验的角度进行一些分析.关注的问题包括:1.GA的编码长度对GA效率是否有一定的影响?2.GA参数对GA的效率有何影响?3.待测路径的复杂度对GA的效率有何影响?3.1 实验目的本文拟通过实验分析以下因素对GA运行的影响:3.1.1 编码长度GA在某些情况下找不到的解的原因之一就是编码太长,所以,找到合适的、尽可能小的编码长度应该可以在一定程度上提高GA的求解效率.本实验如下进行:1)根据先验知识获得最小编码长度,记录GA的运行时间和运行代数;2)没有先验知识的情况下,按照通常的取值范围,如int 取16位,观察GA的效率;3.1.2 GA参数1)主要考虑两个参数—种群规模(Pop size),变异率(M rate);2)种群规模分别取30,50,100;3)变异率分别取0.01,0.03,0.05,0.08及0.1;4)构成15组GA参数.3.路径复杂度对GA效率的影响;分别用路径上分支点个数及逻辑运算符个数或路径上的变量个数来表示路径的复杂程度;3.2 待测函数表1是本文选定的待测函数.表1 待测函数T able1 Functi ons under test编号函数名称参数代码长度功能1F indFailCoccur013int,1长度为2的int数组,1个长度为2的bool数组33计算失效共现2F indFail Coccur03同上37计算失效共现3deter m ine N extStopF l oor2int参数,1枚举,1长度为8的int数组86决定电梯的下一个停靠楼层4deter m ineO rientati on2int参数,2枚举,1长度为8的int数组92决定电梯的运行方向上述四个函数是从作者进行故障定位和失效预测研究中的代码中选取出来的,函数1和2是提取失效模式的函数,函数3和4则是电梯仿真程序中的代码[8].对每个待测函数,都表2 实验所用部分路径T able2 Part of path s used in th is experi m ent路径所属函数有 效 参 数变量个数分支点个数逻辑运算符个数001 F indFail Coccur01int leading,int foll ow ing,int m2nSeq L en,int m2pTestSeq[2],boolm2pFailureSeq[2]778002 F indFail Coccur01int leading,int foll ow ing,int m2nSeq L en,int m2pTestSeq[5],boolm2pFailureSeq[5]1379003 F indFail Coccur03int object,int m2nSeq L en,int m2pTestSeq[3],boolm2pFailureSeq[2]755004 F indFail Coccur03int object,int m2nSeq L en,int m2pTestSeq[6],boolm2pFailureSeq[5]1355005deter m ine N extStopF l oor m2innerTargetF l oor,m2CurrentF l oor,m2outer[8]1055006 deter m ine N extStopF l oorm2innerTargetF l oor,m2CurrentF l oor,m2outer[8],m2CurrentO rientati on1177007 deter m ine N extStopF l oorm2innerTargetF l oor,m2CurrentF l oor,m2outer[8],m2CurrentO rientati on1188008 deter m ine O rientati onm2innerTargetF l oor,m2CurrentF l oor,m2CurrentO rientati on,m2curentStatus,m2outer[8]1189009 deter m ine O rientati onm2CurrentF l oor,m2CurrentO rientati on,int m2innerTargetF l oor,m2CurrentStatus,int m2outer[8]129101253期 贾晓霞等:应用遗传算法自动生成测试数据的实验分析 选取了相应的路径,表2是其中一部分路径.表2中任一路径的属性包括:所属函数,路径上影响分支的变量,变量的个数,分支点的个数以及逻辑运算符的个数.4 实验结果及分析4.1 编码长度的影响表3列举了四个待测函数中的9条路径,显示了其在不同编码长度下的运行代数.其中编码长度分别根据先验知识和类型本身的长度进行,如int 型,若根据先验知识知其为正表3 部分路径在不同编码长度下的运行代数T able 3 R unning generati ons of part of the path sunder different coding length s路径GA参数编码长度242528485268788486001GA 11318444000002GA 11601587003GA 118324000004GA 11886005GA 111006GA 111150007GA 113273008GA 111137009GA 115228整数,则编码长度可设为8;若无先验知识则需设为16.运行代数是15次运行的平均值,所采用的GA参数的细节见表4.4000是GA 的最大运行代数,表中运行代数为4000,说明未能求解.从表中可以看到,编码长度的影响显著,如路径001,编码长度为28时,平均运行代数31;编码长度为48时,平均运表4 GA 参数T able 4 GA param etersGA I D PopSize GenN um M rate GA 013040000.05GA 023040000.01GA 033040000.03GA 043040000.08GA 053040000.1GA 065040000.05GA 075040000.01GA 085040000.03GA 095040000.08GA 105040000.1GA 1110040000.05GA 1210040000.01GA 1310040000.03GA 1410040000.08GA 1510040000.1行代数844,而编码长度为68,无法求解.这也从侧面说明了先验知识的重要性,如果可以依照先验知识大概确定待求变量的范围,则GA 的搜索空间会得到缩减,效率得到提高.4.2 GA 参数的影响4.2.1 GA 参数的实验配置本文采用的GA 算子如下:1.选择算子:采用赌轮算法,在父代的基础上产生子代.采用排序选择,使得选择所依赖的并不是实际的评价函数值,而是评价函数的排序,基于该排序利用赌轮算法选择进入下一代的个体.利用最优化保存策略将每代最优的保存下来,在选择完成后再随机替换子代的一个个体;2.交叉算子:采用多点交叉;每代内的所有个体都参加交叉,交叉点个数同基因长度成正比;3.变异算子:采用均匀变异;变异的位数同基因长度及变异率有关;图2 路径001在编码长度28时不同GA 参数的运行结果F indFail Coccur 01F ig .2 Executi on results under different GA param eters in the situati on that the path 001’s coding length is 28因而关心的主要参数是种群规模Pop size 和变异率M rate .种群规模分别取30,50,100,变异率分别取0.05,0.01,0.03,0.08,0.1,构成的15组参数见表4.其中GenN um 为最大运行代数.图3 路径001上编码长度为48时不同GA 参数的运行结果F ig .3 Executuon results under different GA param eters in the situati on that the path 001’s coding length is 484.2.2 实验结果图2和图3中的横坐标对应表4的15组参数,纵坐标是225 小 型 微 型 计 算 机 系 统 2007年15次运算的平均运行代数.图2和图3都没有特殊显著的规律,说明面对实际问题时GA参数是个很难确定的问题.从图中可以看到:GA02(群体规模=30,变异率=0.01)、GA07(群体规模=50,变异率=0.01)、GA10(群体规模=50,变异率= 0.1)、GA14(群体规模=100,变异率=0.08)导致图中的局部最高值,说明变异率太大或太小都不利于测试数据的生成.4.3 路径复杂度的影响4.3.1 函数F indFail Coccur01的全部路径表5是F indFail Coccur01的全部路径,其中的路径是用B l ock I D串标识的,B l ock I D由Parser分析后显示为负值.其中24,28,29,216分别为if.表5 F indFail Coccur01的全部路径T abel5 A ll path s of functi on F indFail Coccur01路径编号复杂度分支点个数逻辑运算符个数B l ock I D串表示的路径02502001801901101701301401501001601222(21,0)(22,0)66(21,0)(22,1)(24,1)(27,0)(28,0)(216,0)66(21,0)(22,1)(24,1)(27,0)(28,0)(216,1)66(21,0)(22,1)(24,0)(27,0)(28,0)(216,1)66(21,0)(22,1)(24,0)(27,0)(28,0)(216,0)78(21,0)(22,1)(24,1)(27,0)(28,1)(29,0)(216,0)78(21,0)(22,1)(24,1)(27,0)(28,1)(29,0)(216,1)78(21,0)(22,1)(24,1)(27,0)(28,1)(29,1)(216,0)78(21,0)(22,1)(24,0)(27,0)(28,1)(29,0)(216,1)78(21,0)(22,1)(24,0)(27,0)(28,1)(29,0)(216,0)78(21,0)(22,1)(24,0)(27,0)(28,1)(29,1)(216,0)78(21,0)(22,1)(24,0)(27,0)(28,1)(29,1)(216,1)00178(21,0)(22,1)(24,0)(27,0)(28,1)(29,1)(216,1)表中的箭头表示复杂度增大的方向,路径复杂度同分支点个数及逻辑运算符个数相关,同时.=比==的复杂度小.但路径001是个特例(因为该路径中包含(24,1),意味着在图4 F indFail Coccur01的全部路径的执行情况F ig.4 Executi on results of all path s of functi onF indFail Coccur01bl ock I D为24的if走真分支,也就是.=取真的时候,应该比包含(24,0)的复杂度应该低,可是实际运算结果却恰恰相反,体现在图4中).这也说明路径复杂度是个很复杂的问题,目前采用的度量方式并不能完全准确地表示.表6 路径6和路径7的说明T able6 P resentati on of path6and path7路径I D变量个数分支点个数逻辑运算符个数00611770071188从图4可以看到,随着路径复杂度的增大,GA运行代数明显上升,且增加趋势明显.可以预计,随着路径复杂度的上升,GA运算复杂度将无法承受,将导致无法求解.4.3.2 函数deter m ine N extStopF l oor内两条典型路径的对比比较其中GA参数用的是GA01,编码长度86图5 路径6和路径7的对比F ig.5 Contrast betw een path6and path7表7 路径8和路径9的说明T able7 P resentai on of path8and path9路径I D变量个数分支点个数逻辑运算符个数008118900911910其中GA参数用的是GA01,编码长度86.函数内的两条典型路径也验证了上面的猜测:图5中,路径复杂度似乎相同,但GA运行效率差异巨大,说明路径复杂图6 路径8和路径9的对比F ig.6 Contrast betw een path8and path93253期 贾晓霞等:应用遗传算法自动生成测试数据的实验分析 度无法完全度量求解的难易程度,程序逻辑的影响也应该很大;图6中,程序逻辑类似的情况下,路径复杂度增大,运行代数加长.可以得知,路径复杂度是度量求解难度的一种方式,但不够完备,需要和其他因素相结合.4.3.3 变量个数的影响图7 路径3和路径4的对比F ig .7 Contrast betw een path 3and path 4可以看出:影响路径的变量个数增多,运行代数显然增加;但影响的程度和实际问题有关.4.4 运行代数和运行时间的关系运行代数是GA 的一个参数,当运行到该指定代数依然无解时,GA 放弃寻优.运行代数一般也用以评价GA 的运行效率,而运行时间也是评价程序效率的重要指标.本文用实验数据说明了GA 解决测试数据生成问题时,运行代数和运行时间的关系.表8 路径3和路径4的说明T able 8 P resentati on of path 3and path 4路径I D变量个数编码长度GA 参数003748GA 010041384GA 01表中的数据是特定路径在特定编码长度下的平均运行时间(后面的数字表示在图8中的横坐标,如1.2221,表示1.22表示的数据在图8中横坐标为1的位置),图8是平均运行时间和平均运行代数的关系(运行时间单位为秒,0表示运行时间低于1秒,其并没有显示在图8中)可以看到,运行时间和运行代数是两个不同的度量单位,它们并不呈线性关系.单位表9 部分路径在不同编码长度下的运行时间T able 9 R unning tim e of part of path s under different coding length函数名称路径GA 参数编码长度242528485268788486F indFail Coccur 01001GA 111.222132.822214123F indFail Coccur 01002GA 113.02248825F indFail Coccur 03003GA 110.3126327155.9328F indFail Coccur 03004GA 110.38296.67210deter m ineFLoor 005GA 110deter m ineFLoor 006GA 1103.75211deter m ineFLoor 007GA 110.162124.75213D eter m ine O rientati on 008GA 1103.34214deter m ine O rientati on009GA 110.22155.61216时间内的运行代数并不是一个固定的值,它也许受其他因素的影响,这些因素还需要深入分析.图8 平均运行时间和平均运行代数的关系F ig .8 R elati on betw een average running ti m e andaverage running generati on5 总 结遗传算法已经被广泛应用于测试数据生成问题.本文介绍了将其应用于生成覆盖指定路径测试数据时的关键问题,详细介绍了实验设计,实验数据的总结如下:1.求得待测数据所需时间:在能找到解的情况下,最大平均耗时88秒;在找不到解的情况下,平均运行158秒程序结束;2.对待测函数选择了大部分路径,利用先验知识,控制编码长度后,效率很好;编码长度对GA 效率影响显著;3.在变量个数增多,编码长度很大的情况下,路径复杂度增大的情况下,几乎无法找到解;4.GA 参数对GA 求解测试数据有一定的影响,采用的GA 参数需根据具体问题决定;5.运行代数和运行时间是两个不同的度量GA 效率的方式,单位运行时间内的运行代数并不是固定的值.本文选用的待测函数还有一定的局限性,并不能代表普425 小 型 微 型 计 算 机 系 统 2007年适的情况,但本文对GA生成指定路径测试数据进行了一定图9 本次实验所有运行的运行代数和运行时间的关系F ig .9 R elati on betw een average running ti m e and averagerunning generati on obtained in th is experi m ent的实验分析,实验结果可作为深入研究该问题的基础.后续将继续进行GA 对复杂数据类型的处理,以及深入分析影响GA 效率的其他因素.References :[1]D e M ill o RA ,O ffutt A J .Constraint 2based autom atic test datagenerati on [J ].IEEE T ransacti ons on Softw are Engineering 1991,17(9):9002909.[2]N eela m Gup ta ,A dityaP .M athur ,M ary Lou Sofia .A utom atedtest data generati on using an iterative relaxati on m ethod [C ].In P roceedings of the A C MS IGS O FTSixthInternati onalSymposium on Foundati ons of Softw are Engineering,2312244,N ove m ber 1998.[3]Korel B .A utom ated s oftw are test data generati on [J ].IEEET ransacti ons on Softw are Engineering ,1990,16(8):8702879.[4]M ichael C ,M cGra w G .A utom ated s oftw are test data generati onfor comp lex p rogra m s [C ].In 13th IEEE Internati onal Conferance on A utom ated Softw are Engineering ,1362146,O ctober 1998.[5]D iaz E ,Tuya J ,B lanco R .A utom ated s oftw are testing using am etaheuristic technique based on Tabu search [C ].In :P roceedings of 18th IEEE Internati onal Conference on A utom ated Softw are Engineering ,2003,10:3102313.[6]J ie W ei,Gao Zhong 2yi .Research of s oftw are structural test datagenerati on based on genetical gorithm s [J ].Journal of Beijing U niversity of A eronaut ics and A stronautics.1997,23(1):36240.[7]Yu H ui 2bin .The research of s oftw are structure test case generati onusing genetic algorithm s tool devel op ing [D ].Beijing U niversity of A eronautics and A stronautics.2003.3[8]W u J i .Study on fault l ocati on and failure p redicti on [D ].BeijingU niversity of A eronautics and A stronautics.2003.10.附中文参考文献:[6]荚 伟,高仲仪.基于遗传算法的软件结构测试数据生成技术研究[J ].北京航空航天大学学报,1997,23(1):36240.[7]俞慧斌.基于遗传算法的软件测试用例自动生成技术的应用研究及工具实现[D ].北京航空航天大学硕士论文.2003.3[8]吴 际.软件故障定位与失效预测研究[D ].北京航空航天大学博士论文.2003.10.5253期 贾晓霞等:应用遗传算法自动生成测试数据的实验分析 。

相关文档
最新文档