本主题解释如何执行负载测试。在本章节中:

关于 Load Test 项目

进行负载测试之前,需要创建一个可以保存在 .lt 文件中的负载测试项目。 

复杂测试项目引用 SOAtest .tst 文件(其中包含要负载测试的功能测试和/或想导入的任何现有负载测试)或 jar 文件。 

如果引用的 .tst 文件或 .jar 文件进行了变更,那么这些变更也会影响负载测试项目。

若要打开负载测试项目:

导入现有的 SOAtest 负载测试

若要从 SOAtest .tst 文件导入现有的负载测试:

  1. 请选择 File> Open
  2. 选择合适的 .tst 文件。

然后,负载测试配置和功能测试将导入 Load Test 中。并且负载测试项目会根据需求自动配置。"component archive” 类型将设置为 "Parasoft SOAtest Component",从中导入负载测试配置的 .tst 文件将设置为组件配置面板(通过 Profiles 节点获取)中当前的“SOAtest project”,同时,相应的测试将映射到配置文件中。 

在打开此类项目后,您可以选择并运行负载测试方案。不要求其他配置,但是需要根据下面部分中所描述的那样修改配置:

导入现有的 WebKing 负载测试

若要从 WebKing .tst 文件导入现有的负载测试:

  1. 请将其 .tst 文件导入 SOAtest (File> New> Project from Existing SOAtest or WebKing Test Suites)中。
  2. 打开 Load Test 透视图(Window> Open Perspective> Other> Parasoft Load Test)。
  3. 配置和验证测试套件以进行负载测试,如 SOAtest 用户指南的负载测试部分所述。
  4. 打开 Parasoft Load Test 工具
  5. 请选择 File> Open
  6. 选择合适的 .tst 文件。

然后,负载测试配置和功能测试将导入 Load Test 中。并且负载测试项目会根据需求自动配置。"component archive” 类型将设置为 "Parasoft SOAtest Component",从中导入负载测试配置的 .tst 文件将设置为组件配置面板(通过 Profiles 节点获取)中当前的“SOAtest project”,同时,相应的测试将映射到配置文件中。 

在打开此类项目后,您可以选择并运行负载测试方案。不要求其他配置,但是需要根据下面部分中所描述的那样修改配置:

为 SOAtest 功能测试创建负载测试

 

有关如何创建用于服务和 web 功能测试的负载测试的说明,请查阅 创建和执行负载测试(用于 Web 和/或服务功能测试)

若要从 SOAtest 功能测试场景创建负载测试:

  1. 如果功能测试场景包含 Web 功能测试,请配置并验证用于负载测试的测试套件,如 SOAtest 用户指南的负载测试部分所述。
  2. 在 Parasoft Load Test 工具中,进行其中一项以下操作:

     

    运行负载测试之前,必须先指明负载测试因使用的 SOAtest 功能测试。您可以在两个位置执行此操作:

       •  在 Load Test Configuration 向导的 VU Profiles 页面。

     

       •  在其中一个 Profile> [Virtual User] 配置面板。

     

  3. (可选项) 选择 Load Test 树顶部的 Profiles 节点,然后根据需求自定义 environments、data source 以及 setup/teardown 选项。
  4. (可选项)根据需求修改其他设置。有关更多详情信息,请查阅:

Creating Load Tests Driven by JUnit Tests

若要在 jar 文件中创建由 JUnit3 或 JUnit4 测试驱动的负载测试:

  1. 请进行下列其中一项操作:
  2. 选择 Load Test 树顶部的 Profiles 节点,然后完成配置面板:
    1. 单击 Select
    2. 选中 Built-in 按钮后,选择 JUnit Runnable



    3. 单击 Finish
  3. 在打开的配置面板中提供了要使用的 Junit 测试的详细信息:
    1. 在下表中,单击 Add 然后指定 Load Test 应查找 JUnit 测试类及其依赖项的 JAR 存档。



    2. 在上表中,单击 Add 然后指定要使用的 JUnit 测试类。指定 Junit 类名称后,Load Test 检查该类是否存在于指定的 classpath 元素中。Class 表的 Class found 列显示是否找到类。
      • 如果 classpath 元素进行了变更,请单击 Verify All 以重新进行验证。
    3. Test object use 框中(在同一个面板的顶部),请选择使用这些测试进行负载测试是要使用的模式。
      • Virtual users create test object(s): 在该模式下,每个虚拟用户都会创建一个 JUnit 类实例。然后,虚拟用户所属配置文件中的配置执行 Junit 类的测试方法。如果 Junit 方法通过套接字或其他远程对象访问测试外部对象或端点,则推荐使用这种模式。
      • Virtual Users share test object(s): 在该模式下,负载测试过程的所有虚拟用户都共享一个 JUnit 对象。所有虚拟用户都将调用这个 JUnit 对象的方法。此模式可用于 JUnit 对象的并发测试。

        例如,您可以编写一个 JUnit 类,用于测试您编写的 MyCollection 对象的操作。通过在此模式下对适当的 JUnit 测试进行负载测试,可以测试 MyCollection 类的并发问题。在这种情况下,作为经验法则,您应该使用在可以配置 Virtual Users or Hits Per Second 最大数的计算机上运行负载测试;这将最大化运行 JUnit 的并发级别。将负载测试场景的随机化类型设置为 "Uniform"。
  4. 配置新的或默认配置文件来运行 jar 文件中的所需操作。有关详细信息,请查阅 Customizing Profiles
  5. (可选项)如果想使用 setup 和/或 teardown 方法,请将如下配置它们:
  6. (可选项)根据需求修改其他设置。有关详细信息,请查阅:


如果改变了任何 .jar 类路径的元素,则需要重新加载这些变更才能使这些更改生效。要这样做的话,只需单击 Reload 按钮。 

保证重新加载组件之前已经保存项目;在组件重新加载时未保存的变更会丢失。

 

创建由 Jar 文件驱动的负载测试

 

关于如何创建由 jar 文件驱动的负载测试的说明,请查阅 创建自定义负载测试组件

若要创建由 jar 文件中可获得的自定义组件驱动的负载测试:

  1. 请进行下列其中一项操作:
  2. 选择 Load Test 树中的 Profiles 节点,然后完成配置面板:
    1. 单击 Select
    2. 选择 Local 按钮。
    3. 单击 Next
    4. 指定合适的 JAR 存档。从下拉菜单中选择内置组件,或者是浏览到有效的 Parasoft Load Test .jar 组件存档。
    5. 单击 Finish
  3. 配置新的或默认配置文件来运行 jar 文件中的所需操作。有关详细信息,请查阅 Customizing Profiles
  4. (可选项)根据需求修改其他设置。有关详细信息,请查阅:

根据组件的实现,特定于组件的控件可能会显示在组件配置面板中。对于不是内置的组件,会同时显示 Deployment 和 Configuration 这两个选项卡。Deployment 显示组件部署属性,例如主组件类的 Java 类名以及组件验证消息。 

可以通过选择 File> Customize Preferences,然后打开 Parasoft Load Test Preferences 对话框中的 Components 页面来查看内置组件的部署详细信息。

完成 Load Test Configuration 向导

如果要使用负载测试配置向导,请完成以下操作:

  1. 在初始向导面板中,指定 .tst 文件包含想要用来进行负载测试的 SOAtest 测试,然后单击 Next
  2. 如果在指定的 .tst 文件中检测到现有负载测试配置,请执行其中一项以下操作:
  3. VU Profiles 面板中(仅针对 SOAtest 组件),请选择代表您要使用的测试套件的复选框,然后单击 Next
  4. Schedule and Distribution 面板中,请根据需求自定义可用选项,然后单击 Next
  5. Performance Monitors 面板中,根据需求配置性能监控器,然后单击 Next
  6. Quality of Service 面板中,根据需求自定义度量指标,然后单击 Next
  7. Slave Machines 面板中,根据需求配置远程机器,然后单击 Next
  8. Other Options 面板中,请根据需求自定义选项,然后单击 Finish

如果选中了 Start Load Test immediately 选项,Load Test 将运行基于特定场景设置、关联测试套件配置以及机器设置的负载测试。如果选中了 Start Load Test immediately 选项,左侧 GUI 面板中会出现 Load Tests 选项卡,但是负载测试不会运行。

运行负载测试

负载测试与 SOAtest .tst 项目或 jar 文件关联后,可以使用当前的负载测试场景(钟形曲线、缓冲测试、线性增加或稳定负载)或者在 Load Test 中创建的任何自定义场景进行负载测试。 

如果您有要进行负载测试的项目,则将启用 Load Test 工具栏按钮:

运行负载测试,只需单击 Load Test 工具栏按钮,然后完成 Confirm Scenario 对话框,说明要使用的场景。选择场景时需考虑以下几点:

Load Test 将运行基于特定场景设置、关联虚拟用户配置文件以及机器设置的负载测试。如果您未自定义设置,则 Load Test 会在本机上运行测试和创建虚拟用户。

如果指定持续时间停止之前想停止测试,请单击 Stop 工具栏按钮。Load Test 会停止创建虚拟用户,并显示 Stopping 对话框。如果不进行后续操作,Load Test 将允许每个在线的虚拟用户完成当前正在执行的测试。 

如果您希望 Load Test 立即停止测试,请单击 Force Stop 按钮。注意,如果选择强制停止选项,结果会是:主要负载测试结果中将不会包含已停止的虚拟用户,并且负载测试结果甚至变得不精确或具有误导性。

监控测试过程

Load Test 在测试期间和测试之后显示测试过程数据。另外,它在测试完成后显示测试结果。

Load Test 记录以下测试过程详情:执行细节、执行状态和负载测试错误。

查看执行详情

负载测试开始后,立即在右侧 GUI 面板的 Load Test Progress 选项卡的 Graph 选项卡中显示负载测试详细信息。这个 Graph 选项卡允许您查看与正在进行的负载测试有关的图形数据。 

 

 

可以通过右键单击 Graphs 选项卡,然后选择其中一个可用的布局选项,以更改显示的图形的数量和布局。

 

 

Graph 选项卡图例中显示以下图形:

自定义执行详情

除了从 Graph 选项卡图例中的选项中进行选择之外,还有多种其他方法可以操作负载测试运行时在 Graph 选项卡中显示的详情。

若要过滤显示的图表数据:

若要将报告的 Y 轴从默认线性比例尺更改为对数比例尺(反之亦然):

若要使用指定颜色填充图表区,请选择 Fill graph areas 多选框。

 

若要自定义负载测试过程图形颜色:

  1. 请右键单击 Graph 选项卡图例中所需栏,并从快捷菜单中选择 Change olor 。打开 Selectcolor 对话框。



  2. 根据对话框需求操作配色方案,然后单击 OK

 

若要在负载测试运行时动态修改虚拟用户数或配置权重:

  1. 请从 Load Test 树的 Scenarios 节点中选择当前场景。右侧 GUI 面板中显示 UsersProfiles 选项卡,其中 Users 选项卡为选中状态。
    选项卡灰掉的部分表示负载测试的经过时间。您不能修改已变灰的图形曲线的任何部分。



  2. 选择 Users 选项卡,并根据需求通过选择 Vertical scale 下拉菜单,单击 More pointsLess points 按钮,或鼠标拖放曲线来修改图形曲线。  在进行负载测试时,您无法更改其持续时间。
  3. 选择 Profiles 选项卡,并根据需求通过选择 Vertical scale 下拉菜单,单击 More pointsLess points 按钮,或鼠标拖放曲线来修改图形曲线。在进行负载测试时,您无法更改其持续时间。
    关于自定义 Users 或 Profiles 选项卡的更多信息,请查阅 自定义测试套件场景
  4. 选择 Window> Load Test Progress以返回 Load Test Progress 图。

 

测试完成后,若要查看执行详情:

  1. 请选择 Window> Load Test Progress
  2. 然后单击 Graph 选项卡。

查看执行状态

测试执行期间的任何时候,您都可以查看正在运行的虚拟用户的执行状态信息(配置文件和当前执行状态)。测试执行期间每 3 秒更新一次执行状态信息:

若要在测试进行中查看执行状态信息:

测试完成后,若要查看执行状态信息:

  1. 请选择 Window> Load Test Progress
  2. 然后单击 Snapshot 选项卡。

Viewing Load Test Errors

如果 Load Test 在测试执行期间遇到错误(例如,由于远程计算机无法运行 Load Test 服务器而导致测试无法进行),那么它会在状态栏显示一个橙色的感叹号图标。 

若要查看错误信息:

Load Test 还会在消息报告中打印出执行错误的日志。该选项和报告只在 Load Test 在测试执行期间遇到错误时才可用。测试完成后,若要查看此报告: 

另外,您可以在测试执行期间或测试执行之后查看模拟详情(例如,有关访问远程测试机器、线程中断等问题的信息)。

若要在测试进行中查看这些信息:

测试完成后,若要查看模拟详情: 

  1. 请选择 Window> Load Test Progress
  2. 然后单击 Log 选项卡。

Log 选项卡开着的任何时候,您都可以设置该控制台的日志级别(最详细为 warn 设置,最简单为 error 设置)以及缓冲区高度。

处理测试结果

您可以在 Load Test 结果窗口查看负载测试结果。有关访问和解释可用的负载测试报告的详细信息,请查阅 审查和自定义负载测试结果

配置 JVM 垃圾回收器和内存选项

Load Test 性能(在某些情况下,时间测量的准确性)可能取决于 JVM GC 设置以及可用于 JVM 的内存量。 

建议每个 Load Test 进程至少有 4 GB 的系统内存。Load Test 进程 JVM 内存大小由 Loas Test 启动器或脚本自动配置。若要具体设置可用于 Load Test 进程的 JVM 的可用最大内存量,请通过命令行将 -XmxNNNNM 参数传递给 Load Test 进程,其中 NNNN 是兆字节的内存量。在 Windows 系统上,参数之前加上 –J;例如:“lt -J-Xmx4096M”.

为了优化性能,Parasoft Load Test 使用 JVM 参数 "-XX:+UseParallelGC” 指定的并行年轻代垃圾回收器。如果有必要,可以使用命令行参数 "-XX:-UseParallelGC”将其关闭。如果您将在 Windows 系统上使用此参数,请在参数之前加上 -J(在可执行文件名之后)。例如:loadtest.exe -J-XX:-UseParallelGC。若要在 Load Test JVM 中启用并发标记和清除 GC,则必须明确禁用 UseParallelGC 选项;例如:lt -J-XX:-UseParallelGC -J-XX:+UseConcMarkSweepGC。