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

关于 Load Test 项目

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

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

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

  • 要保存负载测试项目,请单击 Save 工具栏按钮,或者选择 File> Save / File> Save As

若要打开负载测试项目:

  • 请选择 File> Open

导入现有的 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 工具中,进行其中一项以下操作:
    • 若要创建新的负载测试项目:
      1. 请选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
      2. 选择 SOAtest,然后完成 Load Test Configuration 向导,如 Completing the Load Test Configuration Wizard中所述。
    • 若要添加功能测试到现有 Load Test 项目:请打开其负载测试文件 (File> Open)。

     

    重要项:Specify Which Functional Tests to Use for Load Testing

    运行负载测试之前,必须先指明负载测试因使用的 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. 请进行下列其中一项操作:
    • 若要创建新的负载测试项目:
      1. 请选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
      2. 选择 JUnit Runnable,然后完成 Load Test Configuration 向导,如 Completing the Load Test Configuration Wizard中所述。
    • 若要添加 JUnit 驱动的测试到现有 Load Test 项目:请打开其负载测试文件 (File> Open)。
  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
    • 关于 JUnit 3:  可以选择所有 test*  方法(以小写 ‘test’开始的方法)。
    • 关于 JUnit4: 可以选择属于该配置文件的虚拟用户将运行的特定测试方法。可以选择使用 @Test (@org.junit.Test) 注解的所有方法。



  5. (可选项)如果想使用 setup 和/或 teardown 方法,请将如下配置它们:
    • 关于 JUnit 3: Junit3 类可以具有在测试执行之前和之后运行的 setUp()tearDown() 方法。Load Test 的 JUnitRunnable 组件以以下模式(取决于测试执行模式)调用这些方法:
      • 以虚拟用户创建测试对象的模式:创建虚拟用户调用 JUnit 对象的 setUp() 方法。在虚拟用户运行了所有预定的测试之后且销毁之前调用 tearDown() 方法。
      • 以虚拟用户共享测试对象的模式:负载测试开始之前调用 JUnit 对象的 setUp() 方法。负载测试停止之后调用 tearDown() 方法。
    • 关于 JUnit 4: JUnit 4 使用 @org.junit.Before@org.junit.After 注解,而不是使用 setUp()tearDown() 命名规范。根据测试执行模式,JUnit 的 @Before@After 方法会以与 Junit3 测试的 setUp()tearDown() 方法一样的形式被调用(如上所述)。
  6. (可选项)根据需求修改其他设置。有关详细信息,请查阅:


重新加载类路径元素

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

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

 

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

 

教程

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

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

  1. 请进行下列其中一项操作:
    • 若要创建新的负载测试项目:
      1. 请选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
      2. 然后完成 Load Test Configuration 向导,如 Completing the Load Test Configuration Wizard中所述。
    • 若要添加 jar 文件驱动的测试到现有负载测试项目中,请执行以下操作:打开负载测试文件 (File> Open)。
  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 文件中检测到现有负载测试配置,请执行其中一项以下操作:
    • 若要使用现有配置,请选择 Existing Configuration 然后单击 Finish
    • 若要创建新的配置,请选择 New Configuration 然后单击 Next
  3. VU Profiles 面板中(仅针对 SOAtest 组件),请选择代表您要使用的测试套件的复选框,然后单击 Next
    • 每个所选定的测试套件都将分配给不同的虚拟用户配置文件。
  4. Schedule and Distribution 面板中,请根据需求自定义可用选项,然后单击 Next
    • Controlled Parameter: 如果想要 Load Test 尝试达到指定的虚拟用户数量(并可能在此过程中改变每秒的点击次数),请选择 Number of Users。如果希望 Load Test 根据需求改变虚拟用户数来实现特定的点击率,请选择 Hits per Second, Hits per Minute, Hits per Hour, Hits per Day
    • Schedule:Duration 字段中输入新值。Days 最大值为 30,hours 最大值为 23,minutes 最大值为 59,seconds 最大值为 59。
    • Distribution: 从以下选项中选择发布的类型:
      • Linear Increase 场景模拟随时间线性增加的负载。这对于容量测试很有用,可以帮助您确定可伸缩性。
      • Steady Load 场景模拟一段时间内稳定的用户负载。这对于耐久性测试很有用,可以帮助您确定性能是否随时间下降。
      • Bell 场景模拟了典型的每日用户分布(凌晨后立即以最低点开始,早晨逐渐上升,中午的时候达到峰值,下午逐渐下降,然后在一天结束时返回最低点。)这对于预期使用测试很有用,可以确定正常负载模式下是否会发生性能问题。
      • Buffer Test 场景模拟了随时间变化的负载。这可以帮助您确定负载降低时是否释放资源。还帮助您确定整体性能是否会随时间降低。
  5. Performance Monitors 面板中,根据需求配置性能监控器,然后单击 Next
  6. Quality of Service 面板中,根据需求自定义度量指标,然后单击 Next
    • 100% Success:随后的请求消息测量百分比必须精确到 100%。
    • Fast Hit Rate:负载测试期间实现的吞吐量必须高于定义的水平。
    • Low Server Time:验证其平均服务时间是否低于特定的临界值。
    • No Failures:负载测试期间发生的失败总数必须为 0。
    • Low Execution Time:验证其平均执行时间是否低于特定的临界值。
      关于服务质量的更多信息,请查阅 自定义场景的 QoS 度量
  7. Slave Machines 面板中,根据需求配置远程机器,然后单击 Next
    • 可以添加或移除远程机器,也可以选择 High Throughput 禁用掉测试响应验证。
    • 有关奴隶机的更多详情,请查阅 自定义场景的 QoS 度量
  8. Other Options 面板中,请根据需求自定义选项,然后单击 Finish
    • Start Load Test immediately: 选择此选项可在 Load Test Configuration 向导中点击了 Finish 按钮后立即开始负载测试。
    • Record graph data and error details: 完成负载测试后,选择该选项,Load Test 会创建一个详细的场景报告。关于详细报告的更多详情,请查阅 详细报告。选择 Record graph data and error details 多选框之后,以下可供选择:
      • Record first:选择此单选框按钮并在文本字段中输入一个数字,以记录指定的第一个错误详情。如果产生大量错误, Record first 选项有助于防止详细报告文件增长到无法管理的大小。默认情况下,记录前 300 个错误详情。
      • Record all:选择此单选框按钮,以记录详细报告中的所有错误详情。
      • Record individual hits: 选择此按钮,以记录单个点击并让负载测试工具完成负载测试之后创建一个直方图作为详细报告的一部分。您还可以选择在详细报告中以图形和表格形式显示单个点击。

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

运行负载测试

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

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

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

  • Bell 场景模拟了典型的每日用户分布(凌晨后立即以最低点开始,早晨逐渐上升,中午的时候达到峰值,下午逐渐下降,然后在一天结束时返回最低点。)这对于预期使用测试很有用,可以确定正常负载模式下是否会发生性能问题。
  • Buffer Test 场景模拟了随时间变化的负载。这可以帮助您确定负载降低时是否释放资源。还帮助您确定整体性能是否会随时间降低。
  • Linear Increase 场景模拟随时间线性增加的负载。这对于容量测试很有用,可以帮助您确定可伸缩性。
  • Steady Load 场景模拟一段时间内稳定的用户负载。这对于耐久性测试很有用,可以帮助您确定性能是否随时间下降。

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 选项卡图例中显示以下图形:

  • Tests Start Rate: 选择该选项以在图表中显示随时间推移开始测试的比率。
  • Tests Completion Rate: 选择该选项以在图表中显示随时间推移完成测试的比率。
  • Test Error Rate: 选择该选项以在图表中显示随时间推移测试错误的比率。
  • Virtual Users: 选择该选项以在图表中显示随时间推移虚拟用户的数量。
  • Min. Execution Time: 选择该选项以显示负载测试的最小执行时间。
  • Max. Execution Time: 选择该选项以显示负载测试的最大执行时间。
  • 平均Execution Time: 选择该选项以显示负载测试的平均执行时间。
  • Monitor Parameters: 选择该选项以显示从添加到负载测试树 Monitors 节点的任何 SNMP 或 Windows 监视器收集的数据。监视器参数的名称基于监视器的“主机”和“图表标题”值。上述截屏中:
    • CPU 图显示了本机的 CPU 使用率。
    • MemAvailMB 显示了本机可用内存(MB)。
    • 例如,如果添加了一个监控器并键入 "ox” 到 Host字段, "SNMP TCP Established” 到 GraphTitle字段,则负载测试期间您会在 Graph 会看到一个 ox SNMP TCP Established 图形。有关监视器参数的更多详情,请查阅 使用监视器

自定义执行详情

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

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

  • 请从 Graph 选项卡顶部的下拉菜单中进行选择。显示在 Graph 选项卡中的负载测试详情可通过 MachinesProfiles,以及 Tests来过滤。

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

  • 如果想使用对数比例尺,请选择 Log Scale 多选框。对数比例尺允许你在同一图形上看到多条曲线的形状(即使显示的值彼此相距很远)。例如,如果总加载时间介于 1000 毫秒到 200 毫秒之间,并且用户数量介于 10 个到 20 个,在图表使用线性比例尺时你将无法看到用户值(图形将是一条接近于 0 的直线)。如果使用对数比例尺,你将看到加载时间值和用户值。
  • 如果想使用线性比例尺,请清除 Log Scale 多选框。

若要使用指定颜色填充图表区,请选择 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 秒更新一次执行状态信息:

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

  • 请单击右侧 GUI 面板中的 Snapshot 选项卡。

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

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

Viewing Load Test Errors

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

若要查看错误信息:

  • 请单击感叹号图标。

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

  • 请在负载测试报告 Views 框中选择 Messages

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

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

  • 请单击右侧 GUI 面板中的 Log 选项卡。

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

  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。

  • No labels