来看Java实际与理论: 均衡测试,第3部分:用方面查验计划束缚
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过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("Dont 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() : "Dont call System.gc!";
}
<p>
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Java是一种计算机编程语言,拥有跨平台、面向对java 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种将安全性(Security)列为第一优先考虑的语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
页:
[1]