本主题解释如何为任何 Java 应用程序配置监视。当一个适当配置的事件监控工具被放置在测试套件的开始部分(其中包括调用 Java 应用程序的测试(直接或间接地))时,它将接收并可视化所发生的 Java 事件。
本章包含:
通过与 Parasoft Jtest 集成,SOAtest 提供了 Java 运行时错误检测和 Java 事件监视功能,从而为 Java 提供了广泛的测试和分析实践。 在使用 SOAtest 的运行时错误检测和/或 Java 事件监视功能之前,请确保在你的机器上安装了 Jtest,并且启用了 Jtest 连接许可证选项。请查阅 许可证。 请联系 Parasoft 代表以访问 Jtest。这种跨产品功能要求 Jtest 和 SOAtest 使用其中一项以下方式进行安装:
|
通过监视仪表化的 Java 应用程序,你可以在执行功能测试时获得对应用程序内部行为的可见性。这允许你更好地确定测试失败的原因,并在回归测试中丰富用例验证标准。除了验证系统返回的消息和通过 ESB 监视的中间消息/步骤之外,还可以验证正在调用的 Java 应用程序中的事件。例如,你可以验证 EJB 方法调用或对另一个系统的远程调用是否使用了预期的参数。
若要配置用于监视的应用程序,那么需要使用 Parasoft 的监视代理对其进行测试。为此:
insure.jar
和 insureimpl.jar
从 [Jtest_install_dir]/plugins/com.parasoft.xtest.jtest_[version]/resources/
复制到服务器上的一个目录,其中包含你希望测试的应用程序。-javaagent command
添加到现有 Java 参数。有关更多详情,请查阅 javaagent Command Details。服务器将像往常一样启动,但是使用指定的包类进行检测。现在,每当创建对象实例或调用指定包前缀中的方法时,SOAtest(可以从另一个开发人员/QA 桌面机器上运行)将能够在事件监视器中接收事件通知。
在所有情况下都需要以下 invocation-time 参数:
指定应使用哪个端口与被监视程序通信。使用 5050 到 5099。
参数 | 说明 |
---|---|
soatest | 要求配置监视。 |
port=[port_number] | 指定应使用哪个端口与被监视程序通信。使用 5050 到 5099。 |
instrument= [class_name.method_name(jni _sig)] | 指定要检查的完全限定方法的前缀。例如,给定的 有关更多详情,请查阅下面的注意事项。 |
trace=[class_name.method_na me(jni_sig)] | 指定要跟踪的方法调用的筛选器。有关更多详情,请查阅下面的注意事项。 |
类的仪表装置应用于类的所有方法体;它提供了可见性,例如,调用类的什么方法以及这些方法返回什么值。 跟踪还通过检测希望可见的代码的调用者来实现。被调用的代码没有被仪表化。 例如,假设你希望跟踪代码中调用的第三方方法,而不是从其他第三方代码中调用的第三方方法。在本例中,你将编写自己的代码,并跟踪对第三方代码的调用。 更具体地说....
|
以下参数是可选的:
参数 | 说明 |
---|---|
trace_to_xml | 告诉监视器将复杂的 Java 对象序列化为 XML 表示形式。如果省略此选项,则只返回基元和对象的“toString()”值。 强烈建议将此参数用于事件监视器。如果只执行运行时错误检测,则不适用。 |
xmlsizelimit=[integer_value] | 确定以字节为单位的最大 XML 大小限制。如果未指定此选项,则默认大小为 100000。 仅当使用 trace_to_xml 时才适用。 |
xmlcolsizelimit=[integer_value] | 在生成 Java 对象的 XML 表示形式时,确定集合、映射、数组显示的元素的最大数量。默认情况下显示前 100 个元素。 仅当使用 trace_to_xml 时才适用。 |
xmldeeplimit=[integer_value] | 在生成 Java 对象的 XML 表示形式时,确定数据结构包含的最大字段深度。默认情况下包含深度为 8 的字段。 仅当使用 trace_to_xml 时才适用。 |
xmlexcl=[classes_or_fields] | ':' 从 xml 序列化中排除的分离类或字段(例如, xmlexcl=com.acme.A:com.acme.B._field)。 |
xmlinc=[classes_or_fields] | ':' 在 xml 序列化中始终包含分离的类或字段 (例如,xmlinc=com.acme.A:com.acme.B._field) xmlinc 的匹配优先于 xmlexcl 的匹配:如果有匹配 xmlinc 的内容,它总是会显示出来(即使 xmlexcl 也匹配它)。 当模式与类名匹配时,1) 该类类型或派生类型的字段将被排除在序列化之外,2) 该类型或派生类型的方法参数和返回值将不会序列化为 xml。 默认情况下,监视器不包括以下类型的类: .......................... 仅当使用 trace_to_xml 时才适用。 |
xmlsecondslimit=[seconds] | 默认情况下,如果你使用 trace_to_xml,那么监视将只花费 10 秒的时间将被监视的复杂 Java 对象转换为 XML 表示。这是为了防止监视代理在监视非常大的对象时出现显著的慢速。如果达到这个限制,那么 SOAtest 事件将显示以下消息,而不是对象的 XML 表示: 跳过:转换成 XML 需要很长时间:10 秒 如果希望更改 10 秒阈值,请使用 xmlsecondslimit 标志。例如: xmlsecondslimit=20 对于大型对象,推荐的方法是首先避免达到阈值:通过排除不感兴趣的字段来减小 XML 大小(使用 xmlecl 选项)。 |
trace_exceptions[=exception_c lass_prefix] | 显示与创建、抛出或捕获的异常相关的事件的跟踪。
|
terse | 将简洁的输出配置到控制台(堆栈跟踪只有 1 个元素)。 |
定义自己的类加载器(如 Eclipse、JBoss 和 Tomcat)的应用程序需要将 insure.jar
添加到引导类路径中。若要监视这些应用程序,请添加启动 VM 参数:
-javaagent:"<path_to_jar>\insure.jar=soatest,port=<port>",trace_to_xml,instrument=<my.pack-age.prefix>,trace=<my.package.prefix> -Xbootclasspath/a<path_to_jar>\insure.jar |
例如,你可以使用:
-javaagent:"/home/user/parasoft/insure.jar=soatest,port=5060",trace_to_xml,instru- ment=com.mycompany.onlinestore,trace=com.mycompany.onlinestore -Xbootclasspath/a:/home/user/parasoft/insure.jar |
至于其他(独立版)Java 应用程序,你不需要将 insure.jar
添加到引导类路径。例如,你可以使用:
java -javaagent:"C:\Program Files\Parasoft\insure.jar=soatest,port=5050",trace_to_xml,instru-ment=com.mycompany.myapp,trace=com.mycompany.myapp |
xmlsizelimit
可调)。在这些情况下,可以考虑使用上面的各种 xml* 参数来控制感兴趣的内容,并限制数据量。