首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 核心技术 >> 高级编程 >> 正文

Java中的语句、分支和路径覆盖测试

  要获得100%的基本路径覆盖,您需要定义基组。这种方法的圈复杂度为四(1加决策数量),需要定义四个线性无关路径。为此,可以将任何第一个路径定为基线,并且逐个浏览决策,直至完成基组。

  路径1:任何路径都可以作为基线,因此将决策结果选定为真(由 TTT 表示)。这是基组中的第一个路径。

  路径2:要找到下一个基本路径,浏览(仅限于)基线路径中的第一个决策,显示 FTT 表示您期望的决策结果。

  路径3:浏览基线路径中的第二个决策,显示第三个基本路径为 TFT 。这样,第一个基线决策就可以保持为结果“真”不变。

  路径4:最后,浏览基线路径中的第三个决策,显示第四个基本路径为 TTF 。这样,第一个基线决策就可以保持为结果“真”不变。

  因此,四个基本路径为 TTT、 FTT、 TFT、和 TTF。现在,进行测试并查看结果。

  在所附的代码中,您可以看到 testReturnInputIntBooleanBooleanBooleanTFT() 和 testReturnInputIntBooleanBooleanBooleanFTT() 找到了语句和分支覆盖中未发现的bug。此外,基本路径数量随着决策数据呈线性增长,而非指数增长,使需要进行测试的数量与实现全面分支覆盖所需的数量相等。事实上,基本路径测试覆盖了一个方法中的所有语句和分支,因而有效包含了分支和语句覆盖。

  但是,为何不对其他潜在路径进行测试呢?记住,基本路径测试的目的在于测试所有相对独立的决策结果。通过对四个基本路径的测试可达到这个目的,而这与其他的路径没有关系。如果在开始时选择 FFF 作为基线路径,您将得到(FFF、 TFF、 FTF、 FFT)基组,与 TTT 路径无关。两个基组都同样有效,任何一个都可以满足您的独立决策结果标准。

  创建测试数据

  在本示例中获得100%的基本路径覆盖率非常容易,但是对现实生活中的路径基组进行全面测试将更具挑战性,甚至不可能实现。由于基本路径覆盖测试一个方法中各个决策之间的交互情况,因此您需要使用促使指定路径执行的测试数据,而不能仅仅使用单一的决策结果,这对分支覆盖来说也很有必要。通过注入数据来强行按指定路径执行非常困难,但是您可以记住简化测试过程的几种编码实践。

  1. 使您的代码保持简单。圈复杂度越低越好。在能够减小数值时进行重构。数值越高,就越难测试,这个数值一旦超过10,测试就根本无法实现。这样不仅能减少需要测试的基本路径数量,而且还能减少每个路径中的决策数量。
  2. 避免重复决策
  3. 避免数据依赖性

  考虑以下示例:

Java中的语句、分支和路径覆盖测试图-5

  图5. 基本路径测试

  x 变量间接依赖于 object1 参数,但其中插入的代码却使查看关系变得尤为困难。随着方法变得越来越复杂,查看方法的输入值和决策表达式之间的关系几乎是不可能的。

  结束语

  尽管语句和分支覆盖度量值易于计算和获得,但都可能留下未知的重大缺陷,只能为开发人员和管理员带来虚假的安全感。基本路径覆盖可以提供更为健壮和全面的方法,从而发现这些未被觉察的缺陷,而且可以避免所需测试的数量呈指数增长。

上一页  [1] [2] [3] 

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航