本主题解释如何使用 SOAtest 在 Java 应用程序上执行运行时错误检测。
本章包含:
需要安装 Parasoft Jtest通过与 Parasoft Jtest 集成,SOAtest 提供了 Java 运行时错误检测和 Java 事件监视功能,从而为 Java 提供了广泛的测试和分析实践。 在使用 SOAtest 的运行时错误检测和/或 Java 事件监视功能之前,请确保 1) 在你的机器上安装了 Jtest 2)启用了 SOAtest 的“Jtest 连接”许可证选项。 若要获得 Jtest,请进入 http://www.parasoft.com/jtest,然后单击页面顶部的下载链接。 注意,此跨产品的功能需要 通过 p2 更新站点归档安装 Jtest 和 SOAtest(查阅 Eclipse p2 更新站点安装 以获得更多详情)。 |
SOAtest 可以在执行功能测试或渗透测试时执行运行时错误检测。
运行时错误检测暴露了在应用程序运行时发生的关键缺陷。缺陷报告具有空前的准确性。对于有效地识别仅在运行时才出现的缺陷(例如:文件覆盖)以及查明导致应用程序崩溃、性能下降和不可预测行为的根本原因,这一点非常关键。
SOAtest 将每个报告的错误与检测到错误时正在运行的功能测试关联起来。违规行为和功能测试之间的这种关联允许你跟踪每个报告的错误到针对应用程序的特定用例。
检测到的错误类别包括:
在监视应用程序之前,必须将适当的 jar 文件复制到运行应用程序服务器的机器上,然后配置应用程序服务器以使用 jar。具体做法如下:
insure.jar
和 insureimpl.jar
从 [Jtest_install_dir]/plugins/com.parasoft.xtest.jtest_[version]/resources/
复制到服务器上的一个目录,其中包含你希望检查的应用程序。 -javaagent
命令添加到现有 Java 参数。trace_to_xml
参数。有关更多详情,请查阅以下框。服务器将像往常一样启动,但是使用指定的包类进行检测。
在测试执行期间获得对应用程序内部行为的可见性。在为运行时错误检测配置应用程序时,还需要为应用程序监视做好准备,以便在执行功能测试时查看应用程序的内部行为。这允许你更好地确定测试失败的原因,并在回归测试中丰富用例验证标准。例如,你可以验证 EJB 方法调用或对另一个系统的远程调用是否使用了预期的参数。 若要执行该监视:
有关更多详情,请查阅 监视 Java 应用程序 。 |
需要以下 invocation-time 参数:
参数 | 说明 |
---|---|
soatest | 需要配置运行时错误检测。 |
port=[port_number] | 指定应使用哪个端口与被监视程序通信。使用 5050 到 5099。 |
instrument= [class_name.method_name(jni_sig)] | 指定要检查的完全限定方法的前缀。例如,给定的 com.abc.util.IOUtil.method ,它将执行 IOUtil.java 类中的所有方法,该类需以 method 开头。如果给定的 com.abc .,那么它还将执行那些方法和类的所有方法,其完全限定名以 com.abc. 开头。可以提供特定类名。Required。 |
定义自己的类加载器(如 Eclipse、JBoss 和 Tomcat)的应用程序需要将 insure.jar
添加到引导类路径中。若要监视这些应用程序,请添加启动 VM 参数:-javaagent:"<path_to_jar>\insure.jar=soatest,port=<port>",instrument=<my.package.prefix> -Xbootclasspath/a<path_to_jar>\insure.jar
例如,你可以使用:-javaagent:"/home/user/parasoft/insure.jar=soatest,port=5060",instrument=com.mycompany.onlinestore -Xbootclasspath/a:/home/user/parasoft/insure.jar
至于其他(独立版)Java 应用程序,你不需要将 insure.jar
添加到引导类路径。例如,你可以使用:java -javaagent:"C:\Program Files\Parasoft\insure.jar=soatest,port=5050",instrument=com.mycompany.myapp
在执行运行时错误检测之前,需要自定义测试配置,以指定要检查的应用程序和要查找的错误。为此:
要对应用程序执行运行时错误检测:
检测到的错误将报告如下:
报告中也提供了同样的细节。
注意,SOAtest 将每个报告的错误与检测到错误时正在运行的功能测试关联起来。违规行为和功能测试之间的这种关联允许你跟踪每个报告的错误到针对应用程序的特定用例。
本节提供有关配置流行 Web 应用程序服务器的详细说明,以便使用 SOAtest 的运行时错误检测。
JBossInstallRoot/bin/run.bat
(针对 Windows)或备份 run.sh
(针对 UNIX)。JAVA_OPTS
变量。例如:set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig)] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
"-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar"
。eventmonitor
目录从 SOAtest 安装复制到运行时要检查的应用程序机器(例如, c:\eventmonitor
)。http://<HOST>:9060/ibm/console/
以查看 WebSphere 应用程序服务器管理控制台。-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
SOAtest 将自动为 WebSphere 5.1 本地测试环境服务器配置额外的 JVM 参数,这些服务器是从 WSAD 5.1 IDE 中启动的。若要配置所有其他 WebSphere 5.x 服务器来执行执行时错误侦测时,请使用以下程序:
http://<Host>:9090/admin
(默认端口为 9090)以查看 WebSphere 应用程序服务器管理控制台。-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor
directory]/insure.jar
-Xnoagent
JVM 参数来使用 SOAtest 进行操作。-Xnoagent
将修复 java.lang.NoClassDefFoundError: sun/tools/agent/Agent WAS 5.x 启用问题。C:\bea\user_projects\domains\mydomain\startWebLogic.cmd
(Windows) 或 .sh
(UNIX)。set JAVA_OPTIONS
行(如果该行还未添加,则现在就添加)。例如:set JAVA_OPTIONS=-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
如果通过命令行来使用 JBossService.exe
以启动 JBoss:
JavaService-2.0.7.zip
,该文件来自 http://forge.objectweb.org/project/show-files.php?group_id=137&release_id=1267。JavaService.exe
复制并粘贴到应用程序的 bin
目录,然后将其重命名为 JBossService.exe
。run.bat
,如下所示:set JAVA_OPTS=-Dprogram.name=%PROGNAME% -Xms128m -Xmx512m "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_ name.method_name(jni_sig)] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
JBossService.exe
。例如,对于名为 Showcase 的应用程序,不要调用 "%JAVA%" %JAVA_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath "%JBOSS_CLASSPATH%" org.jboss.Main %*
,添加以下行:
rem install Showcase (routes system.out and system.err to the runtimeerrordetection directory) JBossService.exe -install Showcase "%JAVA_HOME%\jre\bin\server\jvm.dll" "-Djava.class.path=%JBOSS_CLASSPATH%" %JAVA_OPTS% -start org.jboss.Main -stop org.jboss.Main -params %* -method systemExit -out C:\runtimeerrordetection\stdoutJBOSS.log -err C:\runtimeerrordetection\stderrJBOSS.log -overwrite rem start the Showcase service net start Showcase |
注意此安装只应执行一次。理想情况下, run.bat 文件应该只包含 start 命令;安装可以通过命令行完成。如果已经安装了服务,则需要使用适当的 VM 参数重新安装它。你可使用以下命令停止或卸载服务:net stop Showcase JBossService.exe –uninstall Showcase 。 |
run.bat
文件。打开的命令提示符应该显示以下打印输出:像往常一样执行一些应用程序事务,然后验证监视是否正常工作。
注意
|