本主题揭示了如何从命令行界面运行负载测试。
在远程机器上启动负载测试服务器
如果你将在远程机器上运行测试,负载测试服务器必须在这些机器上运行。
Windows
若要在 Windows 机器上启动负载测试服务器,请按以下格式输入命令:
Windows: lt -loadtestserver [portnumber]
例如:lt -loadtestserver 10095
注意
portnumber
应该替换为服务器正在监听的本地机器上的端口。对于命令,请输入适合你的测试设置的任何端口号。
Linux/Mac
若要在 Linux/Mac 机器上启动负载测试服务器,请按以下格式输入命令:
loadtest -loadtestserver [portnumber]
例如:loadtest -loadtestserver 10095
注意
portnumber
应该替换为服务器正在监听的本地机器上的端口。对于命令,请输入适合你的测试设置的任何端口号。与不同网络上的负载测试机器一起工作
负载测试控制机器(在 GUI 模式以及从你控制负载测试的地方运行)可以与不同网络上的负载测试服务器进行通信 如果连接这些网络的网络设备允许在正在监听的负载测试服务器的端口号上的通讯。
例如,如果在网络 A 上运行你的负载测试控制器,并通过网络 B 上的“lt -loadtestserver 10095”命令在端口号 10095 上启动负载测试服务器,你需要确保介于网络 A 和网络 B 之间在端口 10095 上的通信不受网络设备的限制。允许该端口的任何 TCP 流量交换。告知系统或网络管理员有关网络配置的问题。
运行负载测试
如要执行测试,你需要创建一个脚本,这个脚本指定了要开启的 .lt
文件以及如何运行测试,然后在希望运行测试时调用该脚本。
创建脚本
若要创建脚本,请创建一个文本文件(我们将其称为 your_command_file
),它包含以下格式的命令:
open FilePath loadtest [-version] [-localSettings path_to_local_settings_file] [-env environment_name] [-minutes number] [-vus number | -hps number] [-teamServer path_inside_team_server] [-report path_to_report_file] [-html html_directory] ScenarioName
loadtest 命令使用指定的场景运行测试套件负载测试。有关 loadtest 命令选项的列表和描述,请查阅 Load Test Command Reference ,如下表。
在脚本中使用变量
你可以在脚本中声明并使用变量。可采取以下方式声明变量:
var VariableName1 = VariableValue var VariableName2 = "Variable Value with Spaces"
已声明的变量可以通过以下方式重新分配新名称:
var VariableName1 = NewVariableValue
示例脚本
这是一个示例脚本(脚本中的注释前面有一个“#”符号):
# # Using script commands # var report-home = C:\CONTINUOUS_LOAD_TEST\ENTERPRISE_LOAD_TEST var minutes = 1 var scenario = "Steady Load" var base = tests/loadtester/accuracytest/tests var category = Accuracy var test-name = 1-Profile-HPS open ${base}/${test-name}.lt loadtest -minutes ${minutes} -allReports ${report-home}/%d/${category}/${test-name} ${scenario}
运行脚本
在启用负载测试服务器时调用该脚本:
- 通过输入以下格式之一的命令,从命令行中调用负载测试
- Windows:
lt.exe -cmd -run your_command_file
- Linux/Mac:
loadtest -cmd -run your_command_file
- Windows:
请注意, -cmd
参数在命令行模式下启用负载测试,而 -run
参数执行指定的负载测试脚本。两个参数都要求从命令行中运行脚本。
负载测试命令引用
以下命令允许你启动负载测试服务器并运行负载测试:
负载测试启动命令
在 Windows 命令提示符或 Linux shell 中使用这些命令。
命令 | 说明 |
---|---|
Windows Linux/Mac | 在指定端口号上启动负载测试服务器。若要在端口 8999 上启动负载测试服务器,则你需要在命令行参数中指定端口号,例如:
|
负载测试脚本命令
命令 | 选项 & option arguments | 说明 |
---|---|---|
var | 格式: 声明变量名并为其赋值。使用 ${variable_name} 语法获取变量值。 | |
open | 格式: 在负载测试中打开指定的项目。加载项目之后,使用 loadtest 命令。 | |
loadtest | 格式: 使用指定的场景和选项运行测试套件负载测试。有关更多详情,请查阅以下行。 | |
-localSettings path_to_local_settings_file | 指定到本地设置文件的路径,该文件包含配置和首选项参数(请查阅 Local Settings Files)。 | |
-env environment_name | 设置活动环境。环境是负载测试使用的 SOAtest 项目的一部分。 | |
-minutes number | 指定以分钟为单位的测试持续时间。如果在此命令中指定测试持续时间,它将覆盖场景中指定的测试持续时间。 | |
-vus number | 将负载测试配置中每台机器的虚拟用户数量设置为给定的数量。执行模式切换为“加权概要文件”模式,负载测试配置中的每台机器都配置为运行具有指定数量虚拟用户的稳定负载。 | |
-hps number | 将负载测试配置中每台机器的每秒点击数量设置为给定的数量。执行模式切换为“加权概要文件”模式,负载测试配置中的每台机器都配置为运行具有指定每秒点击数量的稳定负载。 | |
-teamServer path_inside_team_server | 按照指定的路径向团队服务器发送必要的报告。使用在本地设置文件中指定的团队服务器。如果没有指定本地设置,则使用负载测试首选项中指定的团队服务器。有关更多详情和示例,请查阅 负载测试连续体 。-tcm path_inside_team_ser ver 已弃用,但仍支持。 | |
-report path_to_report_file | 指定要创建具有给定名称的二进制报告 | |
-html html_directory | 指定要在指定目录中创建具有给定名称的 HTML 报告。 | |
-allReports reportsPath | 指定要在给定目录路径下创建二进制、XML 和 HTML 报告。 | |
-trimReportSeconds headSeconds tailSeconds | 指定从 report* 开始到结束要进行修剪的持续时间(以秒为单位)。秒值必须是非负整数。如果 headSeconds 和 tailSeconds 值的总和大于报告的持续时间,则不应用 trim 操作。 | |
-trimReportPercentage headPercentage tailPercentage | 指定从 report* 开始到报告结束要进行修剪的持续时间(以相对于报表持续时间的百分比为单位)。百分比必须是非负整数。如果 headPercentage 和 tailPercentage 之和等于或大于 100,则不应使用 trim 操作。 |
*负载测试报告数据收集和保存大约每隔 3 秒。这个 trimReport…
命令将丢弃属于指定修剪间隔的所有报告集合点。由于报告集合点的时间和指定的修剪值可能不匹配,因此从报告开始和结束修剪的实际持续时间可能(在大多数情况下)超过命令行中指定的持续时间。从报告头部和尾部修剪的多余值不会超过数据收集间隔的持续时间。有关如何保存报告片段的详细信息,请参阅 Understanding Report Interval Selection。
本地设置文件
本地设置文件可以控制各种负载测试选项。你可以为不同的项目创建不同的本地设置文件,然后使用 -localSettings
脚本选项,指示应将哪个文件用于当前命令行测试。
如果在这个文件中指定了一个参数,它将覆盖负载测试首选项中指定的相关参数。如果在此文件中没有指定参数,则负载测试工具将使用首选项中指定的参数。如果负载测试首选项中没有相关参数,则将使用默认值设置。
如果希望使用默认设置,请从文件中删除或注释掉该设置。该文件包含名称/值对,并使用以下格式:
nameString=valueString
每个名称/值对必须位于单独的行上。使用散列“#”符号来注释名称/值条目。
示例
示例本地设置文件可能包含:
# This is a commment echo=false team.server.host=localhost team.server.port=18888 team.server.user= team.server.password=
可用设置
设置 | 说明 |
---|---|
echo=true|false | 如果为“true”,负载测试将把设置回显到控制台。默认状态为 true。如果使用此设置,则它必须是本地设置文件中的第一个条目。 |
| 在命令行模式下打开控制台日志。请参阅下面的 Console Logging 部分。默认是禁用的。 |
team.server.host=host_name | 团队服务器主机名。如果未指定此设置,则将使用负载测试首选项团队服务器设置。 |
team.server.port=port_number | 团队服务器端口号。如果未指定此设置,则将使用负载测试首选项团队服务器设置。 |
team.server.user=user | 团队服务器用户名。将此设置设置为空,以指定空用户名。如果未指定此设置,则将使用负载测试首选项团队服务器设置。 此团队服务器参数是可选的;大多数配置都不需要它。 |
team.server.password=password | 团队服务器密码将此设置设置为空,以指定空密码。如果未指定此设置,则将使用负载测试首选项团队服务器设置。 此团队服务器参数是可选的;大多数配置都不需要它。 |
控制台日志
控制台日志记录在测试运行时,以命令行模式提供负载测试状态信息。当启用控制台日志记录时(请参阅 console.log=enable
本地设置),应用程序将在控制台中打印主负载测试运行时参数。负载测试状态每 30 秒打印一行。其包含以下信息:
- 系统时间
- 完成率
- 完成的运行时秒数和总的运行时秒数
- 通过的总测试数和失败的总测试树
- 自上次日志以来的平均虚拟用户数量
- 自上次登录以来每秒平均点击次数
例如:
2011.04.21 17:54:56 MDT | 53% complete | 32/60 seconds | passed 245/failed 0 | avg. VUs 4 |avg. HPS 8