欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    白盒测试技术汇总.docx

    • 资源ID:1274027       资源大小:939.69KB        全文页数:82页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    白盒测试技术汇总.docx

    1、白盒测试技术汇总第6章 白盒测试技术相关知识点软件测试方法:分为两类(1)静态测试:不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试(2)动态测试:通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程,特点如下:必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析测试质量依赖于测试数据生成测试数据,分析测试结果的工作量大,使开展测试工作费时、费力、费人动态测试中涉及多方面工作,人员多,设备多,数据多,要求有较好的管理和工作规程一概述1 定义白盒测试:也称结构测试或逻辑驱动测试,按照程序内部的结构对程序进

    2、行测试,通过测试来检查产品内部动作是否按照设计规格说明书的规定正常进行,检查程序中的每条通路是否能按照预定要求正确工作。白盒测试又称为逻辑驱动测试,根据软件概要设计和详细设计说明文档生成用于白盒测试的测试用例。2 测试内容把测试对象看成是一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过不同点检查程序的状态,确定实际的状态与预期的状态一致3 测试基本技术(1)词法分析与语法分析(2)静态错误分析(3)程序插桩技术4 测试方法(1)代码检查法(2)静态结构分析法(3)静态质量度量法(4)逻辑覆盖法(5)基本路径测试法(6)域测试(7)符号

    3、测试(8)Z路径覆盖(9)程序变异5黑盒测试与白盒测试比较黑盒测试白盒测试不涉及程序结构考查程序逻辑结构用软件规格说明书生成测试用例用程序结构信息生成测试用例可适用于从单元测试到系统联调适用于单元测试和集成测试某些代码段得不到测试对所有逻辑路径进行测试二白盒测试基本技术1词法和语法分析(获取信息、作用)(1)获取信息 可以获取软件组成的重要基本因数,如变量标识符、过程标识符、常量等 组合获取的基本因数,可以得到软件的基本信息,如:v 标号交叉引用表:列出各模块中出现的全部标号及标号的属性,模块以外的全局、计算标号v 变量交叉引用表:列出变量定义及引用信息,变量的属性,变量类型(全局、局部)v

    4、子程序、宏和函数表:列出各个子程序、宏及函数的属性,输入、输出参数信息v 等价表:列出在等价语句和等值语句中出现的全部变量和标号v 常数表:列出全部数字常数和字符常数(2)作用 直接从表中查出说明/使用错误,如标号交叉引用表、变量交叉引用表 为用户提供辅助信息,如子程序、宏和函数表、等价表、常数表 用来做错误预测和程序复杂度计算,如操作符和操作数的统计表2静态错误分析(类型和单位分析、引用分析、表达式分析、接口分析)用于确定在源程序中是否有某类错误或危险结构,包括以下几种:(1) 类型和单位分析对源程序的类型进行检查,为了强化检查效果,扩充一些新的数据类型,进行静态预处理程序,分析程序中的类型

    5、错误(2) 引用分析 对程序中变量的引用进行检查,发现引用异常错误(如变量在定义前被引用,变量定义后未被引用)。 采用深度优选的方法遍历程序流图的每一条路径 建立引用异常的探测工具,包括变量定义表和变量引用表(3) 表达式分析对表达式进行分析,以发现和纠正在表达式出现的错误,如: 在表达式中不正确的使用了括号造成错误 数组下标越界错误 除数为零 浮点数计算的误差(最复杂)(4) 接口分析接口一致性是程序的静态错误分析和设计分析共同研究的题目,接口分析主要对下内容时进行一致性的分析: 各模块之间接口一致性 模块与外部数据库的接口一致性 形参与实参在类型,数量,顺序,维数,使用上的一致性 全局变量

    6、和公共数据区在使用上的一致性3程序插桩技术(设计时考虑的问题、探测点设置位置、断言语句)(1) 概述在动态测试中,是一种基本的测试手段,有广泛的应用主要借助向程序中插入操作,来实现测试目的的方法(即向源程序中添加一些语句(也称探测器),实现对程序语句的执行、变量的变化等情况进行检查)(2) 设计时考虑的问题 明确要探测哪些信息 在程序的什么部位设置探测点 需要设计多少个探测点(3) 探测点设置位置(以Fortran为例) 程序块的第一个可执行语句之前 entry语句的前后 有标号的可执行语句处 循环语句之后 条件语句之后 logical if语句之后 call语句之后 go to语句之后(4)

    7、 断言语句在程序中的特定部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实,我们把这些插入的语句称为断言语句。三、白盒测试方法静态测试静态测试:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、其他测试法(域测试、符号测试、Z路径覆盖、程序变异)。1 代码检查法(1) 目的通过桌面检查,代码审查和走查方式,对以下内容进行检查 检查代码和设计的一致性 代码对标准的遵循、可读性 代码逻辑表达的正确性 代码结构的合理性 程序编写与编写标准的符合性 程序中不安全、不明确和模糊的部分 编程风格问题等(2) 代码检查方式 方式名称执行人员

    8、检查内容检查过程桌面检查程序员对源程序代码进行分析、检验,并补充相关的文档,发现程序中的错误代码审查程序员和测试员组成的审查小组通过阅读、讨论和争议,以程序进行静态分析的过程第一步:小组成员提前阅读设计规格书、程序文本等相关文档第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题走查程序员和测试员组成的审查小组通过逻辑运行程序,发现问题第一步:小组成员提前阅读设计规格书、程序文本等相关文档第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题(3) 代码检查项目(采用分析技术) 检查变量的交叉引用表:检查未说明的变量和违反了类型规定的变量,变量的引用和使用情

    9、况 检查标号的交叉引用表:验证所有标号的正确性 检查子程序、宏、函数:验证每次调用与所调用位置是否正确,调用的子程序、宏、函数是否存在,参数是否一致 等价性检查:检查全部等价变量的类型的一致性 常量检查:确认常量的取值和数制、数据类型 标准检查:检查程序中是否违反标准的问题 风格检查:检查程序的设计风格 比较控制流:比较设计控制流图和实际程序生成的控制流图的差异 选择、激活路径:在设计控制流图中选择某条路径,到实际的程序中激活这条路径,如果不能激活,则程序可能有错 对照程序的规格说明,详细阅读源代码,比较实际的代码,从差异中发现程序的问题和错误 补充文档根据以上检查项目,可以编制代码规则,规范

    10、和检查表等作为测试用例(4) 编码规范程序编写过程中必须遵守的规则,规定代码的语法格式、语法规则,如排版、注释、标识符命名、可读性、变量、函数、过程、可测性、程序效率、质量保证、代码编辑、编译、审查、代码测试、维护、宏等各方面的编码要求(5) 代码检查规则对程序逻辑结构检查时,所规定的规则,形成(6) 缺陷检查表主要包括一些容易出错的地方和在以往工作中遇到的典型错误,形成表格形式重要性审查项结论文件结构重要头文件和定义文件的名称是否合理2 静态结构分析法在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图

    11、、内部文件调用关系图等各种图形图表,清晰地标识整个软件的组成结构,便于理解,通过分析这些图表,检查软件有没有存在缺陷或错误;包括控制流分析、数据据流分析、接口分析、表达式分析(1) 函数调用关系图:通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系,作用: 可以检查函数的调用关系是否正确 是否存在孤立的函数而没有被调用 明确函数被调用的频繁度,对调用频繁的函数可以重点检查(2) 模块控制流图:由许多结点和连接结点的边组成的图形,其中每个结点代表一条或多条语句,边表示控制流向,可以直观地反映出一个函数的内部结构。*例子1GIS软件:存在无法执行的死代码;有多个出口

    12、,可能没有在所有出口进行内存释放与回收,有内存泄露的可能*例子2MIS软件:有多个出口,存在内存泄露的可能;有10逻辑判断结点,易出现逻辑错误,降低可靠性,可能会破坏对CPU操作进行优化的处理,影响其运行性能3 静态质量度量法(1) 软件质量:根据ISO/IEC9126 国际标准,包括以下六个方面: 功能性(functionality) 可靠性(reliability) 可用性(usability) 有效性(efficiency) 可维护性(maintainability) 轻便性(portability)(2) 质量度量模型(从上到下) 质量因素(Factors):与分类标准的计算方式相似,

    13、依据各分类标准取值组合权重方法来计算,依据结果将软件质量分为四个等级,与分类标准等级内容相同 分类标准(criteria):对某一软件质量分为不同的分类标准,每个分类标准由一系列度量规则组成,每个规则分配一个权重,每个分类标准的取值由规则的取值与权重值计算得出,依据结果将软件质量分为四个等级:v 优秀(excellent):符合本模型框加中的所有规则(可以接受)v 良好(good):未大量偏离模型框架中的规则(可以接受)v 一般(fair):违背了模型框架中的大量规则(可以接受)v 较差(poor):无法保障正常的软件可维护性(不可以接受) 度量规则(Metrics):使用代码行数、注释频度等

    14、参数度量软件各种行为属性四 白盒测试方法动态测试(即设计测试用例的方法)1 白盒测试的动态测试原则根据程序的控制结构设计测试用例(1) 保证每个模块的所有独立路径至少被使用一次(2) 对所有的逻辑值均测试true和false(3) 上下边界及可操作范围内运行所有循环(4) 检查内部数据结构以确保其有效性2 逻辑覆盖法(1) 概述 逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖(2) 分类依据覆盖源程序语句的详尽程度 语句覆盖 SC(Statement Coverage) 判定覆盖 DC(Decision coverage) 条件覆盖 CC(Condition Coverage) 条件判定组合

    15、覆盖 CDC(Condition/ Decision Coverage) 多条件覆盖 MCC (Multiple Condition Coverage) 修改条件判定覆盖 MCDC(Multiple Condition Decision Coverage)(3) 语句覆盖(SC) 选择足够多的测试数据,使被测程序中每条语句至少执行一次 缺点:对程序执行逻辑的覆盖很低(4) 判定覆盖(DC) 设计足够多的测试用例,使得程序中的每一个判定至少获得一次真值和假值,或者使得程序中的每一个取真分支或取假分支至少经历一次,因此又称分支覆盖如:A&(B|C),A|(B|C)A=T,B=T,C=TA=F,B=

    16、F,C=F 可以满足语句覆盖 缺点:主要对整个表达式最终取值进行度量,忽略了表达式内部取值(5) 条件覆盖(CC) 设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 如:A&(B|C),A|(B|C)A=T,B=F,C=TA=F,B=T,C=F 不能够满足判定覆盖。 条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。(6) 条件判定组合覆盖(CDC) 设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次如:A&(B|C),A|(B|C)A=T,B=T,C=TA=F,B=F,C=F 缺点:没有

    17、考虑单个判定对整体结果的影响,无法发现逻辑错误(7) 多条件覆盖(MCC) 也称条件组合覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)A&(B|C),A|(B|C)A-B-CT-T-TT- T- FT-F-TT-F-FF-F-FF-F-TF-T-FF-T-T 满足条件覆盖一定满足判定覆盖、条件覆盖、条件判定组合覆盖 缺点:判定语句较多时,条件组合值比较多(8) 修正条件判定覆盖(MCDC) 每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次 程序的判定被分解为通过逻

    18、辑操作符(and,or)连接的bool条件,每个条件对于判定的结果值是独立的练习1:采用多条件覆盖方法,对下程序进行白盒测试用例设计if (a 1 )&( b= = 0) x=x/a;if ( a = = 2)| (x 1 ) x=x+1;六种逻辑覆盖的强弱关系在外面很多的教程都认为这六种逻辑覆盖从弱到强的排列顺序是:语句覆盖-判定覆盖-条件覆盖-判定-条件覆盖-条件组合覆盖-路径覆盖但经过上面的分析,它们之间的关系实际上可以用下图表示: 达到100CDC要求就一定能够满足100DC的要求 达到100DC要求就一定能够满足100SC的要求 达到100CDC要求就一定能够满足100CC的要 达到

    19、100MCDC要求就一定能够满足100DC的要求 达到100路径覆盖要求就一定能够满足100DC的要求而路径覆盖很难在该图表示出来。覆盖是一种白盒测试方法,测试人员必须拥有程序的规格说明和程序清单,以程序的内部结构为基础,来设计测试案例。其基本准则是则测试案例来尽可能多地覆盖程序的内部逻辑结构,发现其中的错误和问题。所以,覆盖测试一般应用在软件测试的早期,即单元测试阶段。覆盖的几种方法或策略如表1所列。表1 几种典型的覆盖策略覆盖策略定 义语句覆盖(sc)在制定测试案例时,使程序中的每个语句都至少执行1次。其缺点是不能发现某些逻辑错误判定覆盖执行足够的测试案例,使得程序中每个判定都获得一次“真

    20、”值和“假”值,或者说使每一个分支都至少通过1次条件覆盖执行足够的测试案例,使得判定中的每个条件获得各种可能的结果判定/条件覆盖执行足够的测试案例,使得判定中的每个条件取得各种可能的值,并使得每个判定取得各种可能的结果条件组合覆盖执行足够的测试案例,使得每个判定中的条件的各种组合都至少出现1次。其特点是覆盖较充分,满足条件组合覆盖的测试案例也一定满足判定覆盖、条件覆盖和判定/条件覆盖。修改的条件/判断覆盖(MCDC)每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次程序的判定被分解为通过逻辑操作符(and,or)连接的bool条件,每个条件对于

    21、判定的结果值是独立的从以上简要介绍可看出,这几种覆盖策略的严格程序有如下趋势: 其它一些覆盖策略还包括:修改的条件/判断覆盖(通常简称为MCDC)、路径覆盖、函数覆盖、调用覆盖、线性代码顺序和跳转覆盖、数据流覆盖、目标代码分支覆盖、循环覆盖、关系操作符覆盖等。随着软件规模的增长,实现全面的覆盖所需的测试案例的数目也越来越庞大,因此根据被测软件对象的特点选择适当的覆盖策略是非常重要的;同时,要确定合理测试目标,达到100%的覆盖往往要付出很大的代价,应该同形式化评审等方法结合,以发现更多的软件故障。 覆盖测试工具选取:要取得较好的覆盖测试效果,需要借助一定的工具软件。这些工具软件一般具备如下的功

    22、能特点,可弥补人为测试的缺陷:分析软件内部结构,帮助制定覆盖策略及设计测试案例;与适当的编译器结合,对被测软件实施自动插装,以便在其运行过程中生成覆盖信息并收集这些信息;根据搜集的覆盖信息计算覆盖率,帮助测试人员找到未被覆盖的软件部位,以改进测试案例提高覆盖率。在利用工具进行动态覆盖测试时,需要3个要素:测试用例、插装过的被测代码、搜集覆盖信息并进行分析的工具本身。代码插装由工具自动完成,通过执行测试用例,再由工具搜集覆盖信息并进行分析,就可以看到覆盖率指标了。图中展示实现覆盖测试的基本过程。3 基本路径覆盖(1) 概述 在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行

    23、路径的集合,然后据此设计测试用例 设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次(2) 程序控制流图 控制流图是描述程序控制流的一种方式 图形符号:圆圈代表一个结点 表示一个或多个无分支的语句或源程序语句 边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域 判断语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(a and b),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断 图形符号图所示(3) 程序环路复杂性 程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数 从程序的环路复杂性可导出程序基本

    24、路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界 独立路径:包括一组以前没有处理的语句或条件的一条路径 通常环路复杂性可用以下三种方法求得:v 将环路复杂性定义为控制流图中的区域数。v 设E为控制流图的边数,N为图的结点数,则定义环路复杂性为 V(G)EN2。v 若设P为控制流图中的判定结点数,则有 V(G)P1。思考题:1、什么是环形复杂度?环形复杂度就是一种为程序逻辑复杂性提供定量尺度的软件度量。将该度量用于基本路径方法,它可以提供程序基本集的独立路径数量和确保所有语句至少执行一次的上界。(4) 基本路径测试步骤 以详细设计或源代码为基础,导出程

    25、序的控制流图 计算得到控制流图G的环路复杂性v(g) 确定线性无关的路径的基本集 生成测试用例,确保基本路径集中每条路径的执行五、其它白盒测试方法1、域测试(1) 概述是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择适的测试点进行测试(2) Howden错误分类相对于程序路径分类 域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误 计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误 丢失路径错误:由于程序中的某处少了一个判定谓词而引起的(3) 测试理想结果:检验输入空间的每一个输入

    26、元素是否都产生正确的结果(4) 缺点 为进行域测试对程序提出的限制过多 当程序存在很多路径时,所需的测试点很多2、 符号测试(1) 概述 基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。 符号测试执行的是代数运算,可以作为普通测试的一个扩充 符号测试可以看作是程序测试和程序验证的一个折衷办法(2) 测试理想情况:程序中仅有有限的几条执行路径,如果都完成了符号测试,就可把握的确认程序的正确性了(3) 缺点 分支问题 二义性问题 大程序问题3、 Z路径覆盖(1) 概述对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可

    27、能,简化循环意义下的路径覆盖称为Z路径覆盖(2) 循环简化:限制循环次数,只考虑循环一次或零次情况4、 程序变异(1) 概述是一种错误驱动测试错误驱动测试:指该方法是针对某类特定程序错误的,即专门测试某类错误是否存在错误驱动测试分类:程序强变异和程序弱变异(2) 优点:便于集中目标对软件危害最大的可能错误,提高测试效率,降低成本六 白盒测试综合策略1 白盒测试中测试方法的选择策略(1) 在测试中,首先尽量使用测试工作进行静态结构分析(2) 采用先静态后动态的组合方式,先进行静态结构分析,代码检查和静态质量度量,然后现进行覆盖测试(3) 利用静态结构分析的结果,通过代码检查和动态测试的方法对结果

    28、进一步确认,使测试工作更为有效(4) 覆盖率测试是白盒测试的重点,使用基本路径测试达到语句覆盖标准;对于重点模块,应使用多种覆盖标准衡量代码的覆盖率(5) 不同测试阶段,侧重点不同 单元测试:以代码检查、逻辑覆盖 集成测试:增加静构结构分析、静态质量度量 系统测试:根据黑盒测试结果,采用白盒测试2 最少测试用例数计算 将构成循环操作的重复型结构用选择结构代替,因此在N-S图中只存在顺序和分支操作 N-S图按分支结构分层,整个程序的最少测试用例数为每个分层中最少测试用例数的乘积3 测试覆盖标准 Foster的ESTCA覆盖标准 Woodward等人的层次LCSAJ覆盖标准七、如何挑选白盒测试工具

    29、 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。 对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C、Visual C、Java、Visual J+等。下表为不同公司的不同类型的测试工具列表:表1-1 测试工具分类功能测试性能测试白盒测试管理缺陷管理MIQTPWinRunnerLoadRunnerTestDirectorRationalRobotRobotPurifyTestManagerclearquestCompuwareQARunQALoadDevPartnerQACenterTrackRecordTelelogicLOGISCOPETelelogic DOORSParasoftC+


    注意事项

    本文(白盒测试技术汇总.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开