




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元测试工具Jprobe简明使用手册软件产品部 马金钱一、 概述Jprobe Suite是Sitraka公司研制的一组针对Java的单元测试工具,帮助解决Java代码的缺陷以实现Java的最大效能,共包括Memory Debugger、Profiler、Threadalyzer、Coverage等四个独立工具,其中Threadalyzer 和Coverage被称作程序校正(Correctness)工具,Threadalyzer通过找出程序中的死锁和空值以检验线程的正确性,Coverage用来报告程序的测试覆盖率和未测试覆盖,Memory Debugger和Profiler被称作程序性能工具,Memory Debugger帮助发现因不足参数管理和对象的过度分配而引起的内存泄漏,Profiler通过统计程序各部分的运行时间帮助找出程序的性能瓶颈。Jprobe的每个工具都可支持两种类型的应用:独立应用(Standalone Application)和基于应用服务器的应用(Using Application Server)。因四个工具的参数配置等步骤相同,以下首先就以Coverage为重点详解介绍Jprobe的安装、参数配置、建立新应用等过程,然后再分别以图示介绍各工具的不同运行结果。二、 主要功能1、 分析本地运行的J2EE应用和J2SE应用;2、 分析远程机器上运行的J2EE应用和J2SE应用;3、 通过使用过滤器聚焦你的代码;4、 监控被收集的数据(Jprobe Coverage除外);5、 保存数据到快照文件;6、 以高级图形用户界面回顾快照文件;7、 在源代码中标识问题的方法或行;8、 把快照文件同基线进行比较(只针对Jprobe Profiler和Jprobe Memory Debugger);9、 通过触发能自动进行分析(Jprobe Threadalyzer除外);10、 通过创建和运行自动化脚本能规则地校验代码;三、 安装可以进行Jprobe Suite的安装,也可以单独安装某一单一工具,安装过程同一般软件的安装过程类似,只是在安装最后的注册过程较为繁琐,它实行严格的许可证管理,注册前,须向Sitraka公司发送你本机的一些认证信息,Sitraka公司再通过email寄给你许可证文件进行注册。登陆网站,可下载注册一个10天的试用版。具体的安装和注册场景不在此详述,安装完成后,在开始菜单中如图1所示:图1四、 应用前提Jprobe只是用于做单元测试,而不能进行程序的编译和调试,因此,使用Jprobe做单个程序应用或基于服务器应用测试之前,一定要保证程序已进行编译并能成功运行。五、 独立应用(Standalone Application)使用以下以一个小Java程序myquery.Java为例,演示如何用Jprobe Coverage测试独立应用程序中方法和代码的覆盖率,该程序功能是向数据库表中查询,源代码如下:import java.sql.*;import javax.sql.DataSource;import javax.naming.*;import java.lang.*;import java.util.*;public class myquerypublic static void querydata() throws Exception Connection conn = null; Statement stmt = null; ResultSet rs = null; String uri = jdbc:hsqldb:hsql:/localhost; int i=0; try try Class.forName(org.hsqldb.jdbcDriver).newInstance();catch(java.lang.ClassNotFoundException e)System.err.print(ClassNotFoundException: ); try conn = DriverManager.getConnection(uri,sa,); catch (SQLException e) System.out.println(e.getMessage().toString(); stmt = conn.createStatement(); String sql=select * from wf_task where state=1; try rs = stmt.executeQuery(sql); catch (SQLException e) System.out.println(e.getMessage().toString(); while (rs.next() i+; System.out.println(rs.getString(1)+ +rs.getString(task_id); System.out.println(total +i+ record!); System.out.println(Query Sucessful!); catch(Exception e) System.out.println(e.getMessage().toString(); finally rs.close(); stmt.close(); conn.close(); public static void main(String arg) throws Exception myquery hello = new myquery(); hello.querydata(); 1、 启动Coverage点击图1中的Jprobe Coverage,运行后出现图2图22、 设置运行参数(Preferences)点击Edit中的Preferences,进入图3图3根据个人喜好及需要可点击每个页签进行设置。3、 建立新应用设置(Settings)点击Session中的New Settings图4在Program Settings组中有两个选择Standalone Application和Using Application Server,分别用于不使用应用服务器的独立应用和使用应用服务器的应用,此处选择Standalone Application,并选择编译后的Class文件,此时若程序中所需的jar包没有被包含在系统的classpath中,还必须在这儿点击“More”按钮,添加所需的jar包到classpath前,之后点击Run可直接运行或点击OK保存。4、 运行应用设置可在建立新应用设置后点击RUN直接运行,也可在工具栏中点击“运行”快捷按钮运行图5运行后会产生一个快照文件(snapshot),所有结果信息都保存在这个快照文件中,按“保存”快捷按钮可进行保存,同时还出现两个新的结果窗口,分别为Jprobe Execution Console和Coverage Browser窗口,通过Console窗口可看到程序执行结果,通过Browser窗口可得知程序执行后的方法和代码的覆盖率,分别如图6和图7示:图6图7通过图7,我们可清晰的看到整体和各个方法的覆盖率情况,其中包含有每个方法的代码总行数,执行的代码总行数及所占百分比等信息,当然我们也可以通过参数设置,显示出未执行代码的相关信息。假如此时我们想查看程序中到底是哪些代码被执行了,哪些代码未被执行,只需双击方法名即可,如图8示:图8其中被执行的代码标注为蓝色,并在语句前置上被执行的次数,未被执行的代码标注为红色,这样开发人员便能一目了然。5、 查看方法列表(Method List)在图7窗口中,点击右键,出现图9的窗口图9点击Open In Method List图10图中简明地列出了各个方法的覆盖率情况,当然,也可以通过更改Display中的选项设置,产生不同的显示效果。6、 产生结果报告图11点击图11中的Generate Report,出现生成报告窗口图12生成的报告可以是HTML、TEXT或XML格式,报告的内容可以很简单,也可以很详细,输入要产生的报告文件名并进行选项设置后(此处选择HTML方式),按“Generate File”按钮后,即生成了一个HTML文件,如图13示:图137、 对多个快照文件合并(Merge)在单元测试中,我们可能设计了好几个测试例,而每个测试例执行的代码路径不同,结果及覆盖率也会不同,Coverage中的合并功能可方便地将多个快照文件进行合并,自动剔除重复部分,产生一个含有总覆盖率的窗口。步骤如下:首先在下图窗口中点击Merge或直接按工具栏中的快捷按钮“Merge”图14图15出现合并快照文件(Merge Snapshots)窗口图16输入合并后的快照文件名,并选择要合并的快照文件后,点击OK图17上图中显示了合并后的覆盖率情况,因本例中的两个快照文件相同,所以合并后的覆盖率未有变化。六、 基于应用服务器应用(Using Application Server)使用Jprobe支持多种应用服务器的应用,其中包括常见的Apache Tomcat,BEA WebLogic,IBM WebSphere等,并具体细化到每个版本。在这里我们以BEA WebLogic7.0为例,来具体演示如何做EJB的代码覆盖率测试。另外为方便、实用起见,我们假定服务器和客户机是同一台机器。仍借鉴上面的小程序,只是这次把他改造成EJB应用,生成一个Test1.jar部署到Wlebogic上,其中Test1.jar中包含有三个java程序,分别为Query1.java,Query1Home.java,Query1Bean.jar。另外我又单独做了一个客户端程序(可理解为测试驱动程序)Query1TestClient1.Java,用以调用EJB。通过借用Jprobe Coverage,我们可以方便地测试出Query1Bean.Java中的代码和方法的执行覆盖率。1、 启动Coverage同“四、独立应用(Standalone Application)使用”中的启动,此处略;2、 设置运行参数(Preferences)同“四、独立应用(Standalone Application)使用”中的设置运行参数,此处略;3、 应用服务器集成(Application Server Integration)点击Tools Application Server Integration图18先在“Select an Application Server”中选择应用服务器类型,此处选择BEA WebLogic 7.0,按Create按钮,在右边各栏位中依次输入ID号,应用服务器server所在目录,启动脚本,java.exe的位置,注意在Java Options中默认是“-server -Xmx200m -Xmx200m”,应去除-server,以免无法启动myserver,输入完毕后,按Save保存,再按Close关闭。4、 建立新应用设置(Settings)点击SessionNew Settings图19Program Settings组中选择Using Application Server,此处Application Server中选择BEA WebLogic 7.0,Integration ID选择刚建立的BEA1。在Data Collection Filters中一定要选择被测试的EJB包文件。在Runtimes Settings组中,“View Runtime Data:”后先选择Remotely,后输入格式为:port的字符串,注意workstation为客户机的主机名,后面的端口号是客户机和服务器之间的约定端口,一定不要与应用服务器JNDI中用到的端口号(如7001)相同,否则启动应用服务器时会发生冲突。在快照文件目录(Snapshot Directory:)后应选择一个存放快照文件的路径,之后,按OK保存。5、 更改Jprobe的classpath我们知道,在启动应用服务器,部属EJB时都要借助classpath,虽然我们在系统环境变量中设置了classpath,但由于Jprobe并未使用系统的classpath,而是使用自己的classpath,难免会有不一致的地方,比如本例中的jdbcDriver包(hsqldb.jar)在Jprobe的classpath中就需要添加,添加方法是:首先找到Jprobe的工作目录(本例为E:Program FilesJProbe Suite 5.0.1bin),其下有一个名为jpcoverage.lax的文件,可用UltraEdit打开后,在lax.class.path后添加所需的包文件,本例如下示:图20保存完此文件后,记住一定要关闭Jprobe重新启动,否则所作的更新无效。6、 在Jprobe中启动远程应用服务器若当前的Settings即为要执行的,直接按如图5中所示的快捷运行键即可,否则要先点击Session中的Load Settings调入要执行的Settings后,再运行。运行后,启动应用服务器,服务器一直处于等待客户端连接状态,如下图示:图217、 启动客户端,进行连接(Attach to Remote Session)点击Program Attach to Remote Session图22首先输入连接端口号,此处输入的端口号必须与图19中:port中输入的端口号相同,否则无法连接。在Snapshot Directory:后输入快照文件的路径,此路径是客户机相对于服务器的相对路径,由于我们实际运用时是同一台机器,所以这里的路径也要与图19中的Snapshot Directory一致。输入完成后,点击OK,连接成功,若JDBC连接无误,应用服务器启动成功,如下图示:图238、 在客户端运行测试驱动程序此时在客户端就可以执行测试驱动程序了,测试驱动程序可以是Client/Server程序,在命令行或Jbuilder中执行,也可以是Jsp,在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南民族大学《现代仪器分析及实验》2023-2024学年第二学期期末试卷
- 吉林交通职业技术学院《媒介批评学B》2023-2024学年第二学期期末试卷
- 保定职业技术学院《数字信号处理实训》2023-2024学年第二学期期末试卷
- 唐山科技职业技术学院《晶体生长原理与技术》2023-2024学年第二学期期末试卷
- 甘肃中医药大学《高分子材料成型模具》2023-2024学年第二学期期末试卷
- 大理大学《C语言》2023-2024学年第二学期期末试卷
- 重庆城市管理职业学院《卫生法学》2023-2024学年第二学期期末试卷
- 阳江职业技术学院《动物生产学牛羊》2023-2024学年第二学期期末试卷
- 西藏大学《建筑安全与技术》2023-2024学年第二学期期末试卷
- 肇庆学院《机器学习算法》2023-2024学年第二学期期末试卷
- 伊犁将军府课件
- 中医护理不良事件
- 初中常见原子团及其化合价、化学式、化学方程式
- 《城市公园配套设施设计导则》
- 供应链安全培训教材课件
- 2024年医院考勤的管理制度
- 卡西欧手表5213(PRG-550)中文说明书
- 2024年度北京市安全员之B证(项目负责人)测试卷(含答案)
- 苹果电脑macOS效率手册
- 2024年新人教版七年级上册数学教学课件 第四章 整式的加减 章末复习
- 卸车工合同协议书
评论
0/150
提交评论