...
Table of Contents | ||
---|---|---|
|
关于自定义 Load Test 组件
Parasoft Load Test 功能可以通过创建自定义负载测试组件来扩展。Parasoft Load Test 充当负载测试组件或负载测试 bean 的容器。负载测试组件是一个功能核心,它定义了负载测试期间虚拟用户的行为。负载测试容器向组件提供以下服务:
...
可以通过扩展位于 com.parasoft.simulator.api
包中的 Load Test 组件 Java API 的 SimRunnable
类来创建负载测试组件。SimRunnable 表示可运行的 Simulator。Simulator 是 Load Test 容器的名称,它模拟多个虚拟用户活动。
构建组件示例
组件示例位于 SOATest/Load Test 安装程序的 examples\dev\components
文件夹中。simple-runnable-source.jar 和 socket-runnable-source.jar 压缩包包含本教程所述组件的源、配置和构建文件。您将需要将这些归档解压到 Load Test 组件项目目录,该目录必须手动创建。
创建一个 Load Test 组件项目目录
若要在 Load Test 安装之外创建组件项目目录,请执行以下操作:
- 将 simple-runnable-source.jar 复制到组件项目目录中,并解压组件源归档文件。
- 将 socket-runnable-source.jar 解压到
SocketRunnable
目录,该目录必须手动创建。每个源目录包含一个 component-build.xml ANT 构建脚本。 - 打开这个文件并确保
load.test.install.root
属性指向您的 SOAtest/Load Test 安装目录。 - 更改
load.test.jar.path
属性,使其指向<INSTALL-DIR>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root
目录中的 loadtest.jar 文件。
创建一个 SimpleRunnable 负载测试组件项目
若要在 Eclipse 中创建一个 SimpleRunnable 负载测试组件项目,请执行以下步骤:
...
Note | ||
---|---|---|
| ||
组件应该使用 Java 1.5 JRE 构建,最好使用 JRE 1.5.0_18。 每个示例项目中的 component-build.xml ANT 脚本的默认目标构建一个组件 jar 归档文件,该文件可以作为自定义或内置组件部署到 Load Test 中。如果使用 Eclipse 来编译此处描述的组件项目,请从 component-build.xml 脚本的 jar 目标中删除 compile 目标依赖项。 |
创建一个 SocketRunnable 负载测试组件项目
SocketRunnable 组件扩展了 SimpleRunnable 组件。首先编译 SimpleRunnable
,然后从 SimpleRunnable 根目录中将 main.jar 放入 SocketRunnable 项目的 lib
目录。
...
- 打开新建项目“New Project”向导,选择 Java Project,点击 Next。
- 选择 Create project from existing source,选择 SimpleRunnable 目录,然后点击 Next。
- 在 Source 选项卡中,确保默认输出文件夹设置为
SimpleRunnable/target/classes
。 - 打开 Libraries 选项卡并点击 Add External Jar。
- 添加
<
INSTALL-DIR>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root
目录中的 parasoft.jar 和 com.parasoft.api.jar 文件。 - 在 Libraries 选项卡中,确保
lib/jtidy-r820.jar
和lib/main.jar
在项目 classpath 上。 - 在 Eclipse 中,右键点击 component-build.xml 并选择 Run As> Ant Build 以创建组件 .jar 文件。
将示例组件加载/部署到 Load Test 中
组件可以作为外部存档加载到 Load Test 中,也可以作为内置组件部署。
从外部存档加载组件
若要从外部存档加载组件:
- 在 Load Test GUI 中选择 Load Test 配置树的配置文件节点。
- 在项目配置视图中,点击选择。
- 在选择组件归档文件对话框中,选择本地选项,点击下一步,然后选择您的负载测试组件压缩包文件。
- 点击完成。组件部署视图将如下所示。
如果组件验证失败,错误消息将显示在开发视图下方的表中。
将组件存档作为内置组件部署
若要将组件存档作为内置组件部署到负载测试应用程序中,请执行以下操作:
将组件 jar 压缩包放入
<INSTALL-DIR>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root /lt-components/built-in
文件夹。- 重启 Load Test。
- 前往文件 > 自定义首选项。您将在内置组件部署视图中看到组件部署细节,如下所示。
如果一个内建组件已经成功部署,那么它将在内建的下拉列表中的选择组件压缩包对话框中可用,如下图所示:
使用 Load Test 组件 API
可通过 Load Test 应用程序菜单栏的帮助 > API > 组件 API 获取 Load Test 组件 API 的 Javadoc 文档。
分析 SimpleRunnable 组件示例
本节将研究 SimpleRunnable 负载测试组件。
...
部署过程完成后,将调用 onDeploy 方法。onDeploy 方法从 .cfg 文件初始化组件,该文件包含在组件存档中。只有当组件存档文件在远程安装时不存在,或者其在主计算机和远程计算机上的校验不同时,才会将其序列化到远程计算机。这确保了只有在需要时才会将组件存档传输到远程机器。
组件存档描述符
每个组件存档的根目录中必须包含 lt-jar.xml 组建存档描述符。描述符必须包含从 SimRunnable 派生的主组件类的类名,以及从 SimRunnableOutput 派生的组件输出的类名。有关组件存档描述符文件格式的示例,请参阅所包含组件的 lt-jar.xml 文件。
使用 SimpleRunnable 组件运行 Load Test
一旦将 SimpleRunnable 组件部署到 Load Test 中,并熟悉 SimpleRunnable 源代码和组件存档结构,就可以修改组件存档配置,重新运行负载测试,并查看修改后的组件配置的效果。例如,您可以按照以下步骤来更改此组件模拟的测试执行时间:
- 在 .cfg 文件中添加 execTimeMs 参数。
- 运行组件存档 ANT 构建脚本。
- 在 Load Test 组件视图中,点击重新加载。
- 重新运行负载测试。注意,Load Test 报告统计部分的测试执行时间遵循配置的执行时间。
执行统计数据反映了将组件配置文件中的 execTimeMs 参数修改为 1200 后的情况。
分析 SocketRunnable 组件示例
本节研究 SocketRunnable 组件。SocketRunnable 类扩展了 SimpleRunnable,并演示了以下内容:
...
SocketRunnable 组件使用 SocketTest 类实例建立到特定主机和端口的连接,发送可自定义的请求,并使用 Java 套接字接收响应。属于组件的 SocketTest 实例可以在 SocketRunnable 组件视图中进行配置。
在应用程序日志中记录内部错误
您可能立即需要日志,因此可以从 SocketRunnable 构造函数中的引擎中获取日志。Engine engine = (Engine)context.get(PrivateContext.ENGINE);
ComponentLog log = engine.getComponentLog();
创建组件配置 GUI 面板
组件可以通过实现 SimRunnableConfigViewProvider 接口向容器提供自定义配置视图。容器将在上面显示的 Load Test Runnable 组件面板的配置选项卡中显示这个视图。容器调用 SimRunnableConfigViewProvider 接口的 getConfigView() 方法来获取组件的配置视图。在本例中,SocketRunnableView 类实现组件配置视图。SocketRunnableView 类使用位于 com.parasoft.loadtest.component.example.socket.test.view
包中的 SocketTest*View 类进行单独的 SocketTest 实例配置。
为特定于配置文件的组件配置创建 Load Test 配置文件 GUI 面板
可以设计负载测试组件来实现负载测试配置文件的特定行为。实现 ProfileRunnable 或 SubProfileRunnable 接口的类可作为负载测试组件中特定于配置文件的子组件。这些类实现组件的特定于配置文件的行为。
...
SocketRunnable 使用 API 的 ProfileRunnableTreeView。
保存 Load Test 项目中的组件配置
负载测试组件可以通过实现 SaveablePropertiesProvider 接口将其配置保存到 Load Test 项目中。组件配置由 SimRunnableProperties 类表示,该类存储组件属性 name/value 对。
...
如果保存组件配置需要比一组 name/value 属性对更复杂的数据结构,可以使用 XML 作为替代。将组件配置序列化为 XML 表示形式,并将 XML 字符串保存在 SimRunnableProperties 实例的单个 name/value 对中。有关如何使用 XML 保存和恢复组件配置的示例,请参阅 SocketRunnableXMLSerializer。
将组件配置转移到远程机器
必须将负载测试组件配置转移到远程负载测试机器上,该配置可以从负载测试项目文件中读取,也可以由您和您的团队修改。组件状态传输应该在组件类实现的 ParasoftExternalizable 接口的 readExternal/writeExternal 方法中实现。由于 SocketRunnable 组件的可配置部分由 SocketProfileRunnable 类型的 rootProfileRunnable 成员变量表示,因此必须将其传输到远程机器。SocketProfileRunnable 类到远程机器的序列化在该类 readFrom/writeOn 和 readExternal/writeExternal 方法的实现中得到了演示。或者,远程机器的序列化可以复用将组件配置保存到负载测试项目的代码。对于 SocketRunnable 示例,可以复用 SocketRunnableXMLSerializer 类功能,以 XML 字符串的形式将组件配置序列化/反序列化到远程机器。
使用 jar 库扩展组件功能
您的组件代码可以使用您选择的 jar Java 库。SocketRunnable 示例代码使用 Jtidy 库来分析它可以接收到的响应 Web 页面请求的 HTML 代码(请参阅 SocketTest 类的 checkTidy 方法)。组件依赖 jar 文件必须包含在组件 jar 存档库文件夹中(请参阅 component-build.xml ant 脚本构建的 socket.jar 组件归档文件)。
本地化组件资源
您可以使用 LocalizationUtil API 类来本地化组件字符串。SocketRunnable 示例的 Localization 类加载适当的资源包并包装 LocalizationUtil 方法,更易于访问。