嵌入式测试基础-白盒测试技术技术分析.ppt

  1. 1、本文档共194页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
白盒测试技术 白盒测试技术 白盒测试基本概念 白盒测试基本方法 测试用例设计方法 白盒测试主要内容 如何安排白盒测试 一、白盒测试基本概念 白盒测试 白盒测试VS黑盒测试 控制流图 复杂度度量 何谓白盒测试? 相对黑盒测试而言,也称结构测试或逻辑驱动测试 前提 目标 重点 穷举路径测试 黑盒测试vs白盒测试 控制流图 描述程序控制流的一种图示方式 结点:假定在流程图中用菱形框表示的判定条件内没有复合条件,而一组顺序处理框可以映射为一个单一结点 边:控制流图中的箭头(边)表示了控制流的方向,类似于流程图中的流线,一条边必须中止于一个结点,但在选择或多分支结构中分支的汇聚处,即使汇聚处没有执行语句也应该添加一个汇聚结点 区域:边和结点圈定的部分叫区域,当对区域计数时,图形外的部分也应记为一个区域 图例 McCabe复杂度 圈复杂度V(G)定义:Cyclomatic Complexity 圈复杂度V(G)计算方法 McCabe复杂度(续) McCabe复杂度(续) 经验显示:V(G)与错误发生率密切相关 圈复杂度可以很好的预测 错误发生的可能性 代码可被理解的程度 维护的工作量 调试的容易程度 用McCabe度量法检查代码可维护性 McCabe复杂度(续) 基本复杂度(Essential Complexity) EV(G) 依照结构化原则简化模块流程后,模块的复杂度,用于衡量程序非结构化程度 优点: 非结构化的逻辑 McCabe复杂度(续) 基本复杂度EV(G)的计算 McCabe复杂度(续) 模块设计复杂度(Module Design Complexity) iv(g) 设计复杂度(Design Complexity) S0 集成复杂度(Integration Complexity) S1 全局数据复杂度(Global Data Complexity) gdv(g) 局部数据复杂度(Specified Date Complexity) sdv(g) 病态数据复杂度(Pathological Complexity) pv(g) 二、白盒测试基本方法 软件测试主要方法 静态测试 基本概念 优势 动态测试 必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析 测试质量依赖于测试数据 生成测试数据、分析测试结果的工作量大,使开展测试工作费时、费力、费人 动态测试中涉及多方面工作,人员多、设备多、数据多,要求有较好的管理和工作规程 基本方法 静态 控制流分析 数据流分析 动态 程序插桩 控制流分析 数据流分析 用错的局域变量和全局变量; 不匹配的参数; 未使用过的变量或标号; 未定义的变量; 不允许的递归; ... 程序插桩 调试程序时,常常在程序中插入一些打印语句 借助往被测程序中插入操作来实现测试目的的方法 程序插桩技术能够按用户的要求,获取程序的各种信息 在程序的入口处插入对计数器C(i)初始化的语句 在出口处插入打印这些计数器的语句 程序插桩时需要考虑的问题 探测哪些信息? 在程序的什么部位设置探测点? 需要设置多少个探测点? 三、测试用例设计方法 1、逻辑覆盖法 逻辑覆盖率分析 依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成测试。 语句覆盖 Statement Coverage 判定覆盖 Decision Coverage 条件覆盖 Condition Coverage 分支条件组合覆盖 Condition/Decision Coverage 多条件覆盖 Multiple Condition Coverage 修正条件/判定覆盖 MC/DC 语句覆盖(SC) Statement Coverage C1覆盖、行覆盖(line coverage)、段覆盖(segment coverage)和基本块覆盖(basic block coverage) 要求:每一个可执行语句至少执行一次 基本块覆盖当每一个序列的语句是无分支的语句时和语句覆盖相同 主要缺点是对一些控制结构很迟钝 语句覆盖示例 if ( A ( B || C ) ) x=1; else x=0; 语句覆盖示例-2 缺陷 语句覆盖不能报告循环是否到达它们的终止条件―只能显示循环是否被执行了。既然do-while 循环通常要至少执行一次,语句覆盖认为它们和无分支语句是一样的 语句覆盖率对逻辑运算符反映是迟钝的(|| and ) 语句覆盖不能区分连续的switch 语句 测试用例通常和判定有关而不是和语句有关。你可能不必用10 个单独的测试用例来测试一个有10 个无分支语句的语句,你可能只用一个测试用例就够了 考虑一个IF-else 语句,包含一条语句在then 子句,99 条语句在else 子句,

文档评论(0)

阿里山的姑娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档