已阅读5页,还剩116页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Company Logo,第2章 白盒测试的实用技术 白盒测试(White Box Testing),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。,软件测试技术研究组 中国信息大学,Company Logo,白盒测试技术是软件测试的主要方法之一,白盒测试的基本概念、检查方法、测试方法、测试工具等内容是必须掌握的,本章重点讨论以下内容: 白盒测试的概述 白盒测试的静态检查方法 白盒测试的常用方法,软件测试技术研究组 中国信息大学,Company Logo,2.1白盒测试的概述 白盒测试的对象主要是源程序。是指用代码内部的分支、路径、条件,使程序设计的控制结构导出测试用例,是软件测试的主要方法之一。 2.1.1 白盒测试的基本知识 白盒测试方法分为两类: (1)静态测试 (2)动态测试:,软件测试技术研究组 中国信息大学,Company Logo,2.1.2 白盒测试测试原则 白盒测试的原则有4点: 1)保证一个模块中所有路径至少被测试一次; 2)所有逻辑值都要测试真和假两种情况; 3)检查程序的内部数据结构是否有效; 4)检查上、下边界及可操作范围内运行所有循环。,软件测试技术研究组 中国信息大学,Company Logo,2.1.3 白盒测试的类别、依据和流程 白盒测试策略是首先进行静态结构分析,采用先静态后动态的组合方式。然后进行覆盖测试。利用静态测试的分析结果和通过动态测试的结果进行进一步确认已达到测试效果。白盒测试一般要考虑类别、依据和流程。,软件测试技术研究组 中国信息大学,Company Logo,1. 白盒测试的类别 白盒测试的类别具体分为8大类。 (1) 软件公用问题的测试; (2) 语言测试; (3) SQL语句测试; (4) 数据类型测试; (5) 界面测试; (6) 数值对象测试; (7) 业务对象测试; (8) 数据管理对象测试。,软件测试技术研究组 中国信息大学,Company Logo,2. 白盒测试依据 软件需求报告; 软件需求规格说明; 程序设计文档; 软件界面设计; 编码规范; 开发命名标准。,软件测试技术研究组 中国信息大学,Company Logo,3.白盒测试的流程 白盒测试的流程分为界面对象和业务对象两种方 式。 界面对象测试 界面对象测试的流程如图2-1所示。,软件测试技术研究组 中国信息大学,图2-1界面对象的流程图,Company Logo,(2) 业务对象流程测试 业务对象测试的流程如图2-2所示。,软件测试技术研究组 中国信息大学,图2-2 业务对象测试的流程图,Company Logo,2.2 白盒测试方法 在白盒测试中,可以使用各种测试方法进行测试。但是,测试要考虑五点问题。 (1)测试中,尽量先用自动化工具来进行静态结构分析; (2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试; (3)利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性; (4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率; (5)在不同的测试阶段,测试的侧重点是不同的。,软件测试技术研究组 中国信息大学,Company Logo,2.2.1 代码检查 代码检查是静态测试的主要方法,代码检查包括代码走查、桌面检查、流程图审查等。对于代码检查从如下几点进行叙述。 1)概述 代码检查主要检查代码和流图设计的一致性、代码结构的合理性、代码编写的标准性、可读性、代码的逻辑表达的正确性等方面。包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。,软件测试技术研究组 中国信息大学,Company Logo,2)代码走查目的 代码走查是为达到以下目的: 通过检查代码程序是不是按照某种标准或规范编写的代码; 通过检查代码来发现程序缺陷; 通过检查代码容易发现程序产生的错误; 通过检查代码来发现代码是不是流程图要求的; 通过检查代码来发现有没有遗漏的项目; 要代码易于移植,代码经常需要在不同的硬件中运行,或者使用不同的编译器编译; 要代码易于阅读、理解和维护。,软件测试技术研究组 中国信息大学,Company Logo,2.2.2 代码检查方式 代码走查的方式有: 1 桌面检查 2 走查 3 代码审查 代码审查可分为以下两步: 第一步:小组负责人把程序文本、规范、相关要求、流程图及设计说明书发给每个成员。 第二步:每个成员依据所发材料作为审查依据,但是由程序员讲解程序的结构每、逻辑和源程序。在此过程中,小组成员可以提出自己的疑问;程序员在讲解自己的程序时,也能发现自己原来没有注意到的问题。,软件测试技术研究组 中国信息大学,Company Logo,2.2.3 代码检查项目 代码检查项目主要有以下几点: 目录文件组织 检查函数 数据类型及变量 检查条件判断语句 检查循环体制 检查代码注释 桌面检查 其它检查,软件测试技术研究组 中国信息大学,Company Logo,2.2.4 静态结构分析 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。 通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系和作用。静态结构主要分析: 1. 可以检查函数的调用关系是否正确; 2. 是否存在孤立的函数而没有被调用; 3. 明确函数被调用的频繁度,对调用频繁的函数可以重点检查。,软件测试技术研究组 中国信息大学,Company Logo,2.2.5 SQL语句测试 主要检查以下两点: 语句检查 类型转换 2.2.6 代码检查的分析与评价 代码检查的分析与评价主要注意以下两大 点: 1 能力 陈述经代码检查证实了的本软件的能力。 2 缺陷和限制,软件测试技术研究组 中国信息大学,Company Logo,2.3 白盒测试的常用技术 白盒测试常用技术主要有7种。现分别叙述如下: 2.3.1 逻辑覆盖法 逻辑覆盖法主要讨论四点: 测试覆盖率; 逻辑覆盖 ; 面向对象的覆盖 ; 测试覆盖准则。 现分别进行讨论。,软件测试技术研究组 中国信息大学,Company Logo,1. 测试覆盖率 测试覆盖率是用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。 测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。 其中 测试覆盖率包括功能覆盖和结构覆盖,软件测试技术研究组 中国信息大学,Company Logo,2. 逻辑覆盖 根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为语句覆盖 、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修改条件判定覆盖、组合覆盖和路径覆盖。 3. 面向对象的覆盖 面向对象的覆盖主要讨论继承上下文覆盖和基于状态的上下文覆盖。,软件测试技术研究组 中国信息大学,Company Logo,4. 测试覆盖准则 测试覆盖准则主要讨论ESTCA(Error Sensitive Test Cases Analysis)错误敏感测试用例分析和LCSAJ(Linear Code Sequence and Jump)线性代码序列与跳转。 (1)ESTCA覆盖准则 (2)现行代码序列与跳转LCSAJ 现行代码序列与条状LCSAJ是指一组顺序执行的代码,以控制流跳转为结束点。可产生4层覆盖,软件测试技术研究组 中国信息大学,Company Logo,2.3.2 插桩技术 软件动态测试中,插桩测试是一个被广泛应用的测试方法。插桩测试就是向源程序中插入语句然后执行程序,通过打印语句,获得动态信息(我们最为关心的信息)。 在这里,我们举一个最简单的例子,以计算整数X和整数Y的最大公约数为例,试图说明插桩技术的要点。 插桩后求最大公约数程序流程图如图2-3所示。,软件测试技术研究组 中国信息大学,Company Logo,软件测试技术研究组 中国信息大学,图2-3求最大公约数程序插桩流程图,Company Logo,2.3.3 基本路径测试法 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。 基本路径测试法的重点内容如下: 程序的控制流图:描述程序控制流的一种图示方法。 程序环形复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。,软件测试技术研究组 中国信息大学,Company Logo,1 程序控制流图 程序控制流图(可简称流图)是对程序流程图进行简化后得到的,它突出表示程序控制流的结构。程序控制流图是描述程序控制流的一种方式。控制流图图形符号: 图形符号:圆圈代表一个结点, 表示一个或多个无分支的语句或源程序语句; 程序控制流边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域; 判断语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(a and b),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断。,软件测试技术研究组 中国信息大学,Company Logo,基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤: 画出程序的控制流图。 计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 导出基本路径集,确定程序的独立路径。 根据中的独立路径,设计测试用例的输入数据和预期输出。 程序控制流图如图2-4所示。,软件测试技术研究组 中国信息大学,Company Logo,软件测试技术研究组 中国信息大学,软件测试技术研究组 中国信息大学,图2-4 程序控制流程图,Company Logo,2.3.4 域测试法 域测试是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择测试点进行测试。主要为: 1)域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误; 2) 计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误; 3) 丢失路径错误:由于程序中的某处少了一个判定谓词而引起的丢失路径错误,软件测试技术研究组 中国信息大学,Company Logo,2.3.5 符号测试 符号测试基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。 1) 符号测试执行的是代数运算,可以作为普通测试的一个扩充; 2) 符号测试可以看作是程序测试和程序验证的一个折衷办法; 3) 符号测试程序中仅有有限的几条执行路径;,软件测试技术研究组 中国信息大学,Company Logo,2.3.6 Z路径覆盖法 分析程序中的路径是指检验程序从入口开始,执行过程中经历的各个语句,直到出口。 Z路径覆盖 对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可能,简化循环意义下的路径覆盖称为Z路径覆盖(循环简化:限制循环次数,只考虑循环一次或零次情况),循环简化的目的是限制循环的次数,无论循环的形式和循环体实际执行的次数,简化后的循环测试只考虑执行循环体一次和零次(不执行)两种情况,即考虑执行时进入循环体一次和跳过循环体这两种情况。,软件测试技术研究组 中国信息大学,Company Logo,2.3.7 程序变异测试法 程序变异是一种错误驱动测试。错误驱动测试是指该方法是针对某类特定程序错误的,经过多年的测试理论研究和软件测试的实践,人们逐渐发现要想找出程序中所有的错误几乎是不可能的。比较现实的解决办法是将错误的搜索范围尽可能地缩小,以利于专门测试某类错误是否存在。,软件测试技术研究组 中国信息大学,Company Logo,请您解答: 1. 白盒测试有哪两个分类? 2. 说出白盒测试的4个原则。 3. 详细说明白盒测试方法要注意的问题。 4. 请简要写出白盒测试常用的7类技术。 5. 逻辑覆盖主要测试哪8各方面的覆盖率?,Company Logo,补充知识,白盒测试( White Box Testing ) 结构测试( Structured Testing ) 逻辑驱动测试( Logic-Driven Testing ) 基于程序的测试 ( Code-Based Testing ) 基于覆盖的测试,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,基本概念 控制流图 有向图 路径、完整路径 可达、简单路径、基本路径、子路径 回路、无回路路径 A连接B 路径A覆盖路径B,Company Logo,控制流覆盖准则,覆盖率:测试的完全程度如何?,Company Logo,覆盖率概念,如:一个程序总代码为100行,使用测试用例运行一次,执行了75行代码,则 代码覆盖率75,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,语句覆盖,设计若干测试用例,使得程序中每条语句至少被执行一次。,设计原则:测试用例尽量少,覆盖率尽量高,Company Logo,举例,测试用例设计:,红色字母代表程序执行路径,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,语句覆盖,优点: 直观、简单、易自动化 缺点: 发现错误能力很“弱” 对隐藏的条件和可能到达的隐式逻辑分支,无法测试,Company Logo,语句覆盖,例:ifelse结构,如右例所示: 当A=2 B=0 X=3时,满足语句覆盖要求,但abd分支未测试。,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,判定覆盖,设计若干测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,程序中的每个分支至少执行一次,Company Logo,判定覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,当A=2 B=0 X=3时, 即可满足语句覆盖要求,但abd分支未测试,判定覆盖测试用例设计:,判定覆盖,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,判定覆盖,优点: 发现错误能力比语句覆盖强 缺点: 对复合条件判断,只判定整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,条件覆盖,设计若干测试用例,使得判定中的每个条件的可能取值至少满足一次。,Company Logo,条件覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,判定覆盖测试用例设计未有B!=0的取值,条件覆盖,条件覆盖测试用例设计:,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,例3-4,1、列出所有的原子条件: i=0 j=0 k=0 i+j=k i+k=j j+k=I i=j i=k j=k 2、设计测试用例,使得每个条件取一次真值和一次假值,Company Logo,例3-4,设计测试用例如下表所示,Company Logo,条件覆盖,优点: 发现错误能力比语句覆盖强 缺点: 条件覆盖并不能保证判定覆盖。 对复合条件,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,判定条件覆盖,设计若干测试用例,使得判定中的每个条件的可能取值至少出现一次,且每个判断本身的判定结果也至少出现一次。,Company Logo,判定条件覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,判定条件覆盖,条件覆盖测试用例设计也满足判定条件覆盖的要求:,判定覆盖测试用例设计未有B!=0的取值,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,例3-4,1、列出所有的原子条件: i=0 j=0 k=0 i+j=k i+k=j j+k=i i=j i=k j=k 2、列出所有的判定 (1)i=0|j=0|k=0|i+j=k|i+k=j|j+k=i (2)i=j&i=k&j=k (3)i=j|i=k|j=k 3、设计测试用例,使得每个条件取一次真值和一次假值且使得每个判定取一次真值和一次假值。,Company Logo,设计测试用例如下表所示:,Company Logo,判定条件覆盖,优点: 发现错误能力比判定覆盖和条件覆盖强 缺点: 不能保证覆盖程序所有执行路径,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,条件组合覆盖,设计若干测试用例,使得每个判定中条件结果的所有可能组合至少出现一次,Company Logo,条件组合覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,条件组合覆盖,测试用例设计:,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,例3-4,1、列出所有的判定 (1)i=0|j=0|k=0|i+j=k|i+k=j|j+k=i (2)i=j&i=k&j=k (3)i=j|i=k|j=k 3、设计测试用例,使得每个判定中条件结果的所有可能组合至少出现一次,Company Logo,设计测试用例如下表所示:,Company Logo,条件组合覆盖,优点: 发现错误能力比判定/条件覆盖强 缺点: 不能保证覆盖程序所有执行路径,部分覆盖能力间的关系:,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法 语句覆盖 判定覆盖(也称分支覆盖) 条件覆盖(也称谓词覆盖) 判定/条件覆盖 条件组合覆盖 路径覆盖,Company Logo,路径覆盖,设计若干测试用例,覆盖程序中所有可能的路径。,Company Logo,路径覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,路径覆盖,判定条件覆盖用例:,Company Logo,测试用例设计:,Company Logo,路径覆盖,优点: 发现错误能力强,覆盖面最广 缺点: 不包含判定条件覆盖 100路径覆盖是不可行的,自动化路径覆盖困难,Company Logo,逻辑覆盖小结,Company Logo,补充:函数覆盖,针对一个系统或子系统 在测试中有哪些函数被测试到了? 其被测试到的频率有多大? 这些函数在系统所有函数中的比例有多大等?,Company Logo,补充:指令块覆盖,语句覆盖的一个变体 一个指令块由不存在控制语句的多个语句组成,Company Logo,a=0; b=2; if (b0) a=b*a; else a=a/b;,基本块的划分对代码结构和代码优化有重要意义。,Company Logo,Company Logo,补充:判定路径覆盖,判定覆盖的一个变体 判定路径:起始位置是函数入口或一个判定的开始,结束位置是下一个判定的开始,Company Logo,Company Logo,补充: Z路径覆盖,路径覆盖的一个变体, 简化循环机制,只考虑执行一次和0次的情况,Company Logo,如何使用覆盖率,覆盖率不是目的,只是一种手段 软件测试实践过程: 单元测试和代码审查 集成测试和系统测试,必要时会对核心模块或者bug较多模块与开发人员一起重新做代码审查 在产品比较稳定之后,会采用一些测试工具来做覆盖率测试,可以发现哪些函数没有跑到,进而更新或加入新的测试用例。,Company Logo,如何使用覆盖率,你不可能针对所有的覆盖率指标去进行测试;相反,只考虑一种覆盖率指标也是不恰当的 一般项目的覆盖率不可能100%,一般采取的标准是函数覆盖率90%,语句覆盖率70%.,Company Logo,如何使用覆盖率,不要追求绝对100的覆盖率 对测试人员设计的测试用例通常要求: 语句覆盖率:100% 分支覆盖率:85以上 路径覆盖率:80以上,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,数据流测试,基本概念 控制流图和测试覆盖准则一旦给定,即可产生测试用例 数据流测试是根据代码中变量的使用情况进行的测试,面向程序中的数据。 早期的数据流分析常常集中于以下缺陷: 变量被定义,但是从来没有使用(引用); 所使用的变量没有被定义; 变量在使用之前被定义两次或多次(重复定义)。,Company Logo,数据流测试,两个概念 变量的定义性出现:变量定义或被赋值。 节点nG(P)是变量vV的定义节点,记做DEF(v,n),当且仅当变量v的值由对应节点n的语句片段处定义。 输入语句、赋值语句、循环控制语句和过程调用,都是定义节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容就会改变。,Company Logo,数据流测试,变量的引用性出现:变量数据被引用。 节点nG(P)是变量vV的使用节点,记做USE(v,n),当且仅当变量v的值由对应节点n的语句片段处使用。 计算性引用用于计算新数据(记做C-use) 谓词性引用用于条件控制(记做P-use) 输出语句、赋值语句、条件语句、循环控制语句和过程调用,都是使用节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容保持不变。,Company Logo,数据流覆盖准则,定义覆盖测试准则 引用覆盖测试准则 定义引用覆盖测试准则,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,程序插桩,“插桩”:通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。 如print语句 插桩技术是实现各种覆盖测试的必要手段。,Company Logo,程序插桩举例,例:常用printf语句(c语言) 计算x1+2+3+4+5+10 程序段: x=0; for(int i=0;i=10;i+) x=x+i; printf(“+ %d = %d”,i,x); ,Company Logo,统计可执行 语句的覆盖情况 把插入的语句称为“探测器”,Company Logo,程序插桩,设计时考虑的问题 明确要探测哪些信息? 在程序的什么部位设置探测点? 需要设计多少个探测点?,Company Logo,程序插桩,探测点设置位置 程序块的第一个可执行语句之前 循环语句之后 条件语句之后 在else、else if、endif之后 输入输出语句之后 go to语句之后 ,Company Logo,程序插桩,2、用于断言检测的程序插桩 断言(Assertion):assert 格式:void assert( int expression ),其中,expression为假时,会终止程序运行。一般在debug版本中启用,release版本中禁用 如:文件检索系统UT_TD_002_005 UT_TC_002_005_003_003(): fp2 = fopen(str, “rt“); _ASSERT(fp2 != NULL);,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,程序变异测试-错误驱动测试,遗传算法(Genetic Algorithm,简称GA) 遗传算法几个重要概念 1、染色体(Chronmosome) 个体(individuals)、群体(population) 2、基因(Gene) 3、适应度(Fitness) 适应度函数:对问题中的每一个染色体进行度量的函数。,Company Logo,遗传算法,遗传算法几个操作 选择(复制): 根据各个个体的适应度,按照一定的规则或方法,从第t代群体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中; 交叉: 将群体P(t)内的各个个体随机搭配成对,对每一对个体,以某个概率(称为交叉概率)交换它们之间的部分染色体; 变异: 对群体P(t)中的每一个个体,以某一概率(称为变异概率)改变某一个或某一些基因座上的基因值为其他基因值。,Company Logo,遗传算法流程图,Company Logo,遗传算法,遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等方面得到成功的应用; 在生产调度问题、自动控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行家算法课件
- 《基因转移技术》课件
- 《世纪婚礼》课件
- 高中+语文++《涉江采芙蓉》+课件+2024-2025学年统编版高中语文必修上册
- 《环境经济学绪论》课件
- 《广汽本田销售》课件
- 气站送气工合同协议书
- 《塑性加工原理》课件
- 《监理课程绪论》课件
- 《城市总体布局》课件
- 人文英语2形考作业(1-3)答案
- JJG 948-1999数字式电动振动试验系统
- NB∕T 10897-2021 烃基生物柴油
- 比较文学概论马工程课件 第6章
- GB/T 21414-2021轨道交通机车车辆电气隐患防护的规定
- GB/T 19243-2003硫化橡胶或热塑性橡胶与有机材料接触污染的试验方法
- GB/T 13288-1991涂装前钢材表面粗糙度等级的评定(比较样块法)
- 大理石保养合同(2篇)
- 国开作业《建筑测量》学习过程(含课程实验)
- 数字档案馆建设理论课件
- 河北省衡水市药品零售药店企业药房名单目录
评论
0/150
提交评论