本主题介绍如何从命令行界面运行现有负载测试。章节目录:

运行负载测试

您可以通过 Load Test 命令行界面运行现有的负载测试(.lt)文件。Load Test 命令行运行一个脚本,该脚本指定打开哪些 .lt 文件以及如何运行测试。每次要运行测试时,请调用该脚本。 

创建脚本

创建一个使用 UTF-8 字符编码的纯文本文件,并添加运行负载测试的命令。系统可能使用另一种字符编码标准创建文本文件。如果在运行脚本时遇到了问题,请验证是否使用了正确的编码。请按以下格式编写脚本:

open <PATH-TO-LT-FILE>
loadtest <OPTIONS> <SCENARIO-NAME>

loadtest 命令使用指定的场景运行测试套件负载测试。有关可用 loadtest 命令选项的详细信息,请参阅 Load Test 命令参考

使用变量

您可以使用以下语法声明要在脚本中使用的变量:

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}

运行脚本

从命令行调用 Load Test 来运行脚本:

lt.exe -cmd -run <PATH_TO_YOUR_SCRIPT> // WINDOWS 
./loadtest -cmd -run <PATH_TO_YOUR_SCRIPT> // Linux and macOS

-cmd 参数会以命令行模式启动 Load Test。-run 参数会执行指定的 Load Test 脚本。两个参数都要求从命令行中运行脚本。

lt.exe -cmd -run <PATH_TO_YOUR_SCRIPT> // WINDOWS 
./loadtest -cmd -run <PATH_TO_YOUR_SCRIPT> // Linux and macOS

动态申请许可证

在命令行模式下运行 Load Test 时,Load Test 默认使用在 GUI 模式下配置的许可证。也可以使用 -licenseServer 选项从 Parasoft 许可服务器动态请求许可证。指定许可证服务器的 base URL,并使用 -licenseVus 选项指定许可证允许的虚拟用户数量。注意:如果 base URL 中未指明端口,则使用默认端口(HTTP 为 80,HTTPS 为 443)。

Windows
lt.exe -cmd -run <PATH_TO_YOUR_SCRIPT> -licenseServer <BASE_URL> -licenseUsername username -licensePassword password -licenseVus <INTEGER>
Linux 和 MacOS
./loadtest -cmd -run <PATH_TO_YOUR_SCRIPT> -licenseServer <BASE_URL> -licenseUsername username -licensePassword password -licenseVus <INTEGER>

示例

使用身份验证和编码密码请求 100-VU Load Test 许可证
-licenseServer https://licenseserver.mydomain.com -licenseUsername username -licensePassword abc0123456789def -licenseVus 100
使用字面量密码身份验证请求无限 VU Load Test 许可证
-licenseServer http://licenseserver:8080 -licenseUsername username -licensePassword password -licenseVus Unlimited
请求无需身份验证的基础 5-VU Load Test 许可证
-licenseServer https://licenseserver.mydomain.com:8443

在远程计算机上运行 Load Test

以服务器模式启动 Load Test 的远程实例,然后使用本地 Load Test 实例运行一个项目,该项目已配置为在远程服务器上运行测试,这样就可以通过命令行在远程计算机上运行负载测试。

在服务器模式下启动 Load Test

使用 -loadtestserver 标志并指定端口号,可远程运行 Load Test。端口为服务器正在监听的本地计算机端口。如果未指定端口,则使用默认端口 8189。 

Windows
lt -loadtestserver [PORT]
Linux 和 MacOS
./loadtest -loadtestserver [PORT]

配置远程项目

有关说明,请参阅在远程机器上运行负载测试

与不同网络上的负载测试机器一起工作

在 GUI 模式下运行并提供用于控制负载测试界面的计算机为 Load Test 控制器计算机。如果连接这些网络的网络设备允许在正在监听的负载测试服务器的端口号上的通讯,控制器可以与不同网络上的 Load Test 服务器进行通信。

例如,如果在网络 A 上运行您的 Load Test 控制器,并通过网络 B 上的“lt -loadtestserver 10095”命令在端口号 10095 上启动 Load Test 服务器,那么介于网络 A 和网络 B 之间在端口 10095 上的通信不会受网络设备的限制。允许该端口的任何 TCP 通讯报文交换。告知系统或网络管理员有关网络配置的问题。

负载测试命令引用

以下命令允许您启动 Load Test 服务器并运行负载测试:

Load Test 命令行选项

在 Windows 命令提示符或 Linux shell 中使用这些命令。

选项说明
-cmd以命令行模式启动 Load Test。要求在本地运行 Load Test。
-run指定要运行的 Load Test 脚本。要求在本地运行 Load Test。 
-help显示帮助信息。不运行测试。
-licenseServer <BASE_URL>指定 Parasoft 许可服务器的 base URL。默认情况下,Load Test 会从 GUI 中配置的服务器请求许可证,但该选项可让您动态请求许可证。可选项。
-licenseUsername <USERNAME>指定与 Parasoft 许可证服务器上的许可证相关联的用户名。如果未指定该参数,则不使用身份验证。可选项。
-licensePassword <PASSWORD/ENCODED_PASSWORD>指定与 Parasoft 许可证服务器上的许可证相关联的密码或编码密码。可以使用 soatestcli -encodepass 命令行选项对密码进行编码。如果未指定该参数,则使用空密码进行身份验证。可选项。
-licenseVus <VALUE>指定通过 -licenseServer 选项指定的服务器请求的许可证所允许的虚拟用户数量。您可以指定一个整数值,也可以针对无限虚拟用户许可指定 unlimited

-loadtestserver [PORT] 

除非指定了其他端口,否则在默认端口 8189 启动 Load Test 服务器。若要在端口 8999 启动 Load Test 服务器,则需要在命令行参数中指定端口号,例如:

lt.exe -loadtestserver 8999

-password <LONG_PASSWORD_STRING>指定要传递给 Load Test 的单机许可证。
-J<JVM_OPTION>

指定传递给 Load Test JVM 的其他 JVM 选项。(请注意,-J 与后面的选项之间没有空格)。

例如:

lt -J-Xmx4g -J-Xms2g

lt -J-Dcom.sun.management.jmxremote

负载测试脚本命令

命令选项 & option arguments说明
var

格式:var variable_name = variable_value

声明变量名并为其赋值。使用 ${variable_name} 语法获取变量值。

open

格式:open path_to_load_test_project_file

在负载测试中打开指定的项目。加载项目之后,使用 loadtest 命令。

loadtest

格式:loadtest [-settings path_to_local_settings_file] [-env environment_name] [-minutes number] [-vus number | -hps number] [-report path_to_report_file] [-html html_directory] [-allReports reportsPath] [-trimReportSeconds headSeconds tailSeconds][trimReportPercentage headPercentage tailPercentage]ScenarioName

使用指定的场景和选项运行测试套件负载测试。详情请参阅以下行。


-settings
path_to_local_settings_file
指定设置文件的路径,该文件包含配置和首选项参数(请参阅Settings Files)。

-env environment_name设置活动环境。环境是负载测试使用的 SOAtest 项目的一部分。

-minutes number指定以分钟为单位的测试持续时间。如果在此命令中指定测试持续时间,它将覆盖场景中指定的测试持续时间。

-vus number将负载测试配置中每台机器的虚拟用户数量设置为给定的数量。执行模式切换为“加权配置文件”模式,负载测试配置中的每台机器都配置为运行具有指定数量虚拟用户的稳定负载。

-hps number将负载测试配置中每台机器的每秒点击数量设置为给定的数量。执行模式切换为“加权配置文件”模式,负载测试配置中的每台机器都配置为运行具有指定每秒点击数量的稳定负载。

-report path_to_report_file指定要创建具有给定名称的二进制报告

-html html_directory指定要在指定目录中创建具有给定名称的 HTML 报告。

-allReports reportsPath指定要在给定目录路径下创建二进制、XML 和 HTML 报告。

-trimReportSeconds headSeconds tailSeconds指定从 report* 开始到结束要进行修剪的持续时间(以秒为单位)。秒值必须是非负整数。如果 headSecondstailSeconds 值的总和大于报告的持续时间,则不会应用 trim 操作。

-trimReportPercentage headPercentage tailPercentage指定从 report* 开始到报告结束要进行修剪的持续时间(以相对于报表持续时间的百分比为单位)。百分比必须是非负整数。如果 headPercentagetailPercentage 之和等于或大于 100,则不会应用 trim 操作。

*Load Test 报告数据的收集和保存间隔大约为 3 秒。trimReport 命令将放弃所有位于指定修剪间隔内的报告收集点。由于报告集合点的时间和指定的修剪值可能不匹配,因此从报告开始和结束修剪的实际持续时间可能(在大多数情况下)超过命令行中指定的持续时间。从报告头部和尾部修剪的多余值不会超过数据收集间隔的持续时间。有关如何保存报告片段的详细信息,请参阅理解报告间隔选择

设置文件

设置文件可以控制各种 Load Test 选项。您可以为不同项目创建不同设置文件,然后使用 -settings 脚本选项,指示应将哪个文件用于当前命令行测试。

如果在这个文件中指定了一个参数,它将覆盖 Load Test 首选项中指定的相关参数。如果在此文件中没有指定参数,则负载测试工具将使用首选项中指定的参数。如果负载测试首选项中没有相关参数,则将使用默认值设置。

如果希望使用默认设置,请从文件中删除或注释掉该设置。该文件包含名称/值对,并使用以下格式:

nameString=valueString

每个名称/值对必须位于单独的行上。使用散列“#”符号来注释名称/值条目。

可用设置

设置说明
echo=true|false如果为“true”,负载测试将把设置回显到控制台。默认状态为 true。如果使用此设置,则它必须是设置文件中的第一个条目。

console.log=enable

在命令行模式下打开控制台日志。请参阅下面的Console Logging部分。默认是禁用的。

控制台日志

控制台日志记录在测试运行时,以命令行模式提供负载测试状态信息。启用控制台日志记录时(请参阅 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
  • No labels