软件测试基础第5章白盒测试.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 白 盒 测 试        5.1 白 盒 测 试   白盒测试是对软件的过程性细节做细致的检查,把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。   白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。白盒测试分静态和动态两种:静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构分析。动态白盒测试也称结构化测试,通过查看并使用代码的内部结构,设计和执行测试。      5.2 逻?辑?覆?盖?法   【例5-1】 C++?实现简单的数学运算。   【例5-1】流程图如图5.1所示。其中Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ是控制流上若干程序点。 图5.1 【例5-1】程序流程图 5.2.1 语句覆盖   语句覆盖又称为线覆盖面或段覆盖面。其含义是指,选择足够数目的测试数据,使被测程序中每条语句至少执行一次。   如果例5-1测试用例选择a=2,b=2,c=4,程序按照路径Ⅰ-Ⅱ-Ⅲ-Ⅳ-Ⅴ执行,程序段中的5个语句均执行,符合语句覆盖。但是,如果测试用例选择a=2,b=-2,c=4,程序按照路径Ⅰ-Ⅲ-Ⅳ-Ⅴ执行,则未能达到语句覆盖。   语句覆盖测试方法仅仅针对程序逻辑中的显式语句,对隐藏条件无法测试。如例5-1中第一个逻辑运算符“and”误写成“or”,则测试用例a=2,b=2,c=4仍能达到语句覆盖的要求,但是无法发现程序中的误写错误。 5.2.2 判定覆盖   判定覆盖又称为分支覆盖或所有边覆盖,用于测试控制结构中布尔表达式为真或假(例如if语句和while语句)。布尔型表达式被认为是一个整体,取值为true或false,而不考虑内部是否包含“逻辑与”或者“逻辑或”等操作符。   判定覆盖的基本思想是所设计的测试用例使得程序中每个判定分别取“真”分支和“假”分支并至少经历一次,即判断真假值均被满足。   例5-1判定覆盖测试用例如表5.1所示。   判定覆盖比语句覆盖具有更强的测试能力,多出了几乎一倍的测试路径。判定语句往往由多个逻辑条件组合而成(如判定语句中包含and、or、case),若仅仅判断其最终结果而忽略每个条件的取值情况,必然会遗漏部分测试路径。   由于短路操作符,判定覆盖忽略布尔表达式的内部分支。分析下面一段代码。     If(condition1 condition2      Statement1;     Else      Statement2;   当condition1和condition2取值为真时,执行Statement1表达式;当condition1取值为假时,则condition2取值不进行判定,执行Statement2表达式。可以看到,这段代码控制结构的执行,短路操作符“”。表达式中第一个关系为假,则第二个就不进行判定。因此,判定语句由多个逻辑条件组合而成,仅仅判断最终结果,忽略每个条件的取值情况,必然会遗漏部分测试路径。 5.2.3 条件覆盖   条件覆盖设计测试用例时,应使每个判断中每个条件的可能取值至少满足一次。   仍以例5-1为例,针对a0 and b0判定条件表达式,a0取值为“真”,记为T1;a0取值为“假”,记为F1;b0取值“真”,记为T2;b0取值为“假”,记为F2;条件表达式a1 or c1,a1取值为“真”,记为T3;a1取值为“假”,记为F3;c1取值为“真”,记为T4;c1取值为“假”,记为F4。则条件覆盖测试用例如表5.2所示。   条件覆盖比判定覆盖增加了对符合判定情况的测试,增加了测试路径。但是条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。表5.2中的测试用例a=2,b=-1和测试用例a=-1,b=2满足了条件覆盖的测试用例,保证了a0 and b0两个条件的可能值(True和False)至少满足一次,但是,由于测试用例的所有判定结果都是False,并没有满足判定覆盖,因此条件覆盖不一定包含判定覆盖。 5.2.4 条件判定覆盖   既然判定条件不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,就自然会提出一种能同时满足两种覆盖标准的逻辑覆盖,这就是条件判定覆盖。   条件判定覆盖的含义是通过设计足够的测试用例,使得判断条件中的所有条件至少执行一次取值,同时,所有判断的可能结果至少执行一次。因此,条件判定覆盖的测试用例满足如下条件:   (1) 所有条件至少执行一次取值;   (2) 所有判断的可能结果至少执行一次。   例5-1的

文档评论(0)

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

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

1亿VIP精品文档

相关文档