分享
分享赚钱 收藏 举报 版权申诉 / 121

类型白盒测试的实用技术课件.ppt

  • 上传人:微传9988
  • 文档编号:3392151
  • 上传时间:2018-10-22
  • 格式:PPT
  • 页数:121
  • 大小:2.67MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    白盒测试的实用技术课件.ppt
    资源描述:

    1、Company Logo,第2章 白盒测试的实用技术白盒测试(White Box Testing),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。,软件测试技术研究组 中国信息大学,Company Logo,白盒测试技术是软件测试的主要方法之一,白盒测试的基本概念、检查方法、测试方法、测试工具等内容是必须掌握的,本章重点讨论以下内容: 白盒测试的概述 白盒测试的静态检查方法 白盒测试的常用方法,软件测试技术研究组 中国信息大学,Company Logo,2.1白盒测试的概述白盒测试的对象主要是源

    2、程序。是指用代码内部的分支、路径、条件,使程序设计的控制结构导出测试用例,是软件测试的主要方法之一。 2.1.1 白盒测试的基本知识 白盒测试方法分为两类: (1)静态测试 (2)动态测试:,软件测试技术研究组 中国信息大学,Company Logo,2.1.2 白盒测试测试原则 白盒测试的原则有4点: 1)保证一个模块中所有路径至少被测试一次;2)所有逻辑值都要测试真和假两种情况;3)检查程序的内部数据结构是否有效;4)检查上、下边界及可操作范围内运行所有循环。,软件测试技术研究组 中国信息大学,Company Logo,2.1.3 白盒测试的类别、依据和流程白盒测试策略是首先进行静态结构分

    3、析,采用先静态后动态的组合方式。然后进行覆盖测试。利用静态测试的分析结果和通过动态测试的结果进行进一步确认已达到测试效果。白盒测试一般要考虑类别、依据和流程。,软件测试技术研究组 中国信息大学,Company Logo,1. 白盒测试的类别 白盒测试的类别具体分为8大类。 (1) 软件公用问题的测试; (2) 语言测试; (3) SQL语句测试; (4) 数据类型测试; (5) 界面测试; (6) 数值对象测试; (7) 业务对象测试; (8) 数据管理对象测试。,软件测试技术研究组 中国信息大学,Company Logo,2. 白盒测试依据 软件需求报告; 软件需求规格说明; 程序设计文档;

    4、 软件界面设计; 编码规范; 开发命名标准。,软件测试技术研究组 中国信息大学,Company Logo,3.白盒测试的流程 白盒测试的流程分为界面对象和业务对象两种方 式。 界面对象测试 界面对象测试的流程如图2-1所示。,软件测试技术研究组 中国信息大学,图2-1界面对象的流程图,Company Logo,(2) 业务对象流程测试 业务对象测试的流程如图2-2所示。,软件测试技术研究组 中国信息大学,图2-2 业务对象测试的流程图,Company Logo,2.2 白盒测试方法在白盒测试中,可以使用各种测试方法进行测试。但是,测试要考虑五点问题。(1)测试中,尽量先用自动化工具来进行静态结

    5、构分析;(2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试;(3)利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性;(4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率;(5)在不同的测试阶段,测试的侧重点是不同的。,软件测试技术研究组 中国信息大学,Company Logo,2.2.1 代码检查代码检查是静态测试的主要方法,代码检查包括代码走查、桌面检查、流程图审查等。对于代码检查从如下几点进行叙

    6、述。 1)概述 代码检查主要检查代码和流图设计的一致性、代码结构的合理性、代码编写的标准性、可读性、代码的逻辑表达的正确性等方面。包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。,软件测试技术研究组 中国信息大学,Company Logo,2)代码走查目的 代码走查是为达到以下目的: 通过检查代码程序是不是按照某种标准或规范编写的代码; 通过检查代码来发现程序缺陷; 通过检查代码容易发现程序产生的错误; 通过检查代码来发现代码是不是流程图要求的; 通过检查代码来发现有没有遗漏的项目; 要代码易于移植,代码经常需要在不同的硬件中运行,或者使用不同的编译器编译; 要代

    7、码易于阅读、理解和维护。,软件测试技术研究组 中国信息大学,Company Logo,2.2.2 代码检查方式 代码走查的方式有: 1 桌面检查 2 走查 3 代码审查 代码审查可分为以下两步: 第一步:小组负责人把程序文本、规范、相关要求、流程图及设计说明书发给每个成员。 第二步:每个成员依据所发材料作为审查依据,但是由程序员讲解程序的结构每、逻辑和源程序。在此过程中,小组成员可以提出自己的疑问;程序员在讲解自己的程序时,也能发现自己原来没有注意到的问题。,软件测试技术研究组 中国信息大学,Company Logo,2.2.3 代码检查项目 代码检查项目主要有以下几点: 目录文件组织 检查函

    8、数 数据类型及变量 检查条件判断语句 检查循环体制 检查代码注释 桌面检查 其它检查,软件测试技术研究组 中国信息大学,Company Logo,2.2.4 静态结构分析静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系和作用。静态结构主要分析: 1. 可以检查函数的调用关系是否正确; 2. 是否存在孤立的函数而没有被调用; 3. 明确函数被调用的频繁度,对调用频繁的函数可以重点检查。,软件测试技术研究组 中国信息大学,Company Logo,2.2.5 SQL语句测试 主

    9、要检查以下两点: 语句检查 类型转换 2.2.6 代码检查的分析与评价 代码检查的分析与评价主要注意以下两大 点: 1 能力 陈述经代码检查证实了的本软件的能力。 2 缺陷和限制,软件测试技术研究组 中国信息大学,Company Logo,2.3 白盒测试的常用技术 白盒测试常用技术主要有7种。现分别叙述如下: 2.3.1 逻辑覆盖法 逻辑覆盖法主要讨论四点: 测试覆盖率; 逻辑覆盖 ; 面向对象的覆盖 ; 测试覆盖准则。 现分别进行讨论。,软件测试技术研究组 中国信息大学,Company Logo,1. 测试覆盖率测试覆盖率是用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础

    10、的一个入口或属性,比如语句、分支、条件等。测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。 其中 测试覆盖率包括功能覆盖和结构覆盖,软件测试技术研究组 中国信息大学,Company Logo,2. 逻辑覆盖根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为语句覆盖 、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修改条件判定覆盖、组合覆盖和路径覆盖。 3. 面向对象的覆盖面向对象的覆盖主要讨论继承上下文覆盖和基于状态的上下文覆盖。,软件测试技术研究组 中国信息大学,Company Logo,4.

    11、测试覆盖准则测试覆盖准则主要讨论ESTCA(Error Sensitive Test Cases Analysis)错误敏感测试用例分析和LCSAJ(Linear Code Sequence and Jump)线性代码序列与跳转。 (1)ESTCA覆盖准则 (2)现行代码序列与跳转LCSAJ 现行代码序列与条状LCSAJ是指一组顺序执行的代码,以控制流跳转为结束点。可产生4层覆盖,软件测试技术研究组 中国信息大学,Company Logo,2.3.2 插桩技术 软件动态测试中,插桩测试是一个被广泛应用的测试方法。插桩测试就是向源程序中插入语句然后执行程序,通过打印语句,获得动态信息(我们最为关

    12、心的信息)。 在这里,我们举一个最简单的例子,以计算整数X和整数Y的最大公约数为例,试图说明插桩技术的要点。 插桩后求最大公约数程序流程图如图2-3所示。,软件测试技术研究组 中国信息大学,Company Logo,软件测试技术研究组 中国信息大学,图2-3求最大公约数程序插桩流程图,Company Logo,2.3.3 基本路径测试法基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。 基本路径测试法的重点内容如下: 程序的控制流图:描述程序控制流的一种图示方法。

    13、 程序环形复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。,软件测试技术研究组 中国信息大学,Company Logo,1 程序控制流图程序控制流图(可简称流图)是对程序流程图进行简化后得到的,它突出表示程序控制流的结构。程序控制流图是描述程序控制流的一种方式。控制流图图形符号:图形符号:圆圈代表一个结点, 表示一个或多个无分支的语句或源程序语句;程序控制流边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域;判断语句中的条件为复合条件时,即条件表达式由一个或多个

    14、逻辑运算符连接的逻辑表达式(a and b),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断。,软件测试技术研究组 中国信息大学,Company Logo,基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤: 画出程序的控制流图。 计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 导出基本路径集,确定程序的独立路径。 根据中的独立路径,设计测试用例的输入数据和预期输出。 程序控制流图如图2-4所示。,软件测试技

    15、术研究组 中国信息大学,Company Logo,软件测试技术研究组 中国信息大学,软件测试技术研究组 中国信息大学,图2-4 程序控制流程图,Company Logo,2.3.4 域测试法 域测试是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择测试点进行测试。主要为: 1)域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误; 2) 计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误; 3) 丢失路径错误:由于程序中的某处少了一个判定谓词而引起的丢失路径错误,软件测试技术研究组 中

    16、国信息大学,Company Logo,2.3.5 符号测试符号测试基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。 1) 符号测试执行的是代数运算,可以作为普通测试的一个扩充; 2) 符号测试可以看作是程序测试和程序验证的一个折衷办法; 3) 符号测试程序中仅有有限的几条执行路径;,软件测试技术研究组 中国信息大学,Company Logo,2.3.6 Z路径覆盖法分析程序中的路径是指检验程序从入口开始,执行过程中经历的各个语句,直到出口。 Z路径覆盖 对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可能,简化循

    17、环意义下的路径覆盖称为Z路径覆盖(循环简化:限制循环次数,只考虑循环一次或零次情况),循环简化的目的是限制循环的次数,无论循环的形式和循环体实际执行的次数,简化后的循环测试只考虑执行循环体一次和零次(不执行)两种情况,即考虑执行时进入循环体一次和跳过循环体这两种情况。,软件测试技术研究组 中国信息大学,Company Logo,2.3.7 程序变异测试法程序变异是一种错误驱动测试。错误驱动测试是指该方法是针对某类特定程序错误的,经过多年的测试理论研究和软件测试的实践,人们逐渐发现要想找出程序中所有的错误几乎是不可能的。比较现实的解决办法是将错误的搜索范围尽可能地缩小,以利于专门测试某类错误是否

    18、存在。,软件测试技术研究组 中国信息大学,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,控制流测试 数据流测试

    19、程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,基本概念 控制流图 有向图 路径、完整路径 可达、简单路径、基本路径、子路径 回路、无回路路径 A连接B 路径A覆盖路径B,Company Logo,控制流覆盖准则,覆盖率:测试的完全程度如何?,Company Logo,覆盖率概念,如:一个程序总代码为100行,使用测试用例运行一次,执行了75行代码,则 代码覆盖率75,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖 条件组合覆盖路径覆盖,Company Logo,语句覆

    20、盖,设计若干测试用例,使得程序中每条语句至少被执行一次。,设计原则:测试用例尽量少,覆盖率尽量高,Company Logo,举例,测试用例设计:,红色字母代表程序执行路径,Company Logo,测试用例设计:,Company Logo,例3-2,测试用例设计:,Company Logo,语句覆盖,优点:直观、简单、易自动化 缺点:发现错误能力很“弱”对隐藏的条件和可能到达的隐式逻辑分支,无法测试,Company Logo,语句覆盖,例:ifelse结构,如右例所示: 当A=2 B=0 X=3时,满足语句覆盖要求,但abd分支未测试。,Company Logo,控制流覆盖准则,逻辑覆盖:常见

    21、的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖 条件组合覆盖路径覆盖,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,判定覆盖,优点:发现

    22、错误能力比语句覆盖强 缺点:对复合条件判断,只判定整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖 条件组合覆盖路径覆盖,Company Logo,条件覆盖,设计若干测试用例,使得判定中的每个条件的可能取值至少满足一次。,Company Logo,条件覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,判定覆盖测试用例设计未有B!=0的取值,条件覆盖,条件覆盖测试用例设计:,Company Logo,测试用例

    23、设计:,Company Logo,例3-2,测试用例设计:,Company Logo,例3-4,1、列出所有的原子条件:i=0 j=0 k=0i+j=k i+k=j j+k=Ii=j i=k j=k 2、设计测试用例,使得每个条件取一次真值和一次假值,Company Logo,例3-4,设计测试用例如下表所示,Company Logo,条件覆盖,优点:发现错误能力比语句覆盖强 缺点:条件覆盖并不能保证判定覆盖。对复合条件,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件

    24、覆盖(也称谓词覆盖)判定/条件覆盖 条件组合覆盖路径覆盖,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=0i+j

    25、=k i+k=j j+k=ii=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,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖 条件组

    26、合覆盖路径覆盖,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、设计测试用例,使得每个判定中条件结果的所有可能组合至少出现

    27、一次,Company Logo,设计测试用例如下表所示:,Company Logo,条件组合覆盖,优点:发现错误能力比判定/条件覆盖强 缺点:不能保证覆盖程序所有执行路径,部分覆盖能力间的关系:,Company Logo,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖 判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖 条件组合覆盖路径覆盖,Company Logo,路径覆盖,设计若干测试用例,覆盖程序中所有可能的路径。,Company Logo,路径覆盖,测试用例设计:,(O),(A),(B),(D),Company Logo,路径覆盖,判定条件覆盖用例:,Company

    28、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;,基本块的划分对代码结构和代码优

    29、化有重要意义。,Company Logo,Company Logo,补充:判定路径覆盖,判定覆盖的一个变体 判定路径:起始位置是函数入口或一个判定的开始,结束位置是下一个判定的开始,Company Logo,Company Logo,补充: Z路径覆盖,路径覆盖的一个变体, 简化循环机制,只考虑执行一次和0次的情况,Company Logo,如何使用覆盖率,覆盖率不是目的,只是一种手段软件测试实践过程:单元测试和代码审查集成测试和系统测试,必要时会对核心模块或者bug较多模块与开发人员一起重新做代码审查在产品比较稳定之后,会采用一些测试工具来做覆盖率测试,可以发现哪些函数没有跑到,进而更新或加

    30、入新的测试用例。,Company Logo,如何使用覆盖率,你不可能针对所有的覆盖率指标去进行测试;相反,只考虑一种覆盖率指标也是不恰当的一般项目的覆盖率不可能100%,一般采取的标准是函数覆盖率90%,语句覆盖率70%.,Company Logo,如何使用覆盖率,不要追求绝对100的覆盖率对测试人员设计的测试用例通常要求:语句覆盖率:100% 分支覆盖率:85以上 路径覆盖率:80以上,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,数据流测试,基本概念 控制流图和测试覆盖准则一旦给定,即可产生测试用例 数据流测

    31、试是根据代码中变量的使用情况进行的测试,面向程序中的数据。 早期的数据流分析常常集中于以下缺陷: 变量被定义,但是从来没有使用(引用); 所使用的变量没有被定义; 变量在使用之前被定义两次或多次(重复定义)。,Company Logo,数据流测试,两个概念 变量的定义性出现:变量定义或被赋值。 节点nG(P)是变量vV的定义节点,记做DEF(v,n),当且仅当变量v的值由对应节点n的语句片段处定义。 输入语句、赋值语句、循环控制语句和过程调用,都是定义节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容就会改变。,Company Logo,数据流测试,变量的引用性出现:变

    32、量数据被引用。 节点nG(P)是变量vV的使用节点,记做USE(v,n),当且仅当变量v的值由对应节点n的语句片段处使用。 计算性引用用于计算新数据(记做C-use) 谓词性引用用于条件控制(记做P-use) 输出语句、赋值语句、条件语句、循环控制语句和过程调用,都是使用节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容保持不变。,Company Logo,数据流覆盖准则,定义覆盖测试准则 引用覆盖测试准则 定义引用覆盖测试准则,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,程序插桩,“插

    33、桩”:通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。 如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

    34、 Logo,程序插桩,探测点设置位置 程序块的第一个可执行语句之前 循环语句之后 条件语句之后 在else、else if、endif之后 输入输出语句之后 go to语句之后 ,Company Logo,程序插桩,2、用于断言检测的程序插桩 断言(Assertion):assert 格式:void assert( int expression ),其中,expression为假时,会终止程序运行。一般在debug版本中启用,release版本中禁用 如:文件检索系统UT_TD_002_005UT_TC_002_005_003_003():fp2 = fopen(str, “rt“);_ASS

    35、ERT(fp2 != NULL);,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,程序变异测试-错误驱动测试,遗传算法(Genetic Algorithm,简称GA) 遗传算法几个重要概念 1、染色体(Chronmosome) 个体(individuals)、群体(population) 2、基因(Gene) 3、适应度(Fitness) 适应度函数:对问题中的每一个染色体进行度量的函数。,Company Logo,遗传算法,遗传算法几个操作 选择(复制): 根据各个个体的适应度,按照一定的规则或方法,从第t代群

    36、体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中; 交叉: 将群体P(t)内的各个个体随机搭配成对,对每一对个体,以某个概率(称为交叉概率)交换它们之间的部分染色体; 变异: 对群体P(t)中的每一个个体,以某一概率(称为变异概率)改变某一个或某一些基因座上的基因值为其他基因值。,Company Logo,遗传算法流程图,Company Logo,遗传算法,遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等方面得到成功的应用; 在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。,Company Logo,程序变异测试-

    37、错误驱动测试,程序P的变异因子m(p)也是一个程序,是对P进行微小改动而得到。称m(p)是P的变异因子。,例如,测试代码片段: if (a ,对条件(a,Company Logo,程序强变异测试,若P在D上是正确的,可以找出P的变异因子的某一集合: m=M(P)|m(p)是P的变异因子 1、若m中每一元素在D上存在错误,则可认为程序的正确程度较高。 2、若m中某些元素在D上不存在错误,则可能存在三种情况: 这些变异因子与P在功能上是等价的。 现有的测试数据不足以找出P与其变异因子间的差别。 P可能含有错误,而其某些变异因子却是正确的。,Company Logo,程序强变异测试,使用程序变异方法

    38、,最重要的是怎样建立变异因子。 一些常见的变异运算: 常量之间替换、标量与变量互换、数组名替换、 算术/关系/逻辑运算符替换、 插入绝对值符号、插入单面运算符、 语句分解、语句删除、GO TO、 循环终止条件变换,Company Logo,程序强变异测试,【例3-14】 ab,a=b,ab,ab,ab 【例3-15】 (1)term=x 变异成 term=0 (2)i=100 (3)i%2=0 变异成 i%2=1,Company Logo,程序强变异测试,优点: 较为有效的测试方法,针对性强,系统性强。 缺点: 1、要运行所有的变异因子,从而成倍地提高了测试的成本; 2、决定程序与其变异因子是

    39、否等价是一个递归不可解问题。,Company Logo,程序弱变异测试,弱变异:只对被测程序进行测试的变异方法。 弱变异和强变异有很多相似之处。其主要差别在于:弱变异强调的是变动程序的组成部分,根据弱变异准则,只要事先确定导致C与C产生不同值的测试数据组,则可将程序在此测试数据组上运行,而并不实际产生其变异因子。 弱变异测试方法的主要优点是开销较小,效率较高。,Company Logo,控制流测试 数据流测试 程序插桩 程序变异测试 白盒测试工具 软件缺陷分析,Company Logo,白盒测试工具,一、静态工具Logiscope 静态测试工具类型: 1.代码审查 2.一致性检查 3.错误检查 4.接口分析 5.输入/输出规格说明分析检查 6.数据流分析 7.类型分析 8.单元分析 9.复杂度分析,Company Logo,白盒测试工具,二、动态工具 静态测试工具类型: 1.功能确认与接口测试 测试包括对各模块功能、模块间的接口、局部数据结构、主要执行路径、错误处理等方面进行的测试。 2.覆盖测试 覆盖分析对所涉及的程序结构元素进行度量,以确定测试执行的充分性。,Company Logo,小结,重要知识点: 白盒测试基本概念 控制流测试覆盖率统计方法 了解其他白盒测试方法,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:白盒测试的实用技术课件.ppt
    链接地址:https://www.docduoduo.com/p-3392151.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开