当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Java理论与实践: 均衡测试,第3部份:用方面查验筹划约束[Java编程]

赞助商链接



  本文“Java理论与实践: 均衡测试,第3部份:用方面查验筹划约束[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

面向方面编程(AOP)是项大有前途的新技术,但是采取新技术大概有风险( 当然,不 采取新技术也会有风险).与全部的新技术一样,普通来说,最好是 沿着一条可以管理风险的途径来采取它们.假如用 AOP 来履行战略和测试,就 可以从 AOP 得到降低风险的好处.因为方面不会进入生产,所以不会呈现技术 破坏代码安定性或开辟历程的风险,但却会有助于开辟质量更好的软件.用方面 举行测试也是学习方面的工作方法,并体验这项冲动人心的新技术的好办法.

组合测试办法

正如我在 第 1 部份 中谈论过的,QA 的目的不是找到全部大概有的 bug — — 因为这是不大概的 —— 而是晋升我们对代码按预期工作的确信程度.关于 管理有效的 QA 组织,它的挑衅就是最大化所耗费资源的回报,即确信度.因为 全部的测试办法终究城市表现出回报减退(关于等量的付出增添,得到的确信度 增添越来越少),并且差别的办法合适探求差别范例的错误,所以把 QA 付出分 散在测试、代码检查和静态解析上,要比把整个 QA 预算只花在此中一项办法上 ,回报要更好.

FindBugs 这样的静态解析工具是不切确的,但是不切确的解析关于提高软件 质量仍旧是非常有效和有效的.它们大概发出假告诫,比方在无害的构造上触发 告诫,也大概忽视了 bug,比方没有找出与特定 bug 情势匹配的全部 bug.但 是它们仍旧能发现真正的 bug,并且只要误报率没有高到让用户讨厌的程度,那 么它们仍旧对测试付出供应了有代价的回报.

从测试的角度来说,利用 AOP 来考证计划法则与利用静态解析有很多共同之 处.静态解析和面向方面编程都不用为了特定的办法或类计划测试用例,而是都 鼓舞找出违犯法则的全部份类,并成立可以发现代码体中任何违规的工件.另一 个类似性就是它们没必要非常完善也可以施展作用;固然 bug 探测器或测试方面 都不能找出全部大概的 bug,乃至有些会发出假告诫,它们仍旧是非常有效的工 具,可以考证代码能否按盼望的那样工作.有些 bug 情势用静态工具更简单找 出,而另一些用方面会更简单找出 —— 这使得方面成为参与 QA 历程的一个有 用的办法.

简单的测试方面

FindBugs 这样的静态解析工具审计代码但不履行代码;面向方面的工具既提 供静态类工具,也供应动态类工具.静态方面可以生成编译时告诫或错误;动态 方面可以把错误检测代码插入类.

在 第 1 部份 中,我供应了一个简单的 FindBugs 探测器,查找大概暗藏在 库中的对 System.gc() 的调用.静态解析能探测的很多 bug 情势(包含这个模 式)也能被方面探测到;按照具体的 bug 情势,用静态解析或用方面来做大概 会更简单,所以把它们都放在工具库中,可以提高效果.

清单 1 显示了一个简单的动态方面,在要调用 System.gc() 时,抛出 AssertionError.(因为这类 bug 探测器的一个重要作用是不但要找到您自己 代码中的错误,还要找到代码依靠的库中的错误,所以大概需求奉告工具还要分 析或处理这些库.)

清单 1. 履行 “不调用 System.gc()” 法则的动态方面

public  aspect GcAspect {
   pointcut gcCalls() : call(void java.lang.System.gc ());

   before() : gcCalls() {
     throw new AssertionError("Don't call System.gc!");
   }
}

清单 1 演示的动态方法不如利用静态解析举行测试有效,因为它要求程序在 方面发现问题之前,实际地履行对 System.gc() 的调用,而不是程序只需包含 一个对 System.gc() 的调用,就会被探测到.但是,很快就会看到,动态方面 更机动,因为它们能在方面触发的点上履行肆意测试代码,从而对声明的问题提 供更精密的掌握.

也可以简单地成立一个静态方面,在编译时辨认对 System.gc() 的调用,如 清单 2 所示.一样,假如想发目前库代码中呈现的这个 bug 情势,不但要处理 项目中的代码,还要处理它利用的库.

清单 2. 履行 “不调用 System.gc()” 法则的静态方面

public  aspect StaticGcAspect {
   pointcut gcCalls() : call(void java.lang.System.gc ());

   declare error : gcCalls() : "Don't call System.gc!";
}


  以上是“Java理论与实践: 均衡测试,第3部份:用方面查验筹划约束[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .