本主题介绍如何执行负载测试。章节目录:
关于负载测试项目
进行负载测试之前,需要创建一个可以保存在 .lt 文件中的负载测试项目。
负载测试项目引用 SOAtest .tst 文件(其中包含要负载测试的功能测试和/或想导入的任何现有负载测试)或 jar 文件。
如果引用的 .tst 文件或 .jar 文件发生变更,那么这些变更也会影响负载测试项目。
- 要保存负载测试项目,请点击工具栏中的保存,或前往文件 > 保存或文件 > 另存为。
若要打开负载测试项目:
- 前往文件 > 打开。
导入现有的 SOAtest 负载测试
若要从 SOAtest .tst 文件导入现有的负载测试:
- 前往文件 > 打开。
- 选择合适的 .tst 文件。
然后,负载测试配置和功能测试将导入 Load Test 中。负载测试项目会根据需求自动配置。“component archive”类型将设置为“Parasoft SOAtest Component”,从中导入负载测试配置的 .tst 文件将设置为组件配置面板(通过配置文件节点获取)中当前的“SOAtest project”,同时,相应的测试将映射到配置文件中。
在打开此类项目后,您可以选择并运行负载测试场景。不要求其他配置,但是需要根据下面部分的描述修改配置:
为 SOAtest 功能测试创建负载测试
教程
有关如何创建用于服务和 web 功能测试的负载测试的说明,请参阅创建和执行负载测试(用于 Web 和/或服务功能测试)。
若要从 SOAtest 功能测试场景创建负载测试:
- 如果功能测试场景包含 Web 功能测试,请配置并验证用于负载测试的测试套件,如 SOAtest 用户指南的 Load Test 部分所述。
- 在 Parasoft Load Test 工具中,进行其中一项以下操作:
- 若要创建新的负载测试项目:
- 前往文件 > 新建 > Load Test 项目或点击工具栏中的新的 Load Test。
- 选择 SOAtest,然后根据Completing the Load Test Configuration Wizard中的说明完成 Load Test 配置向导。
- 若要添加功能测试到现有 Load Test 项目:打开负载测试文件(文件> 打开)。
重要项:指定用于负载测试的功能测试
运行负载测试之前,必须先指明负载测试应使用的 SOAtest 功能测试。您可以在两个位置执行此操作:
• 在 Load Test 配置向导的虚拟用户配置文件页面。
• 在其中一个配置文件> [虚拟用户] 配置面板。
- 若要创建新的负载测试项目:
- (可选项)选择 Load Test 树顶部的配置文件节点,然后根据需求自定义 environments、data source 以及 setup/teardown 选项。
- 关于环境配置的详细信息,请参阅配置 Setup/Teardown 测试执行。
- 有关数据源选项的详细信息,请参阅对数据源使用进行配置。
- 关于 setup/teardown 选项的详细信息,请参阅配置 Setup/Teardown 测试执行。
- (可选项)根据需求修改其他设置。详情请参阅:
创建由 JUnit 测试驱动的负载测试
若要在 jar 文件中创建由 JUnit3 或 JUnit4 测试驱动的负载测试:
- 请执行以下任一操作:
- 若要创建新的负载测试项目:
- 前往文件 > 新建 > Load Test 项目或点击工具栏中的新的 Load Test。
- 选择 JUnit Runnable,然后根据Completing the Load Test Configuration Wizard中的说明完成 Load Test 配置向导。
- 若要添加 JUnit 驱动的测试到现有 Load Test 项目:打开负载测试文件(文件> 打开)。
- 若要创建新的负载测试项目:
- 选择 Load Test 树顶层的配置文件节点,然后完成配置面板:
- 点击选择。
- 启用内建后,选择 JUnit Runnable。
- 点击完成。
- 在打开的配置面板中提供了要使用的 Junit 测试的详细信息:
- 在下表中,点击添加然后指定 Load Test 查找 JUnit 测试类及其依赖项的 JAR 包。
- 在上面的表中,点击添加然后指定要使用的 JUnit 测试类。指定 Junit 类名称后,Load Test 检查该类是否存在于指定的 classpath 元素中。类表的细节列显示是否找到类。
- 如果 classpath 元素进行了变更,请点击验证所有以重新进行验证。
- 在测试对象使用框中(在同一个面板的顶部),请选择使用这些测试进行负载测试时的模式。
- 虚拟用户创建测试对象:在该模式下,每个虚拟用户都会创建一个 JUnit 类实例。然后,虚拟用户所属配置文件中的配置执行 Junit 类的测试方法。如果 Junit 方法通过套接字或其他远程对象访问测试外部对象或端点,则推荐使用这种模式。
- 虚拟用户共享测试对象:在该模式下,负载测试过程的所有虚拟用户都共享一个 JUnit 对象。所有虚拟用户都将调用这个 JUnit 对象的方法。此模式可用于 JUnit 对象的并发测试。
例如,您可以编写一个 JUnit 类,用于测试您编写的 MyCollection 对象的操作。通过在此模式下对适当的 JUnit 测试进行负载测试,可以测试 MyCollection 类的并发问题。在这种情况下,作为一条经验法则,您应使用机器上可配置的最大虚拟用户数或每秒点击数来运行负载测试;这样可最大限度地提高运行 JUnit 的并发水平。将负载测试场景的随机化类型设置为“统一的”。
- 在下表中,点击添加然后指定 Load Test 查找 JUnit 测试类及其依赖项的 JAR 包。
- 配置新的或默认配置文件来运行 jar 文件中的所需操作。详情请参阅自定义配置文件。
- 关于 JUnit 3: 可以选择所有 test* 方法(以小写 ‘test’开始的方法)。
- 关于 JUnit4: 可以选择属于该配置文件的虚拟用户将运行的特定测试方法。可以选择使用 @Test (@org.junit.Test) 注解的所有方法。
- (可选项)如果想使用 setup 和/或 teardown 方法,请按以下方式配置:
- 关于 JUnit 3: Junit3 类可以具有在测试执行之前和之后运行的
setUp()
和tearDown()
方法。Load Test 的 JUnitRunnable 组件以下列模式(取决于测试执行模式)调用这些方法:- 虚拟用户创建测试对象的模式:创建虚拟用户调用 JUnit 对象的
setUp()
方法。在虚拟用户运行了所有预定的测试之后且销毁之前调用tearDown()
方法。 - 虚拟用户共享测试对象的模式:负载测试开始之前调用 JUnit 对象的
setUp()
方法。负载测试停止之后调用tearDown()
方法。
- 虚拟用户创建测试对象的模式:创建虚拟用户调用 JUnit 对象的
- 关于 JUnit 4: JUnit 4 使用
@org.junit.Before
和@org.junit.After
注解,而不是使用setUp()
和tearDown()
命名规范。根据测试执行模式,JUnit 的@Before
和@After
方法会以与 Junit3 测试的setUp()
和tearDown()
方法一样的形式被调用(如上所述)。
- 关于 JUnit 3: Junit3 类可以具有在测试执行之前和之后运行的
- (可选项)根据需求修改其他设置。详情请参阅:
重新加载 classpath 元素
如果改变了任何 .jar classpath 的元素,则需要重新加载这些变更才能使这些更改生效。若要重新加载,只需点击重新加载即可。
保证重新加载组件之前已经保存项目;在组件重新加载时未保存的变更会丢失。
创建由 Jar 文件驱动的负载测试
教程
关于如何创建由 jar 文件驱动的负载测试的说明,请参阅创建自定义 Load Test 组件。
若要创建由 jar 文件中可获得的自定义组件驱动的负载测试:
- 请执行以下任一操作:
- 若要创建新的负载测试项目:
- 前往文件 > 新建 > Load Test 项目或点击工具栏中的新的负载测试。
- 然后根据Completing the Load Test Configuration Wizard中的说明完成 Load Test 配置向导设置。
- 若要添加 jar 文件驱动的测试到现有负载测试项目中,请执行以下操作:打开负载测试文件(文件> 打开)。
- 若要创建新的负载测试项目:
- 选择 Load Test 树中的配置文件节点,然后完成配置面板:
- 点击选择。
- 启用本地。
- 点击下一步。
- 指定合适的 JAR 包。从下拉菜单中选择内建组件,或者是找到有效的 Parasoft Load Test .jar 组件压缩包。
- 点击完成。
- 配置新的或默认配置文件来运行 jar 文件中的所需操作。详情请参阅自定义配置文件。
- (可选项)根据需求修改其他设置。详情请参阅:
根据组件的实现,特定于组件的控件可能会出现在组件配置面板中。对于非内建组件,会同时显示部署和配置这两个选项卡。部署显示组件部署属性,例如主组件类的 Java 类名以及组件验证消息。
可以通过前往文件> 自定义首选项,然后打开 Parasoft Load Test 首选项对话框中的 Components 页面来查看内建组件的部署详细信息。
完成 Load Test 配置向导
如果要使用负载测试配置向导,请完成以下操作:
- 在初始向导面板中,指定 .tst 文件包含想要用来进行负载测试的 SOAtest 测试,然后点击下一步。
- 如果在指定的 .tst 文件中检测到现有负载测试配置,请执行其中一项以下操作:
- 若要使用现有配置,请选择现有配置然后点击完成。
- 若要创建新的配置,请选择新建配置然后点击下一步。
- 在虚拟用户配置文件面板中(仅针对 SOAtest 组件),选择您要使用的测试套件,然后点击下一步。
- 每个所选定的测试套件都将分配给不同的虚拟用户配置文件。
- 在计划表 & 分发面板中,请根据需求自定义可用选项,然后点击下一步。
- 受控参数:如果想要 Load Test 尝试达到指定的虚拟用户数量(并可能在此过程中改变每秒的点击次数),请选择用户数。如果希望 Load Test 根据需求改变虚拟用户数来实现特定的点击率,请选择每秒点击、每分钟点击、每小时点击或每天点击。
- 计划表:在持续字段中输入新值。天数最大值为 30,小时最大值为 23,分钟最大值为 59,秒数最大值为 59。
- 分配:从以下选项中选择发布的类型:
- 线性增加场景模拟随时间线性增加的负载。这对于容量测试很有用,可以帮助您确定可伸缩性。
- 稳定的负载场景模拟一段时间内稳定的用户负载。这对于耐久性测试很有用,可以帮助您确定性能是否随时间下降。
- Bell 场景模拟了典型的每日用户分布(凌晨后立即以最低点开始,早晨逐渐上升,中午的时候达到峰值,下午逐渐下降,然后在一天结束时返回最低点)。这对于使用率测试很有用,可以确定正常负载模式下是否会发生性能问题。
- 缓存测试场景模拟了随时间变化的负载。这可以帮助您确定负载降低时是否释放资源。还可以确定整体性能是否会随时间降低。
- 在性能监控器面板中,根据需求配置性能监控器,然后点击下一步。
- 关于性能监控器的更多信息,请参阅添加内建监控器。
- 在服务质量面板中,根据需求自定义指标,然后点击下一步。
- 100% 成功:随后的请求消息测量百分比必须精确到 100%。
- 快速的点击率:负载测试期间实现的吞吐量必须高于定义的水平。
- 低服务器时间:验证其平均服务时间是否低于特定的临界值。
- 无失效问题:负载测试期间发生的失败总数必须为 0。
- 低执行时间:验证其平均执行时间是否低于特定的临界值。
关于服务质量的更多信息,请参阅自定义场景的服务质量指标。
- 在肉机面板中,根据需求配置远程机器,然后点击下一步。
- 可以添加或移除远程机器,也可以选择高流通量禁用掉测试响应验证。
- 有关从机的详情,请参阅自定义场景的服务质量指标。
- 在其他选项面板中,请根据需求自定义选项,然后点击完成。
- 立即开启 Load Test:选择此选项可在 Load Test 配置向导中点击了完成按钮后立即开始负载测试。
- 记录图表数据和错误细节:完成负载测试后,选择该选项,Load Test 会创建一个详细的场景报告。关于详细报告的详情,请参阅详细报告。启用记录图表数据和错误细节后,以下选项可供选择:
- 记录第一个:启用并在文本字段中输入一个数字,以记录指定的第一个错误细节。如果产生大量错误,该选项有助于防止详细报告文件增长到无法管理的大小。默认情况下,记录前 300 个错误细节。
- 记录所有:启用以记录详细报告中的所有错误细节。
- 记录个体点击:启用以记录单个点击并让 Load Test 完成负载测试之后创建一个直方图作为详细报告的一部分。您还可以选择在详细报告中以图形和表格形式显示单个点击。
如果启用了立即开启 Load Test 选项,Load Test 将根据特定场景设置、关联测试套件配置以及机器设置运行负载测试。如果未启用立即开启 Load Test 选项,左侧 GUI 面板中会出现 Load Tests 选项卡,但是不会运行负载测试。
运行负载测试
负载测试与 SOAtest .tst 项目或 jar 文件关联后,可以使用当前的负载测试场景(钟形曲线、缓冲测试、线性增加或稳定负载)或者在 Load Test 中创建的任何自定义场景进行负载测试。
如果您有要进行负载测试的项目,则将启用 Load Test 工具栏按钮:
运行负载测试,只需点击工具栏中的 Load Test,然后完成确认场景对话框,说明要使用的场景。选择场景时需考虑以下几点:
- Bell 场景模拟了典型的每日用户分布(凌晨后立即以最低点开始,早晨逐渐上升,中午的时候达到峰值,下午逐渐下降,然后在一天结束时返回最低点)。这对于预期使用测试很有用,可以确定正常负载模式下是否会发生性能问题。
- Buffer Test 场景模拟了随时间变化的负载。这可以帮助您确定负载降低时是否释放资源。还可以确定整体性能是否会随时间降低。
- 线性增加场景模拟随时间线性增加的负载。这对于容量测试很有用,可以帮助您确定可伸缩性。
- 稳定的负载场景模拟一段时间内稳定的用户负载。这对于耐久性测试很有用,可以帮助您确定性能是否随时间下降。
Load Test 将运行基于特定场景设置、关联虚拟用户配置文件以及机器设置的负载测试。如果您未自定义设置,则 Load Test 会在本机上运行测试和创建虚拟用户。
提示:停止测试
如果指定持续时间停止之前想停止测试,请点击工具栏中的停止。Load Test 会停止创建虚拟用户,并打开正在停止对话框。如果不进行后续操作,Load Test 将允许每个在线的虚拟用户完成当前正在执行的测试。
如果您希望 Load Test 立即停止测试,请点击强制终止。请注意,如果选择强制终止选项,则停止的虚拟用户的结果将不包括在主负载测试结果中,负载测试结果可能会变得不准确或具有误导性。
监控测试过程
Load Test 在测试期间和测试之后显示测试过程数据。另外,它在测试完成后会显示测试结果。
Load Test 记录以下测试过程详情:执行细节、执行状态和 Load Test 错误。
查看执行详情
负载测试开始后,立即在右侧 GUI 面板的 Load Test 进度选项卡的图表选项卡中显示负载测试详细信息。这个图表选项卡允许您查看与正在进行的负载测试有关的图形数据。
可以通过右键点击图表选项卡,然后选择其中一个可用的布局选项,以更改显示的图形的数量和布局。
图表选项卡图例中显示以下图形:
- 测试开始率:选择该选项以在图表中显示随时间推移开始测试的比率。
- 测试完成率:选择该选项以在图表中显示随时间推移完成测试的比率。
- 测试错误率:选择该选项以在图表中显示随时间推移测试错误的比率。
- 虚拟用户:选择该选项以在图表中显示随时间推移虚拟用户的数量。
- 最小执行时间:选择该选项以显示负载测试的最短执行时间。
- 最长执行时间:选择该选项以显示负载测试的最长执行时间。
- 平均执行时间:选择该选项以显示负载测试的平均执行时间。
- 监控器参数:选择该选项以显示从添加到 Load Test 树监控器节点的任何 SNMP 或 Windows 监控器收集的数据。监控器参数的名称基于监控器的“主机”和“图表标题”值。上述截屏中:
- CPU 图标显示了本机的 CPU 使用率。
- MemAvailMB 显示了本机可用内存(MB)。
- 例如,如果添加了一个监控器并键入“
ox
”到主机字段,“SNMP TCP Established
”到图表标题字段,则负载测试期间您会在图表选项卡图例中看到一个 ox SNMP TCP Established 图表。有关监控器参数的更多信息,请参阅使用监控器。
自定义执行详情
除了从图表选项卡图例中的选项中进行选择之外,还有多种其他方法可以操作负载测试运行时在图表选项卡中显示的详情:
若要过滤显示的图表数据:
- 请从图表选项卡顶部的下拉菜单中进行选择。显示在图表选项卡中的负载测试详情可通过机器,配置文件,以及测试来过滤。
若要将报告的 Y 轴从默认线性刻度更改为对数刻度(反之亦然):
- 如果您想使用对数刻度,请启用日志范围。使用对数刻度可以在同一图形上看到多条曲线的形状(即使显示的值彼此相距很远)。例如,如果总加载时间介于 1000 毫秒到 200 毫秒之间,并且用户数量介于 10 个到 20 个,在图表使用线性刻度时您将无法看到用户值(图形将是一条接近于 0 的直线)。如果使用对数刻度,您将看到加载时间值和用户值。
- 如果您想使用线性刻度,请禁用日志范围。
若要使用指定颜色填充图表区,请启用填充图表地区。
若要自定义负载测试过程图形颜色:
- 右键点击图表选项卡图例中所需栏并选择改变颜色。打开选择颜色对话框。
- 根据对话框需求操作配色方案,然后点击 OK。
若要在负载测试运行时动态修改虚拟用户数或配置权重:
- 从 Load Test 树的场景节点中选择当前场景。右侧 GUI 面板中显示用户和配置文件选项卡,其中用户选项卡为选中状态。
选项卡灰显部分表示负载测试的经过时间。您不能修改已变灰的图形曲线的任何部分。 - 选择用户选项卡,并根据需求通过选择垂直刻度菜单,点击更多点和较少点,或鼠标拖放曲线来修改图形曲线。在进行负载测试时,您无法更改其持续时间。
- 选择用户配置选项卡,并根据需求通过选择垂直刻度菜单,点击更多点和较少点,或鼠标拖放曲线来修改图形曲线。在进行负载测试时,您无法更改其持续时间。
关于自定义用户或配置文件选项卡的更多信息,请参阅自定义测试套件场景 - 前往窗口> 加载测试进度以返回 Load Test 进度图表。
测试完成后,若要查看执行详情:
- 前往窗口> 加载测试进度。
- 然后点击图表选项卡。
查看执行状态
测试执行期间,您可以随时查看正在运行的虚拟用户的执行状态信息(配置文件和当前执行状态)。测试执行期间每 3 秒更新一次执行状态信息:
若要在测试进行中查看执行状态信息:
- 请点击右侧 GUI 面板中的 Snapshot 选项卡。
测试完成后,若要查看执行状态信息:
- 前往窗口> 加载测试进度。
- 然后点击 Snapshot 选项卡。
查看 Load Test 错误
如果 Load Test 在测试执行期间遇到错误(例如,由于远程计算机无法运行 Load Test 服务器而导致测试无法进行),那么它会在状态栏显示一个橙色的感叹号图标。
若要查看错误信息:
- 请点击感叹号图标。
Load Test 还会在消息报告中打印出执行错误的日志。该选项和报告只在 Load Test 在测试执行期间遇到错误时才可用。测试完成后,若要查看此报告:
- 请在 Load Test 报告视图框中选择消息。
另外,您可以在测试执行期间或测试执行之后查看模拟详情(例如,有关访问远程测试机器、线程中断等问题的信息)。
若要在测试进行中查看这些信息:
- 请点击右侧 GUI 面板中的日志选项卡。
测试完成后,若要查看模拟详情,
- 前往窗口> 加载测试进度。
- 然后点击日志选项卡。
日志选项卡开着的任何时候,您都可以设置该控制台的日志级别(最详细为警告设置,最简单为错误设置)以及缓冲区高度。
处理测试结果
您可以在 Load Test 结果窗口查看负载测试结果。有关访问和解释可用的 Load Test 报告的详细信息,请参阅查看和自定义负载测试结果。
配置 JVM 垃圾回收器和内存选项
Load Test 性能(在某些情况下,时间测量的准确性)可能取决于 JVM GC 设置以及可用于 JVM 的内存量。
建议每个 Load Test 进程至少有 4 GB 的系统内存。Load Test 进程 JVM 内存大小由 Load 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。