软件测试技术白盒测试逻辑覆盖剖析.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * 白盒测试方法 逻辑覆盖法 测试用例 测试用例由测试输入数据以及与之对应的输出结果组成。 测试用例设计的好坏直接决定了测试的效果和结果。所以说在软件测试活动中最关键的步骤就是设计有效的测试用例。 测试用例可以针对黑盒测试设计用例,也可以针对白盒测试设计用例,我们今天开始讲针对白盒测试的用例设计方法。 白盒测试方法 为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。 假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有一个潜在的被 0 除的错误。若测试组采用的测试用例的执行路径没有同时经过x=0和y=5/x进行测试,显然测试工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被 0 除的错误发生。 白盒测试方法(续) 程序结构分析; 逻辑覆盖; 基本路径测试; 白盒测试根据程序的控制结构设计导出测试用例,主要用于软件程序的验证。 需要全面了解程序内部的逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。 穷举路径仍然存在遗憾 穷举路径测试法无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序; 穷举路径测试不可能查出程序因为遗漏路径而出错; 穷举路径测试发现不了一些与数据相关的错误; 白盒测试原则 保证一个模块中的所有独立路径至少被测试一次; 所有逻辑值均需测试真(True)和假(False)两种情况; 检查程序的内部数据结构,保证其结构的有效性; 在取值上、下边界,即可操作范围内运行所有循环. 白盒测试方法(续) 白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有: 逻辑覆盖法(逻辑驱动测试) 基本路径测试方法 覆盖测试 主要是测试覆盖率,以程序内在逻辑结构为基础的测试。包括以下6种类型: 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 修正-判定条件覆盖 逻辑覆盖法 int function1(int a,int b,int c) { int x; x=0; if(a(b||c)) x=1; return x; } 1、语句覆盖(Statement Coverage) 原理:如果语句中有错误,仅靠观察不执行可能发现不了 在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次 若干个 - 尽量少 语句覆盖、程序段覆盖、程序块覆盖 语句覆盖率 语句覆盖率 已执行的可执行语句占程序中可执行语句总数的百分比 复杂的程序不可能达到语句的完全覆盖 语句覆盖率越高越好 语句覆盖测试用例 达到语句覆盖100%的测试用例 A = 1 B = 1 C = 1 未达到语句覆盖100%的测试用例 A = 0 B = 1 C = 3 语句覆盖的优点 检查所有语句 结构简单的代码的测试效果较好 容易实现自动测试 代码覆盖率高 如果是程序块覆盖,则不涉及程序块中的源代码 语句覆盖不能检查出的错误 逻辑运算(、||)错误 判定的第一个运算符“”错写成“||”,或第二个运算符“||”错写成“”,这时使用上述的测试用例仍然可以达到100%的语句覆盖。 语句覆盖不能检查出的错误 循环语句错误 循环次数错误 跳出循环条件错误 语句覆盖不能检查出的错误 循环语句例子 for(i=0;i10;i++) { statement; } While(x3) { statement; } for(i=0;i=10;i++) { statement; } While(x3x7) { statement; } 语句覆盖率的问题 能达到很高的语句覆盖率 语句覆盖率看似很高,却有严重缺陷 if(x!=1) { statements; ……; } else { statement; } }99句 }1句 测试用例 x = 2 语句覆盖率99% 50%的分支没有达到 2、判定覆盖(Decision Coverage) 比语句覆盖稍强的覆盖标准是判定覆盖。 判定覆盖的含义是:设计足够多的测试用例,使程序中的每个判定至少都获得一次“真值”或“假值”。 除了双值判定语句外,还有多值判定语句,如case语句,因此判定覆盖更一般的含义是:使得每一个判定获得每一种可能的结果至少一次。 1 6 3 5 2 7 8 9

您可能关注的文档

文档评论(0)

四月 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档