本主题涵盖了Jtest 跟踪器客户机工具,该工具用于根据它监视的测试操作生成 JUnit 测试。
本章包含:
了解 Jtest 跟踪器客户机
如果您有 Jtest 跟踪器(在 Parasoft Jtest 中可用)监听您的 Java 应用程序或 web 服务,则可以使用 SOAtest Jtest 跟踪器工具来控制启动和停止记录方法调用时,将监控类或包的方法,并路由记录的数据。
跟踪器提供了一种快速而简单的方法来创建真实的功能性 JUnit 测试用例,该测试用例可以捕获您的 SOAtest 测试用例所涵盖的功能。使用跟踪器,您可以追踪到 JVM 级别以及更大集成系统上下文中 Java 应用程序的执行(而无需更新任何代码或重编译)。当执行 SOAtest 测试用例时,跟踪器会监视所有已创建的对象和所有输入及输出的数据。
然后使用跟踪结果以生成联系上下文的 Junit 测试用例,该用例在开发人员的桌面上单独回放相同操作,而无需访问所有的应用程序依赖项。这意味着您可以在验证过程中使用一台机器来重现复杂程序的行为。
由于所生成的单元测试直接将测试与源代码关联起来,这提高了错误识别和诊断,并允许开发人员运行这些测试用例,而不必依赖对环境的访问或设置复杂的阶段环境。这促进了质量团队和开发团队之间的合作。QA 可以为开发人员提供其所跟踪代码级测试结果的测试会话,这些测试帮助开发人员识别、理解和解决有问题的代码。
前提条件
- 必须在您的团队可以访问的系统上提供 Parasoft Jtest(带有跟踪器许可证)。这个跨产品功能需要 通过 p2 updatesite 存档安装 Jtest 和 SOAtest(请参阅 Eclipse p2 更新站点安装 以获得更多详情。)。
- 对于正在运行要跟踪的应用程序的计算机,您必须拥有适当的平台 Jtest 跟踪程序库(用于 Windows 的 *.dll,用于 Linux 的 lib* 和用于 HP-UX 的 libpmt.sl)。如果要跟踪的应用程序运行在不同的平台上,而不是安装了 Jtest 的机器上,那么需要下载该平台的 Jtest 安装,以便提取库(*.dll, lib*.so 或 libpmt.sl)并复制到该机器上。
配置 Jtest 跟踪器客户机
在您可以“跟踪”应用程序以创建测试用例之前,您必须执行以下一次性配置步骤:
- 确保运行要跟踪的应用程序的计算机上有可用的跟踪程序库。
- 有关更多详情,请查阅 Jtest 文档。
- 设置系统的路径以引用跟踪程序库。
- 有关更多详情,请查阅 Jtest 文档。
- 使用适当的 JVM 参数启动服务器进行跟踪。
- 有关更多详情,请查阅 Jtest 文档。
- 通过将 Jtest 跟踪器客户端工具添加到测试套件中,指定想要跟踪的测试。您需要添加两个 Jtest 跟踪器客户端工具:一个作为设置工具,另一个作为拆卸工具。
- 有关更多详情,请查阅以下部分。
指定要跟踪哪个测试
通过在测试套件中添加两个 Jtest 跟踪器客户端测试工具,可以指定要跟踪哪些测试:
- Jtest 跟踪器客户机 — 在您想要跟踪的第一个测试操作之前,将跟踪作为设置测试启动。
- Jtest 跟踪器客户机 — 在您想要跟踪的最后一个测试操作之后,停止跟踪工具作为拆卸测试。
若要配置这一点,请完成以下内容:
- 右键单击要开始跟踪的测试套件或测试的测试用例资源管理器节点,并从快捷菜单中选择 Add New> Test 。
- 在 Add Test 向导中,从左窗格选择 Set-Up ,从右窗格选择 Jtest Tracer Client ,然后单击 Finish 按钮。 Set-Up: Jtest Tracer Client 节点显示在所选测试套件中。
- 将设置测试配置如下:
- 跳转至 Jtest Tracer Client 测试配置面板(如果不可见,请双击 Jtest 跟踪器客户机打开它)。
- 指定要连接到的主机和端口。默认端口为 6543。
- 例如,如果服务端点为 http://www.foo.bar.com:1234,则您将输入
www.foo.bar.com
作为主机,1234
作为端口。 - 支持 http 端点,不支持 tcp。
- 例如,如果服务端点为 http://www.foo.bar.com:1234,则您将输入
- 确保选中 Start trace 按钮。
- 指定要保存结果文件的位置(Jtest 将用于生成测试用例的文件)。
- 如果想将其保存到本地系统(正在运行 SOAtest 机器),请选择 Local file 并浏览到(或输入)本地文件路径。
- 如果希望将其保存到远程系统(例如,运行跟踪应用程序的系统),请选择 Remote file 然后输入到所需位置的路径。
- 在 Monitored Classes/Packages 区域中指定要监视的类/包。
- 如果想监视 JVM 参数中指定的所有类和包,请选择 All (默认)。
- 如果只想监视 JVM 参数中指定的类或包的子集,请选择 Custom ,然后在打开的表中指定类/包。这对于专注于只属于某个类子集的特定用例非常有用。所有类和包都必须是完全限定的,并且包必须以
".*"
字符序列结尾。
- 单击 Save。
- 右键单击要停止跟踪的测试套件或测试的测试用例资源管理器节点,并从快捷菜单中选择 Add New> Test 。
- 在 Add Test 向导中,从左窗格选择 Tear-Down ,从右窗格选择 Jtest Tracer Client ,然后单击 Finish 按钮。 Tear-Down: Jtest Tracer Client 节点显示在所选测试套件中。
- 完全按照您配置设置测试的方式配置拆卸测试,但有一个例外:选择 Stop trace 按钮,替换 Start trace 按钮。
生成测试用例
若要生成测试用例,您需要:
- 运行包含 Jtest 跟踪器客户端作为设置工具和拆卸工具的 SOAtest 测试套件(如上所述)。这将生成跟踪器输出文件。当测试执行完成时,跟踪器输出文件将保存在本地或远程机器上(取决于是否将配置设置为使用本地文件或远程文件)。
- 使用 Parasoft Jtest 从跟踪器输出文件生成 Junit 测试用例。
- 有关更多详情,请查阅 Jtest 文档。
故障排除
如果对象是在开始请求之前构造的,则通过使用 Jtest 的对象存储库特性来复制对象状态。由于内存问题,这些对象的大小是有限制的。如果对象超过了设置的限制,则恢复的对象可能不包含准确地重新创建方法调用所需的信息。通过查看应用程序/服务的标准输出,或者查看生成的测试用例是否不正确,您可以看到哪些对象没有被正确创建。但是,如果调用没有与对象的未记录部分交互,那么您的测试用例将被完美地重新创建。您可能想要考虑从 monitor 参数中删除这个大型类,这样我们就不会嗅探它。如果您认为有足够的内存可以捕获更大的对象,请联系 Jtest 支持,了解如何增加记录的对象大小限制。还可以增加应用程序或 web 服务使用的内存量。我们建议您总是为应用程序分配尽可能多的内存。
Java 编译也有大小限制,在使用 Jtest 生成测试时可能会遇到这些限制。在重新创建测试时,我们要确保调用序列与实际执行的序列一致。因此,有时为了完美地重新创建调用序列,我们添加了大量的方法调用。编译器可能无法处理这么大的方法。
我们已经有了一些方法来解析不改变任何数据的方法调用。如果看到这个问题,您可以修改您的 monitor 参数来避免嗅探这个类,或者可以使用 Jtest 跟踪器工具的开始和停止操作命令来创建更集中的调用子部分。