- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试第九章
第9章 白盒测试及其实例设计 9.1 逻辑覆盖测试 9.2 路径分析测试 9.3 其他白盒测试方法 9.4 白盒测试综合用例 第9章 白盒测试及其实例设计 本章概要 逻辑覆盖测试 路径分析测试 其他白盒测试方法 白盒测试综合用例 9.1 逻辑覆盖测试 白盒测试技术的常见方法之一就是覆盖测试,它是利用程序的逻辑结构设计相应的测试用例。测试人员要深入了解被测程序的逻辑结构特点,完全掌握源代码的流程,才能设计出恰当的用例。根据不同的测试要求,覆盖测试可以分为语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖。9.2 路径分析测试 着眼于路径分析的测试称为路径分析测试。完成路径测试的理想情况是做到路径覆盖。路径覆盖也是白盒测试最为典型的问题。独立路径选择和Z路径覆盖是两种常见的路径覆盖方法。 9.2.1 控制流图 白盒测试是针对软件产品内部逻辑结构进行测试的,测试人员必须对测试中的软件有深入的理解,包括其内部结构、各单元部分及之间的内在联系,还有程序运行原理等等。为了更加突出程序的内部结构,便于测试人员理解源代码,可以对程序流程图进行简化,生成控制流图。 控制流图有以下几个特点: (1)具有唯一入口节点,即源节点,表示程序段的开始语句; (2)具有唯一出口节点,即汇节点,表示程序段的结束语句; (3)节点由带有标号的圆圈表示,表示一个或多个无分支的源程序语句; (4)控制边由带箭头的直线或弧表示,代表控制流的方向。 2. 程序环路复杂性 程序的环路复杂性是一种描述程序逻辑复杂度的标准,该标准运用基本路径方法,给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。 给定一个控制流图G,设其环形复杂度为V(G),在这里介绍三种常见的计算方法来求解V(G)。 (1) V(G)=E-N+2,其中E是控制流图G中边的数量,N是控制流图中节点的数目。 (2) V(G)=P+1,其中P是控制流图G中判断节点的数目。 (3) V(G)=A,其中A是控制流图G中区域的数目。由边和结点围成的区域叫做区域,当在控制流图中计算区域的数目时,控制流图外的区域也应记为一个区域。 9.2.2 独立路径测试 从前面学过的覆盖测试一节中可知,对于一个较为复杂的程序要做到完全的路径覆盖测试是不可能实现的。既然路径覆盖测试无法达到,那么可以对某个程序的所有独立路径进行测试,也就是说检验了程序的每一条语句,从而达到语句覆盖,这种测试方法就是独立路径测试方法。从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。路径可以用控制流图中的节点序列来表示。 1.导出程序控制流图 2.求出程序环形复杂度 3.设计测试用例 9.2.3 Z路径覆盖测试 和独立路径选择一样,Z路径覆盖也是一种常见的路径覆盖方法。可以说Z路径覆盖是路径覆盖面的一种变体。对于语句较少的简单程序,路径覆盖是具有可行性的。但是对于源代码很多的复杂程序,或者对于含有较多条件语句和较多循环体的程序来说,需要测试的路径数目会成倍增长,达到一个巨大数字,以至于无法实现路径覆盖。 9.3 其他白盒测试方法 白盒测试除了覆盖测试和路径分析测试两大类方法之外,还有很多其他常见的测试方法,如循环测试、变异测试、程序插装等等。这些方法相辅相成,增强测试效果,提高测试效率。 9.3.1 循环测试 循环测试是一种着重循环结构有效性测试的白盒测试方法。 1.简单循环 设计简单循环测试用例时,有以下几种测试集情况,其中n是可以通过循环体的最大次数: (1)零次循环:跳过循环体,从循环入口到出口; (2)通过一次循环体:检查循环初始值; (3)通过两次循环体;检查两次循环 (4)m次通过循环体(mn):检查在多次循环; (5)n,n-1,n+1次通过循环体:检查最大次数循环以及比最大次数多一次、少一次的循环。 2.嵌套循环 如果采用简单循环中的测试集来测试嵌套循环,可能的测试数目就会随着嵌套层数的增加成几何级的增长。这样的测试是无法实现的。所以,要减少测试数目。 (1)对最内层循环按照简单循环的测试方法进行测试,把其他外层循环设置为最小值; (2)逐步外推,对其外面一层的循环进行测试。测试时保持本次循环的所有外层循环仍取最小值,而由本层循环嵌套的循环取某些“典型”值; 反复进行(2)中操作,向外层循环推进,直到所有各层循环测试完毕。 3.串接循环 如果串接循环的循环体之间是彼此独立的,那么采用简单循环的测试方法进行测试。如 果串接循环的循环体之间有关联,例如前一个循环体的结果是后一个循环体的初始值,那么需要应
文档评论(0)