本主题解释如何执行负载测试。在本章节中:
关于 Load Test 项目
启动负载测试之前,需要创建一个负载测试项目,该项目可以保存在 .lt 文件。
负载测试项目可以引用 SOAtest .tst 文件(包含要负载测试的功能测试,和/或要导入的任何现有负载测试配置),也可以引用 jar 文件。
如果引用的 .tst 文件或 .jar 文件发生变化,则这些变更也将与负载测试项目相关联。
- 若要保存负载测试项目:单击 Save 工具栏按钮,或选择 File> Save / File> Save As。
若要打开一个负载测试项目:
- 选择 File> Open。
导入现有 SOAtest 负载测试
若要从 SOAtest .tst 文件导入现有负载测试:
- 选择 File> Open。
- 选择合适的 .tst 文件。
然后将负载测试配置和功能测试导入到 Load Test 工具中。随后,将会根据需求,自动配置负载测试项目。“component archive”类型将设置为“Parasoft SOAtest Component”,导入的负载测试配置中的 .tst 文件将设置为当前组件配置面板中(通过选择主要的 Profiles 节点可获得)的“SOAtest 项目”,并且合适的测试将被映射到配置文件中。
可以打开此类项目后选择并运行负载测试场景。不要求其它配置,但是需要按照以下部分的描述调整配置:
导入现有 WebKing 负载测试
若要从 WebKing .tst 文件导入现有负载测试:
- 将此 .tst 文件导入 SOAtest(File> New> Project from Existing SOAtest or WebKing Test Suites)。
- 打开负载测试透透视图(Window> Open Perspective> Other> Parasoft Load Test)。
- 按照 SOAtest 用户指南中的负载测试章节所描述为负载测试配置并验证测试套件。
- 打开 Parasoft 负载测试
- 选择 File> Open。
- 选择合适的 .tst 文件。
然后将负载测试配置和功能测试导入到 Load Test 工具中。随后,将会根据需求,自动配置负载测试项目。“component archive”类型将设置为“Parasoft SOAtest Component”,导入的负载测试配置中的 .tst 文件将设置为当前组件配置面板中(通过选择主要的 Profiles 节点可获得)的“SOAtest 项目”,并且合适的测试将被映射到配置文件中。
可以打开此类项目后选择并运行负载测试场景。不要求其它配置,但是需要按照以下部分的描述调整配置:
创建用于 SOAtest 功能测试的负载测试
教程
关于如何为服务和 web 功能测试创建负载测试的演示,请查阅 创建并执行负载测试(适用于 Web 和/或服务功能测试)。
若要为 SOAtest 功能测试场景创建负载测试:
- 如果功能测试场景包含 Web 功能测试,则按照 SOAtest 用户指南中的负载测试章节所描述为负载测试配置并验证测试套件。
- 在 Parasoft Load Test 工具中,执行以下步骤之一:
- 若要创建新的负载测试项目:
- 选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
- 选择 SOAtest,然后按照 Completing the Load Test Configuration Wizard中所描述完成负载测试配置向导。
- 若要向现有负载测试项目添加功能测试:打开该负载测试文件(File> Open)。
重要项:指定要用于负载测试的功能测试
运行负载测试前,必须首先指出使用哪个 SOAtest 功能测试进行负载测试。可以在两个地方这样做:
• 在负载测试配置向导的 VU 配置文件页面。
• 在一个 Profile> [Virtual User] 配置面板。
- 若要创建新的负载测试项目:
- (可选项)选择负载测试树中顶部 Profiles 节点,然后根据需求自定义环境、数据源选项和设置/拆卸选项。
- 有关环境配置的更多详情,请查阅 Configuring Setup/Teardown Test Execution。
- 有关数据源选项的更多详情,请查阅 Configuring Data Source Usage。
- 有关设置/拆卸选项的更多详情,请查阅 Configuring Setup/Teardown Test Execution。
- (可选项)根据需求调整其他设置。有关更多详情信息,请查阅:
创建由 JUnit 测试驱动的负载测试
若要在 jar 文件中创建由 JUnit3 或 JUnit4 驱动的负载测试:
- 进行下列其中一项操作:
- 若要创建新的负载测试项目:
- 选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
- 选择 JUnit Runnable,然后按照 Completing the Load Test Configuration Wizard中所描述完成负载测试配置向导。
- 若要向现有负载测试项目添加 JUnit-driven 测试:打开该负载测试文件(File> Open)。
- 若要创建新的负载测试项目:
- 在负载测试树中选择顶部 Profiles 节点,然后完成该配置面板:
- 单击 Select。
- 选中 Built-in 按钮后,选择 JUnit Runnable。
- 单击 Finish。
- 在打开的配置面板中,提供要使用的 JUnit 测试的更多详情:
- 在下表中单击 Add ,然后指定 JAR 归档文件,负载测试应该在其中查找 JUnit 测试类及其依赖项。
- 在上表中单击 Add ,然后指定要使用的 JUnit 测试类。指定 JUnit 类名后, Load Test 工具检查类是否存在于指定的类路径元素中。类表的 Class found 列显示是否找到该类。
- 如果类路径元素变更,可以单击 Verify All 进行重新检查。。
- 在 Test object use 框(指向同一个面板的顶部)中,选择当用这些测试加载测试时要使用的模式。
- Virtual users create test object(s):在该模式中,每个虚拟用户创建一个 JUnit 类实例:然后,虚拟用户根据该虚拟用户所属配置文件中的配置执行 Junit 测试对象的测试方法。如果您的 JUnit 方法通过 Sockets 或其他远程对象访问测试外部对象或端点,推荐使用该模式。
- Virtual Users share test object(s):在该模式中,所有负载测试处理的虚拟用户共享一个 JUnit 对象。所有虚拟用户将调用这个 JUnit 对象的方法。该模式可用于 JUnit 对象的并发性测试。
例如,您可以编写 JUnit 测试,它测试您编写的 MyCollection 对象的操作。可以使用此模式对合适的 JUnit 测试进行负载测试,以测试 MyCollection 类的并发性问题。在这种情况下,根据经验,应该使用可以在机器上配置的虚拟用户或每秒点击率的最大数来运行负载测试;它将最大化运行 JUnit 时并发放入级别。将负载测试场景的随机化类型设置为“Uniform”。
- 在下表中单击 Add ,然后指定 JAR 归档文件,负载测试应该在其中查找 JUnit 测试类及其依赖项。
- 配置新的或者默认的配置文件,以便从 jar 文件运行所需的操作。有关更多详情,请查阅 Customizing Profiles 。
- 适用于 JUnit 3: 可以选中所有 test* 方法(以小写‘test’开头的方法)。
- 适用于 JUnit4:可以选择将由属于该配置文件的虚拟用户运行的特定测试方法。可以选中所有带有 @Test (@org.junit.Test) 注解的方法。
- (可选项)如果希望使用设置和/或拆卸方法,请将它们配置如下:
- 适用于 JUnit 3:JUnit 3 类可以有
setUp()
和tearDown()
方法,它们在测试执行前后运行。这些方法由 Load Test 工具的 JUnitRunnable 组件调用,方法如下(取决于测试执行模式):- 在虚拟用户创建测试对象模式下:将在创建虚拟用户时调用 JUnit 对象的
setUp()
方法。在虚拟用户运行完其所有计划的测试之后,在销毁测试之前,调用tearDown()
方法。 - 在虚拟用户共享测试对象模式下:在负载测试启动前调用 JUnit 对象的
setUp()
方法。在负载测试停止后调用tearDown()
方法。
- 在虚拟用户创建测试对象模式下:将在创建虚拟用户时调用 JUnit 对象的
- 适用于 JUnit 4:JUnit 4 使用
@org.junit.Before
和@org.junit.After
annotations 代替setUp()
和tearDown()
命名规范。根据测试执行模式,将调用 JUnit4 的@Before
和@After
方法,其调用方法与调用 Junit3 测试的setUp()
andtearDown()
方法相同(如上所述)。
- 适用于 JUnit 3:JUnit 3 类可以有
- (可选项)根据需求更改其他设置。有关更多详情信息,请查阅:
重新加载类路径元素
如果您对任何 .jar 类路径元素进行了修改,则需要重新加载组件,才能使这些更改生效。如要实现这一点,只需单击 Reload 按钮。
请确保在重新加载组件之前保存项目;未保存项目的更改将在重新加载组件时丢失。
创建由 Jar 文件驱动的负载测试
教程
有关如何创建由 jar 文件驱动的负载测试演示,请查阅 创建自定义 Load Test 组件。
若要创建由可在 jar 文件中使用的自定义组件驱动的负载测试:
- 进行下列其中一项操作:
- 若要创建新的负载测试项目:
- 选择 File> New> Load Test Project 或单击 New Load Test 工具栏按钮。
- 完成 Load Test Configuration 向导,如 Completing the Load Test Configuration Wizard中所描述。
- 若要向现有负载测试项目添加 jar 文件驱动的测试:打开该负载测试文件(File> Open)。
- 若要创建新的负载测试项目:
- 选择负载测试树中的 Profiles 节点,然后按照如下步骤完成该配置:
- 单击 Select。
- 选择 Local 按钮。
- 单击 下一步。
- 指定合适的 JAR 归档文件。可以从下拉列表中选择内置的组件,也可以浏览到一个有效的 Parasoft 负载测试 .jar 组件存档。
- 单击 完成。
- 配置新的或者默认的配置文件,以便从 jar 文件运行所需的操作。有关更多详情,请查阅 Customizing Profiles 。
- (可选项)根据需求调整其他设置。有关更多详情信息,请查阅:
根据组件实现的不同,组件特定的控件可能会显示在组件配置面板中。对于非内置的组件,将同时显示 Deployment 和 Configuration 选项卡。Deployment 选项卡将显示组件部署属性(如,主组件类的 Java 类名和组件验证消息)。
内置组件的部署详情可以通过选择 File> Customize Preferences,然后打开 Parasoft 负载测试首选项页面的 Components 页进行查看。
完成负载测试配置向导
若要使用负载测试配置向导:
- 在原始向导面板中,指定哪个 .tst 文件包含要用于负载测试的 SOAtest 测试,然后单击 Next。
- 如果在特定 .tst 文件中检测到一个现有负载测试配置,则进行其中一项以下操作:
- 若要使用现有配置,请选择 Existing Configuration ,然后单击 Finish。
- 若要创建新的配置,请选择 New Configuration ,然后单击 Next。
- 在 VU Profiles 面板中(仅适用于 SOAtest 组件),请选择表示要使用的测试套件的多选框,然后单击 Next。
- 每个选择的测试套件将被分配到一个不同的虚拟用户配置文件。
- 在 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 场景模拟随时间变化的负载。它帮助您确定在负载增长时,是否释放资源。还帮助您确定整体性能是否随时间下降。
- 在 Performance Monitors 面板中,根据需求配置性能监视器,然后单击 Next。
- 有关性能监视器的更多信息,请查阅 Adding Built-In Monitors。
- 在 Quality of Service 面板中,根据需求自定义度量,然后单击 Next。
- 100% Success:随后的请求消息测量百分比必须精确到 100%。
- Fast Hit Rate:负载测试期间实现的吞吐量必须高于定义的水平。
- Low Server Time:验证其平均服务时间是否低于特定的临界值。
- No Failures:负载测试期间发生的失败总数必须为 0。
- Low Execution Time:验证平均执行时间是否低于指定的临界值。
有关服务质量的更多信息,请查阅 Customizing QoS Metrics for Scenarios。
- 在 Slave Machines 面板中,根据需求配置远程机器,单后单击 Next。
- 可以添加或删除远程机器,也可以选择 High Throughput 禁用测试响应验证。
- 有关 siava 机器的更多信息,请查阅 Customizing QoS Metrics for Scenarios。
- 在 Other Options 面板中,根据需求自定义选项,然后单击 Finish。
- Start Load Test immediately: 选择该选项,单击 Load Test Configuration 向导中的 Finish 按钮后立即开始负载测试。
- Record graph data and error details:选择该选项,让 Load Test 工具在完成负载测试后创建详细的场景报告。有关详细报告的更多信息,请查阅 Detailed Reports。选择 Record graph data and error details 多选框之后,可使用以下选项:
- Record first:选择此单选框按钮并在文本字段中输入一个数字,以记录指定的第一个错误详情。如果产生大量错误, Record first 选项有助于防止详细报告文件增长到无法管理的大小。默认情况下,记录前 300 个错误详情。
- Record all:选择此单选框按钮,以记录详细报告中的所有错误详情。
- Record individual hits: 选择此按钮,以记录单个点击并让 Load Test 工具完成负载测试之后创建一个直方图作为详细报告的一部分。您还可以选择在详细报告中以图形和表格形式显示单个点击。
如果选中了 Start Load Test immediately 选项,则 Load Test 工具将根据指定的场景设置以及相关联的测试套件配置文件和机器设置,运行负载测试。如果未选择 Start Load Test immediately 选项,则负载测试选项卡将显示在左侧 GUI 面板汇总,但不会运行负载测试。
运行负载测试
一旦负载测试与 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:选择该选项以显示负载测试的最大执行时间。
- Avg. Execution Time:选择该选项以显示负载测试的平均执行时间。
- Monitor Parameters:选择该选项以显示从添加到负载测试树的 Monitors 节点的任何 SNMP 或 Windows 监视器收集的数据。监视器参数的名称基于监视器的“主机”和“图表标题”值。在上面的截图中:
- CPU 图表显示本地主机的 CPU 利用率。
- MemAvailMB 显示本地主机的可用内存(以 MB 为单位)。
- 例如,如果添加了一个监视器,并为 Host 输入“
ox
”,为 GraphTitle 输入“SNMP TCP Established
”,那么您将在负载测试过程中看到一个 ox SNMP TCP Established 的图,该图 Graph 选项卡图图例中。有关监视器参数的更多详情,请查阅 使用监视器。
自定义执行详情
除了从 Graph 选项卡图例中进行选择外,还有很多其他方法可以让您在运行负载测试时操作 Graph 选项卡中显示的细节:
若要过滤显示的图表数据:
- 请从 Graph 选项卡顶部的下拉菜单中进行选择。显示在 Graph 选项卡中的负载测试详情可通过 Machines, Profiles,以及 Tests来过滤。
若要将报告的 Y 轴从默认线性比例尺更改为对数比例尺(反之亦然):
- 如果希望使用对数比例尺,请选择 Log Scale 多选框。对数比例尺允许您在同一图形上看到多条曲线的形状(即使显示的值彼此相距很远)。例如,如果总加载时间介于 1000 毫秒到 200 毫秒之间,并且用户数量介于 10 个到 20 个,在图表使用线性比例尺时您将无法看到用户值(图形将是一条接近于 0 的直线)。如果使用对数比例尺,您将看到加载时间值和用户值。
- 如果希望使用对数比例尺,请选择 Log Scale 多选框。
若要使用指定颜色填充图表区,请选择 Fill graph areas 多选框。
若要自定义负载测试进展图形颜色:
- 右键单击 Graph 选项卡图例中所需栏,并从快捷菜单中选择 ChangeColor 。将打开 Selectcolor 对话框。
- 根据对话框需求操作配色方案,然后单击 OK。
若要在运行负载测试时动态更改虚拟用户数或配置文件权重:
- 请从负载测试树的 Scenarios 节点选择当前场景。 Users 和 Profiles 选项卡以及选定的 Users 选项卡将显示在右侧 GUI 面板。
选项卡灰色的部分表示负载测试运行的时间。无法对图标曲线的任何灰色部分进行更改。 - 可以从 Vertical scale 下拉菜单选择,单击 More points 和 Less points 按钮,或者使用鼠标对曲线进行拖拽,选择用户(Users)选项卡,并根据需求修改图形曲线。 在负载测试过程中,无法更改其持续时间。
- 可以从 Vertical scale 下拉菜单中选择,单击 More points 和 Less points 按钮,或者使用鼠标对曲线进行拖拽,选择 Profiles 选项卡,并根据需求修改其图形曲线。在负载测试过程中,无法更改其持续时间。
关于自定义 Users 或 Profiles 选项卡的更多信息,请查阅 Customizing Test Suite Scenarios - 通过选择 Window> Load Test Progress返回到负载测试进展图表。
选择若要在测试完成后查看执行详情:
- 选择 Window> Load Test Progress。
- 单击 Graph 选项卡。
查看执行状态
可以查看测试执行期间随时运行的虚拟用户的执行状态信息(配置文件和当前执行状态)。在测试执行期间,每 3 秒更新一次执行状态信息:
若要在测试过程中查看执行状态信息:
- 单击右侧 GUI 面板的 Snapshot 选项卡。
若要在测试完成后查看执行状态信息:
- 选择 Window> Load Test Progress。
- 单击 Snapshot 选项卡。
查看负载测试错误
如果 Load Test 工具在测试执行期间遇到错误(例如,如果由于远程机器无法运行负载测试服务器而致使无法在该机器上启动测试),则会在状态栏显示一个橙色的感叹号图标。
若要查看错误信息:
- 单击感叹号图标。
Load Test 工具还会将测试执行错误记录在消息报告中。只有在测试执行期间, Load Test 工具遇到错误时,该选项和报告才可用。若要在测试完成后,查看该报告:
- 请在负载测试报告的 Views 框中选择 Messages 。
此外,您可以查看测试执行期间或测试执行后的模拟详情(例如,访问远程测试机器、中断线程、等等的问题信息)。
若要在测试过程中查看该信息:
- 单击右侧 GUI 面板中的 Log 选项卡。
若要在测试完成后查看模拟详情,
- 选择 Window> Load Test Progress。
- 单击 Log 选项卡。
任何打开 Log 选项卡的时候,您都可以为控制台设置日志级别( warn 设置是最冗长的; error 是最不冗长的)以及缓冲高度。
使用测试结果
可以在负载测试(Load Test)结果窗口查看负载测试结果。有关访问并解释可用负载测试报告的更多详情,请查阅 审查和定制负载测试结果。
配置 JVM GC 和内存选项
Load Test 性能(和在某些环境中,时间测量的准确性)可能取决于 JVM GC 设置和 JVM 可用的内存大小。
建议每个负载测试进程至少有 4GB 的系统内存。 负载测试进程 JVM 内存大小由负载测试启动器或脚本自动配置。若要明确配置负载测试进程的 JVM 可用的最大内存,可以从命令行将 -XmxNNNNM 参数传递给负载测试进程,其中 NNNN 是内存的大小(以 MB 为单位)。在 Windows 系统上,在参数前加上 -J;例如:“lt -J-Xmx4096M”.
为了优化性能,Parasoft 负载测试使用 JVM 参数 "-XX:+UseParallelGC” 指定的并行年轻一代垃圾回收器。如果有必要的话,它可以使用命令行参数 "-XX:-UseParallelGC” 关闭。如果要在 Windows 系统上使用该参数,则在参数前加上 -J(紧跟可执行文件的名称)。例如:loadtest.exe -J-XX:-UseParallelGC。若要在负载测试 JVM 中启用并发标记和清除 GC,则必须明确禁用 UseParallelGC 选项;例如lt -J-XX:-UseParallelGC -J-XX:+UseConcMarkSweepGC。