第4章 白盒测试.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
独立路径是指从程序入口到出口的多次执行中,每次至少有一个语句(包括运算、赋值、输入、输出或判断)是新的,未被重复的。 路径 p6=A、B、C、B、E、F、G p7=A、B、C、B、B、C、G 不是独立路径。 c A E B D C F G a b d e f g h i e j k 很明显,从测试角度来看,如果某一程序的每一独立路径都测试过了,那么可以认为程序中的每个语句都已检验过了。 但在实际测试中,要真正构造出程序的每条独立路径,并不是一件轻松的事。 路径测试考虑以下几个方面: 程序的控制流图。 程序环境复杂性。借助McCabe复杂性度量,可以从程序的环路复杂性导出程序路径集合中的独立路径数。 设计测试用例,确保独立路径集中的每一条路径被执行。 在路径测试中,最关键的问题仍然是如何设计测试用例,使之既能够避免测试的盲目性,又能有较高的测试效率。 一般有三个途径可得到测试用例: (1)通过非路径分析得到测试用例 (2)对未测试的路径生成相应的测试用例 (3)生成指定路径的测试用例 方法 判定覆盖 条件覆盖 条件组合覆盖 基路径测试 优点 简单、无须细分每个判定 增加了对符号判定情况的测试 对程序进行较彻底的测试,覆盖面广 清晰、测试用 例有效 缺点 往往大部分的判定语句是由多个逻辑条件组合而成(如包含AND、OR等的组合),若仅仅判断其组合条件的结果,而忽略每个条件的取值情况,必然会遗漏部分测试场景 达到条件覆盖,需要足够多的测试用例,但条件覆盖还是不能保证判定覆盖,这是由于AND和OR不同的组合效果造成的 对所有可能条件进行测试,需要设计大量、复杂测试用例, 工作量比较大 基本路径法,类似于分支的方法,不能覆盖一些特定的条件,这些条件往往是容易出错的地方 数据流测试 数据流测试分析常常集中于定义/引用异常的缺陷,用于如下三方面测试。 (1)变量被定义,但是从来没有使用(引用) (2)所使用的变量没有被定义 (3)变量在使用之前被定义两次 早期的数据流测试主要用于检测程序编写时出现的一些警告信息,如“所定义的变量未被使用等”问题,这些问题光靠简单的语法分析器或者是语义分析器是无法检测出来的。 变量定义/引用分析 1)DEF(v,n) 变量v在结点n处定义,定义包括输入语句,赋值语句(等号左侧),过程调用都是定义结点的例子,如果执行这些语句,变量的值往往会发生变化。 2)USE(v,n) 变量v在结点n处被使用,使用包括输出语句、赋值语句(等号右侧)、条件语句、循环语句、过程调用语句都是结点的使用语句,如果执行这类语句,值不会被改变。 3)P-use 当且进当USE(v,n)是谓词使用,比如a=2,对于P-use的程序图出度=2 变量定义/引用分析 4)C-use 当且仅当USE(v,n)是计算使用,对于C-use的程序图入度=1 5)定义使用路径 关于变量v的定义使用路径(记做du-path),存在定义和使用结点DEF(v,m) 和USE(v,n),使得m和n是该路径的开始结点和结束结点。 6)清除路径 当定义结点和清除结点中间没有其他的定义结点的时候为清除路径。 5 6 4 7 3 2 8 1 9 10 结点 被定义的变量 被引用的变量 1 X,Y,Z 2 X W,X 3 X,Y 4 Y,Z 5 Y V,Y 6 Z V,Z 7 V X 8 W Y 9 Z V 10 Z 语句2使用了变量W,而在此之前并未对其进行定义(赋值)。 语句5,6使用了变量V,但在第一次执行循环时也未对其定义过。 语句6对变量Z的定义从未被使用过。 语句8对变量W的定义从未被使用过。 程序片 一个重要概念——S(V,n)。 S(V,n)表示结点n之前的所有对V中的变量值做出贡献的所有语句片段的总和。很明显的,做出贡献的一定有USE(v,n),但是要注意的是这里的使用路径包括直接和间接的。 举个例子说明。比如说在结点n有个变量a=a+b+c,那么很明显,影响a的值包括a、b、c,所以自然要将在结点n前影响到值a,b,c三个变量的所有结点都算进去,直到出现一个常量语句,例如b=30,那么说明没有什么再影响b了。 程序插桩 在程序的特定部位插入记录动态特性的语句,最终是为了把程序执行过程中发生的一些重要的历史事件记录下来。例如,记录在程序执行过程中某些变量值的变化情况,变化的范围等。这些插入的语句常常被称为“探测器”或者“探测点”。 插桩位置 1)程序的开始,即程序块的第1个可执行语句之前 2)转移指令之前

您可能关注的文档

文档评论(0)

执着仅一次 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档