一、产品介绍
JAVA PROGRAM
CLIENT SERVER JProbe Profiler JProbe Memory Debugger JProbe Threadalyzer |
TEST SUITE JProbe Coverage |
JProbe Suite 共包含四种产品,其每种工具的功能特性如下:
l JProbe Threadalyzer
² 在开发过程中,编码人员可以使用此工具检验已实现的编码的线程正确性;
² 在开发结束阶段,具有丰富的产品开发经验的开发人员可利用此工具确定并解决多线程编码中所隐藏的线程冲突问题。
l JProbe Coverage
² 在开发过程中,编码人员可以使用此工具准确了解当前测试覆盖的编码范围及使用情况,从而减少代码冗余,提高编码覆盖率;
² 此外通过此工具,开发人员还可检验系统结构框架的完整性。
l JProbe Memory Debugger
² 在开发过程中,开发人员可通过利用此工具检验被测编码是否存在内存缺陷;
l JProbe Profiler
² 在开发结束阶段,性能分析人员可利用此工具确定引起编码性能瓶颈的根源;
综上所述,JProbe Suite所包含的四种产品从功能角度可分为两种,其中:JProbe Threadalyzer和JProbe Coverage可作为编码正确性检验工具在编码开发及测试阶段进行编码校验;而JProbe Memory Debugger和JProbe Profiler可作为编码性能调优工具在编码开发及测试阶段进行编码性能检验。
二、产品支持平台
Microsoft Windows |
|
系统需求 |
Microsoft Windows 2000, Windows NT 4.0, or Windows XP Professional |
Pentium II-class processor |
|
128 MB RAM |
|
70 MB free disk space |
|
支持JVM |
IBM Developer Kit for Windows, Java 2 Technology Edition, Version 1.3 |
IBM Developer Kit for Windows, Java 2 Technology Edition, Version 1.3.1 1 |
|
Sun Java 2 SDK, v 1.2.2 Windows Production Release |
|
Sun Java 2 SDK, v 1.3.0 Windows Production Release in Classic 2 mode |
|
Sun Java 2 SDK, Standard Edition, v 1.3.1 3 for Windows |
|
Sun Java 2 SDK, Standard Edition, v 1.4 FCS for Windows |
|
支持应用服务器 |
Allaire JRun 3.1 |
Apache JServ 1.1.2 with Apache’s HTTP Server 1.3.x and Sun JSDK 2.0 |
|
Apache Tomcat 3.2 or 4.0 |
|
BEA WebLogic Server 5.1.0, 6.0, 6.1, or 7.0 |
|
HP Application Server 8.0 |
|
IBM WebSphere 3.5 or 4.0 |
|
iPlanet Application Server (iAS) 6.0 |
|
Oracle Oracle9iAS Containers for J2EE 1.0.2.2 or 2.0 (beta) |
|
Sun Solaris |
|
系统需求 |
Solaris 2.6, 7, or 8, or SunOS 5.6, 5.7, or 5.8 |
UltraSparc processor |
|
128 MB RAM |
|
80 MB free disk space |
|
支持JVM |
Sun Java 2 SDK, v 1.2.2 Solaris Reference Implementation 1 plus required Solaris patches 2 |
Sun 3 Java 2 SDK, Standard Edition, v 1.3.1 4 for Solaris plus required Solaris patches 5 |
|
Sun Java 2 SDK, Standard Edition, v 1.4 FCS for Solaris plus required Solaris patches 6 |
|
支持应用服务器 |
Allaire JRun 3.1 |
Apache JServ 1.1.2 with Apache’s HTTP Server 1.3.x and Sun JSDK 2.0 |
|
Apache Tomcat 3.2 or 4.0 |
|
BEA WebLogic Server 5.1.0, 6.0, 6.1, or 7.0 |
|
HP Application Server 8.0 |
|
IBM WebSphere 3.5 or 4.0 |
|
iPlanet Application Server (iAS) 6.0 |
|
Oracle Oracle9iAS Containers for J2EE 1.0.2.2 or 2.0 (beta) |
|
IBM AIX |
|
系统需求 |
AIX 4.3 or 5.1 5L |
PowerPC processor |
|
128 MB RAM |
|
100 MB free disk space |
|
支持JVM |
IBM Developer Kit for AIX, Java 2 Technology Edition, Version 1.2.2 plus required AIX patches 1 |
IBM Developer Kit for AIX, Java 2 Technology Edition, Version 1.3.0 plus required AIX patches 1 |
|
IBM Developer Kit for AIX, Java 2 Technology Edition, Version 1.3.1 2 plus required AIX patches 1 |
|
支持应用服务器 |
BEA WebLogic Server 5.1.0, 6.0, 6.1, or 7.0 |
IBM WebSphere 3.5.4 with PF 12 applied |
|
HP-UX |
|
系统需求 |
HP-UX 11.0 or 11i |
128 MB RAM |
|
100 MB free disk space |
|
支持JVM |
HP Java 2 SDK 1.2.2.08 1 or later in Classic 2 mode plus required patches 3 |
HP Java 2 SDK 1.3.0.01 1 or later in Classic 2 mode plus required patches 3 |
|
HP Java 2 SDK 1.3.1 in Classic 2 mode plus required patches 3 |
|
HP Java 2 SDK 1.3.1.01 plus required patches 3 |
|
支持应用服务器 |
BEA WebLogic Server 5.1.0, 6.0, 6.1, and 7.0 |
HP Application Server 8.0 |
|
Oracle Oracle9iAS Containers for J2EE 1.0.2.2 or 2.0 (beta) |
|
Red Hat Linux |
|
系统需求 |
Red Hat Linux 1 6.2 or 7.2 2 |
Intel ia32 (x86) architecture machine |
|
64 MB RAM |
|
55 MB free disk space |
|
支持JVM |
Blackdown JDK 1.2.2 FCS for Linux |
Blackdown Java 2 SDK, Standard Edition, v.1.3.0 |
|
Blackdown Java 2 SDK, Standard Edition, v.1.3.1 FCS 3 |
|
IBM Developer Kit for Linux, Java 2 Technology Edition, Version 1.3 4 |
|
IBM Developer Kit for Linux, Java 2 Technology Edition, Version 1.3.1 5 |
|
Sun 6 Java 2 SDK, Standard Edition, v 1.3.1 7 for Linux |
|
Sun Java 2 SDK, Standard Edition, v 1.4 FCS for Linux |
|
支持应用服务器 |
Allaire JRun 3.1 |
Apache JServ 1.1.2 with Apache’s HTTP Server 1.3.x and Sun JSDK 2.0 |
|
Apache Tomcat 3.2 or 4.0 |
|
BEA WebLogic Server 5.1.0, 6.0, 6.1, or 7.0 |
|
HP Application Server 8.0 |
|
IBM WebSphere 3.5 or 4.0 |
|
Oracle Oracle9iAS Containers for J2EE 1.0.2.2 and 2.0 (beta) |
三、产品具体使用说明
1、 JProbe Coverage
1.1、单机运行(不启动服务器)
步骤:
l 创建session
当开发人员在利用JProbe Coverage工具进行编码覆盖率校验之前必须先创建一个session,即在主菜单栏中选择“session”,并在下拉菜单栏中选择“new session”,此时屏幕显示如下对话框:
对话框详解如下:
² Program Settings(即被测程序设置)
ü 若被测系统为单机版,则选择“Standalone Application”,反之则选择“Using Application Server”;
ü 在“Main Class:”处,开发人员将被测编码的主类名称填写在此处,或通过“…”控键在测试机中选择被测编码主类;
ü 此外开发人员还可通过点击“More”控键,在弹出的对话框中进行被测编码的详细设置;
² Data Collection Settings(即测试数据收集设置)
此设置指定要“覆盖”和要“排除”的包、类或方法,具体步骤如下:
ü 选择一行,点击旁边出现的“…”按钮,在弹出的对话框中选择一个jar包,右边出现一个类树,选择一个包或类或方法,点“确定”;
ü 当主窗口中出现了刚才选择的包、类或方法时,开发人员可在旁边选择“exclude(排除)”或“include(覆盖)”;
ü 通过以上方法可以指定多个要“覆盖”或要“排除”的包、类或方法;
² 其他设置
ü Take Snapshot at Exit: 退出时取一个快照;
ü Ignore abstract method: 忽略抽象方法;
ü Start Recording at Program Start: 从程序开始时记录;
ü Report Only Method-level Coverage: 只覆盖方法;
² Runtimes Settings(运行设置)
ü “View Runtime Data”选项
Not View: 在内存小的时候可选择此方法;
Local: 在本地console上显示;
Remootely: 在远程console上显示,运行时,服务器会一直等待指定的远程 console连接,直到连接成功后才继续运行。
ü “Snapshot Directory”用于指定快照保存目录位置.
l 运行
当开发人员完成“Session”创建过程后,可通过以下两种方式执行:
² 在“Session”窗口选择“Run”,或在主界面工作栏中选择“|>”;
² 启动command(cmd),在Dos窗口下输入:
jplauncher -Djava.compiler=NONE -jp_input=e:\jprobe\try2.jpl
注: 使用第二种方式可以不用启动jpcoverage的主界面,这样可以节省内存,程序运行完后,快照会保存在jpl文件中指定的目录下。
l 分析快照
在JProbe Coverage主窗口中选择一个快照文件(*.jpc),对其进行分析,其主要步骤如下:
² 右键单击一个快照文件,在弹出的菜单中选择“”,打开一个独立的窗口,如下图:
² 在新的窗口中会显示出所有在前边的配置中选择“覆盖”的包、类或方法的情况。这是一个表(table)结构,分纵向和横向详细说明如下:
ü 横向: 缺省初始显示“包”的覆盖情况,这些包都是树状结构,可以打开以显示其下的类;类也都是树状结构,可以打开以显示其下的方法;
ü 纵向: 从左到右依次显示“覆盖的对象”、“被调用的次数”、“未覆盖的方法数”、“全部方法数”、“未覆盖到的代码行数”、“总代码行数”。
² 选择一个包,点开它,显示该包中的所有类;选择一个类,点开树,显示该类中所有非抽象方法;双击一个方法,会弹出一个对话框,让使用者指定java源文件的位置,当开发人员进行指定后,系统会关闭该对话框,弹出另外一个独立的窗口(如下图)显示java源文件的内容,当光标停在刚才选择的方法的开始处,系统自动用红色标明没有覆盖到的行;在新打开的窗口的右上端有一个下拉列表,可以在这里选择要看的方法。
² 查看未覆盖的行的情况:
ü 其他分支:在本快照中无法确定这些分支的覆盖情况,需要组织新的测试。如上图中的第30行;
ü 本分支内容错行: 这不是真正的未覆盖到,可以忽略不计。如上图中的第37、38行;
ü 本分支内容冗余行: 这才是真正的未覆盖行;
l 合并快照
一个业务可能有多个测试用例,每个测试用例覆盖一些分支,所有测试用例的集合要保证覆盖到所有的分支。每一个测试用例我们取一个快照,这些快照单个来看实际意义不大,只有合并在一起来分析意义才最大。而具体和并步骤如下:
² 在主窗口1的下拉菜单“SnapShot”中选择“Merge”,会弹出如下一个对话框:
² 对话框的左边显示所有可用的快照文件(*.jpc),开发者可选择要进行合并的快照到右边;
² 在对话框上端的“Output File”输入框中指定合并后的快照的名字;
² 点击”OK”, 合并完成;
² 对合并后的快照进行分析.
1.2、联机运行(启动服务器)
步骤:
l 创建Session
当开发人员在利用JProbe Coverage工具进行编码覆盖率校验之前必须先创建一个session,即在主菜单栏中选择“session”,并在下拉菜单栏中选择“new session”,此时屏幕显示如下对话框:
对话框详解如下:
² Program Settings(即被测程序设置)
ü 选择“Using Application Server”,选择“weblogic 6.1”;
ü 点击“more”,在弹出的对话框中配置weblogic6.1;
² Data Collection Settings(即测试数据收集设置)
同单机运行.
² Runtimes Settings(运行设置)
同单机运行.
下图为已配置好的Session:
l 运行
² 启动wlserver6.1
有两种运行方法,任选其一:
ü 在Session窗口点“Run”,或在主界面工作条上点“|>”;
ü 启动command(cmd),在Dos窗口下输入:
jprun wls61
>input jpl file : e:\test\test1.jpl
² 局域网内其他PC,均可以启动iexplorer.exe,从前台开始运行:
ü 在Http Url中输入:http://tinawang:7001/ctais;
ü 打开待测业务的前台,完成一个测试用例;
ü 在JProbe Coverage的主窗口上点击“Take SnapShot”,抓取快照,保存快照;
ü 在适当的时候选择“清空数据”;
l 分析快照
同单机运行.
l 结束
在主窗口的工作条上选择“○”,关闭weblogic服务器。
2、 JProbe Memory Debugger
2.1、单机运行(不启动服务器)
步骤:
l 创建session
当开发人员在利用JProbe Memory Debugger工具进行编码内存缺陷校验之前必须先创建一个session,即在主菜单栏中选择“session”,并在下拉菜单栏中选择“new session”,此时屏幕显示如下对话框:
对话框详解如下:
² Program Settings(即被测程序设置)
ü 若被测系统为单机版,则选择“Standalone Application”,反之则选择“Using Application Server”;
ü 在“Main Class:”处,开发人员将被测编码的主类名称填写在此处,或通过“…”控键在测试机中选择被测编码主类;
ü 此外开发人员还可通过点击“More”控键,在弹出的对话框中进行被测编码的详细设置;
² Data Collection Settings(即测试数据收集设置)
此设置指定要“检测”的包、类或方法,具体步骤如下:
ü 选择一行,点击旁边出现的“…”按钮,在弹出的对话框中选择一个jar包,右边出现一个类树,选择一个包或类或方法,点“确定”;
ü 当主窗口中出现了刚才选择的包、类或方法时,开发人员可在旁边选择“exclude(排除)”或“include(检测)”;
ü 通过以上方法可以指定多个要“检测”或要“排除”的包、类或方法;
² Runtimes Settings(运行设置)
ü “View Runtime Data”选项
Not View: 在内存小的时候可选择此方法;
Local: 在本地console上显示;
Remootely: 在远程console上显示,运行时,服务器会一直等待指定的远程 console连接,直到连接成功后才继续运行。
ü “Snapshot Directory”用于指定快照保存目录位置.
l 运行
当开发人员完成“Session”创建过程后,可通过以下方式执行:
² 在“Session”窗口选择“Run”,或在主界面工作栏中选择“|>”;
² 启动command(cmd),在Dos窗口下输入:
jplauncher -Djava.compiler=NONE -jp_input=e:\jprobe\try2.jpl
注: 使用第二种方式可以不用启动JProbe Memory Debugger的主界面,这样可以节省内存,程序运行完后,快照会保存在jpl文件中指定的目录下。
l 检测
² 点击“Start Tracing Constructor Invocations.”图标;
² 点击“Request Garbage Collection.”图标;
² 点击“Set Checkpoint.”图标;
² 执行被测编码;
² 当编码执行结束后,点击“Request Garbage Collection.”图标;
² 点击“Take Heap Snapshot.”图标;
² 关闭被测编码执行界面。
l 了解测试编码内存使用情况
当Session执行结束后,开发人员可根据如下屏幕了解编码内存使用情况:
此屏幕主要分成一下两部分,开发人员可根据不同需求在这两部分中进行缺陷定义:
² Heap Usage Chart部分
开发人员可利用以上图示从宏观的角度了解被测编码的内存使用情况,如图所示途中黄线左边为编码进行具体操作之前的内存情况,而黄线右边则显示了编码进行具体操作后的内存使用情况。通过此图开发人员可了解在编码运行的不同阶段系统内存的使用情况。
² Instance Summary部分
通过此部分,开发人员可详细的了解被测编码的内存使用情况,其中具体列名称表示如下:
Package:表示被测编码中所包含的包具体名称;
Class:表示表中罗列的包中具体类名称;
Count:表示表中所罗列的类中包含的实例个数;
Memory:表示表中罗列的实例所占系统的内存情况;
Count Change:表示在断点设置后表中罗列的类中实例个数的变化;
Memory Change:表示在断点设置后表中罗列实例个数的变化所对应的占用的系统内存情况。
l 分析快照
在JProbe Memory Debugger主窗口中选择一个快照文件(*.jph),对其进行分析,其主要步骤如下:
² 右键单击一个快照文件,在弹出的菜单中选择“Open in Heap Brower”,如下图:
此窗口中会显示出所有在前边的配置中选择“检测”的包、类或方法的情况。
² 选择一个包,点击右键,在显示的菜单中选择“Instance Detail View”菜单,系统会弹出一个对话框:
点击“Calculate”系统会将Instance所占系统内存情况显示在状态栏中。
² 选择一个具体的Instance,点击右键,在显示的菜单中选择“Allocate At Source”菜单,系统会弹出一个对话框:
此对话框显示java源文件的内容。
l 比较快照
开发人员可利用JProbe Memory Debugger工具将编码优化前和后的内存使用情况以快照文件的形式保存起来,并进行比较,其具体步骤如下:
² 在JProbe Memory Debugger主界面中选择要进行比较的快照文件,点击右键,在下拉菜单中选择“Compare”,系统会弹出如下一个对话框:
在“Baseline Snapshot”出选择要进行比较的基线后,点击“OK”;
² 系统会将两个快照文件进行比较,并将差异结果显示在如下对话框中:
2.2、联机运行(启动服务器)
JProbe Memory Debugger联机运行的具体配置参照JProbe Coverage,其具体操作与单机相同。