本教程阐明了如何使用负载测试工具来测试服务和 Web 接口功能测试。在本章节中:
教程概要
一旦在 SOAtest 创建了功能测试,则下一步便是使用 Parasoft 负载测试工具进行负载测试。负载测试允许模拟大量使用的条件,这可能会暴露仅在这种情况下才会出现的 bug。可以负载测试 Web、SOA 和组合端到端的测试(通过 Web 服务、JMS、web 接口和数据库等扩展到消息层之外的测试场景)。
此外,Parasoft 负载测试工具包括负载测试实现 Parasoft 负载测试组件 API 的任何组件的框架;比如,它可以支持 Junits 的性能和并发测试,或者使用实现 Parasoft 组件 API 的轻量级基于 Socket 的组件进行负载测试。这使得负载测试可以针对组织在执行性能验证时所面临的各种独特的复杂性进行专门化和定制。
如果在以前版本的 SOAtest 和 WebKing 中配置了负载测试,则可以直接导入并完全支持它们。
Parasoft 负载测试工具允许全面控制负载测试过程的所有方面,包括以下领域:
- 奴役多台机器(集群):可以在网络上奴役多台机器(运行负载测试工具)来生成比一台机器所能产生的负荷更大的负荷。 单击负载测试窗口中的 Machines 文件夹,并查看出现的 GUI。对于每每台机器,您都可以选择高流通模式,该模式通过禁用某些响应处理操作来使用相同的硬件生成更高的负载强度。有关更多详情,请查阅 在远程机器上运行负载测试 。
- User Profiles: 创建用户概要文件允许您直接将负载测试与功能测试关联起来。这意味着,一旦创建了功能测试,就不需要在负载测试下运行它。双击负载测试窗口中的 Profiles 文件夹,并查看每个创建的配置文件。
- Custom Scenarios: 负载测试工具提供了四个默认负载测试场景(Bell、Buffer Test、Linear Increase 和 Steady Load),或者允许创建自己自定义的场景。可以创建这些场景来模拟可能在正常使用期间出现的真实场景。单击 Scenarios 文件夹,并查看为该示例提供的场景。
- Monitors: 可以向负载测试工具添加监控器,以在进行负载测试时监视各种系统资源。右键单击 Monitors 文件夹,以查看要添加的监视器。负载测试工具支持 SNMP、Windows Perfmon 和 JMX 监视器。有关更多详情,请查阅 使用监视器 。
视频教程:使用现有 SOAtest 场景配置并运行负载测试工具
包含 Web 功能测试的测试场景的通用工作流
负载测试包含 Web 功能测试的任何 SOAtest 功能测试功能的典型工作流是:
- 使用浏览器录制 web 场景。
- 使用所需验证和提取消息自定义测试场景。
- 在 SOAtest 中切换负载测试工具透视图。
- 在负载测试资源管理器(Load Test Explorer)中选择合适的测试套件并单击 Validate for Load Testing 工具栏按钮。
- 如果执行成功,则可能不需要进一步的场景配置/调整,并且您的场景已经准备好接受 Parasoft 负载测试工具的负载测试。
- 如果执行失败,则可以使用 SOAtest 来配置测试套件,以便进行负载测试。例如,对于在特定浏览器场景中跨用户操作传递的变量 URL 参数值,可能需要配置。关于更多详情信息,请查阅 SOAtest 用户指南的负载测试(Load Testing)部分。
- 启动 Parasoft 负载测试工具,并为 SOAtest 中创建的 .tst 文件创建新的负载测试场景。
同样的工作流也适用于端到端测试 SOAtest 测试场景(通过 Web 服务、JMS、web 接口和数据库等扩展到消息层之外的测试场景)。Parasoft 负载测试工具将驱动您在 SOAtest 的功能测试套件中进行的所有测试的并发性。
所有其他 SOAtest 测试场景的通用工作流
负载测试不包含 Web 功能测试的任何 SOAtest 功能测试功能的典型工作流如下所示:
- 在 SOAtest 中定义和自定义场景。
- 启动 Parasoft 负载测试工具,并为 SOAtest 中创建的 .tst 文件创建新的负载测试场景。
创建 Web 应用程序功能测试
在此负载测试教程中,我们将使用 Parasoft 自己的网站,其名为“Parabank”,它是一个模拟银行 web 应用程序
开始本课程之前,我们建议您先完成 SOAtest 教程中的“Web 功能测试”部分,了解如何录制用于负载测试的浏览器测试套件。
录制新 Web 场景
若要录制将用于负载测试的 Web 功能测试:
- 在 SOAtest 中,选择 File> New> Test (.tst) file。
- 输入
ParaBank
作为 文件名 ,然后单击 Next。 - 选择 Web> Record web scenario,然后单击 Next。
- 选择 Record new web scenario,然后单击 Next。
- 完成起始位置向导页面中的录制(Record),如下所示:
- 在 Test Suite Name 字段输入
ParaBank Functional Test
。 - 在 Start Recording From 字段输入
http://parabank1.parasoft.com/
。 - 点击 Finish 按钮。将开始测试,The te并打开浏览器窗口。
- 在 Test Suite Name 字段输入
- 在打开的浏览器窗口中,执行以下操作:
- 输入
john
作为用户名,输入demo
作为密码,然后单击 Log In。
- 单击在用户列表看到的第一个用户链接。
- 单击页面右上角的 Sign Off 链接。
- 关闭浏览器。录制会议到此结束。
- 输入
验证用于负载测试的场景
若要验证准备用来负载测试的测试:
- 通过选择 Window> Open Perspective> Other> Parasoft Load Test将 SOAtest 切换至负载测试工具透视图。这将在左侧打开一个 Load Test Explorer。这类似于 Test Case Explorer,但双击每个浏览器测试用例将打开一个为准备负载测试的测试用例步骤而设计的特殊编辑器。此编辑器显示浏览器为加载该 Web 页面而生成的各种请求 URL,并且将在这些请求中使用人和参数化值。
- 选择根 ParaBank 测试套件节点并单击工具栏中的 Validate for Load Testing 按钮。在本示例中,测试应该成功,这指明功能 web 场景已经准备好进行负载测试。
现在可以按照 负载测试教程中所描述配置并执行负载测试。
创建服务功能测试
启动测试之前,我们建议您先完成 SOAtest 用户指南中的 SOAtest "Functional Testing" 和 "Scenario Testing" 教程。
若要阐明负载测试,我们将使用 SOAtest 教程中的测试套件。如果教程课程还不可在 SOAtest 工作空间中使用,则按照以下方式创建它们:
- 在 SOAtest 中,选择 File> New> Other,选择 Project from Existing SOAtest or WebKing Test Suites,然后单击 Next。
- 在 Project Name 字段中输入
Examples
。 - 在 Directory下,通过单击 Browse 然后导航到
[SOAtest/Load_Test_installation_directory]/examples/tests
指定项目测试套件的位置。 - 单击 Finish。示例项目将不会被添加到测试用例资源管理器中。它将包含多个测试(.tst 文件)。
现在可以按照 负载测试教程中所描述配置并执行负载测试。
创建并执行负载测试(用于 Web 和/或服务功能测试)
若要为前面练习中引用的 Web 或服务测试定义并运行负载测试:
- 打开 Parasoft 负载测试工具:
- Windows:选择 Start> Programs> Parasoft> SOAtest> Load Test。
- Linux/Mac: 将目录更改为 loadtest 目录,然后在提示符处输入以下命令:
./loadtest
- 在欢迎向导中,选择 New Project ,然后单击 Next。
- 选择 SOAtest ,然后单击 Next。
- 进行下列其中一项操作:
- Services: 浏览到
SOAtestTutorial.tst
,然后单击 Next。如果从头开始创建了它,则它将在您的工作空间中。否则,在[Parasoft SOAtest/Load Test Install Dir]/examples/tests/SOAtestTutorial.tst
上打开示例文件。 - Web: 浏览到
ParaBank Functional Test.tst
(在您的 SOAtest 工作空间中),然后单击 Next。
- Services: 浏览到
- 选择树中的以下内容,然后单击 Next:
- Services: "Scenario: Scenario Test – Search, Place Order, and remove Order", "Test Suite: Plain XML Services"
- Web: Scenario: ParaBank Functional Test.
- Services: "Scenario: Scenario Test – Search, Place Order, and remove Order", "Test Suite: Plain XML Services"
- 在 Schedule & Distribution 面板中,为持续时间输入 2 分钟,为分布选择 Linear Increase ,然后单击 Next ,直到到达 Other Options 面板。
- 为了选择 Linear Increase 选项,您必须拥有合适的负载测试许可证。如果许可证上没有启用虚拟用户,则您将只能生成 Steady Load 场景。
- 在其它选项(Other Options)面板中,启用 Start Load Test immediately 和 Record individual hits,然后单击 Finish。
负载测试工具将开始指定的负载测试。一个新的负载测试(Load Tests)选项卡显示在左侧 GUI 面板中,Graph 选项卡显示在(Load Test progress)负载测试进展面板中。
可以通过右键单击 Graphs 选项卡,然后选择其中一个可用的布局选项,以更改显示的图形的数量和布局。
负载测试可以随时停止,但是我们将让它运行完整的 2 分钟,同时监视和操作测试的正在进行的细节。
查看负载测试进程选项卡,注意 Graph 选项卡显示以下内容:
- 虚拟用户曲线以稳定的线性方式攀升,这与本课步骤 7 中选择的 Linear Increase 场景一致。
- 如果 Tests Completed 和 Tests Started 曲线之间几乎彼此吻合,这表明测试的速度很快(比如,响应速度很快)如果这些曲线之间存在很大的间隙,则表示测试的执行时间更长。
还注意到 Snapshot 选项卡显示当前活跃的虚拟用户及其调用的操作。测试执行期间,此选项卡中的信息将每三秒更新一次。
负载测试完成之后,测试信息概要将显示在结果(Results)面板中,其中包括项目名称、开始负载测试和结束负载测试的时间、所选定场景以及任何机器和配置文件。
也可以选择查看负载测试的不同统计报告。若要查看负载测试的详细统计数据,请完成以下内容:
- 从结果面板的 Views 菜单选择 Statistics 。
当查看统计报告时,可以使用 Output Types 菜单。输出类型 菜单确定显示的哪个报告输出类型。该菜单提供两种类型的报告,每种报告显示不同的信息列。报告类型不同点在于:- Generic Reports: 包含测试套件名称、测试索引、测试名称、Min/Max/Avg 时间(ms)、运行计数和故障计数。
- 网络客户端报告:包含通用报告中所有的信息,加上 Min/Max/Avg Ping (ms), Min/Max/Avg 请求大小(bytes), Min/Max/Avg 响应大小 (bytes) Min/Max/Avg 总大小 (bytes)。
- 若要访问有关特定测试故障的详情,请双击相关报告行。可以通过定位表示该测试的行,然后检查该行 Failure Count 列中的的数字来确定给定的测试是否失败。
自定义负载测试配置文件和场景
可以通过自定义要使用配置文件和场景,以自定义运行特定负载测试的方式。可以确定负载测试持续的时间长度、虚拟用户的分布、随时间和机器的命中率以及随时间的用户配置文件分布。
- 双击 Load Tests 选项卡中的 Profiles 文件夹,并选择一个可用的测试套件节点。配置面板将显示在右侧。
- 在面板底部,将延迟 Value 更改为 3 秒。这可能会模拟用户在决定是否订购一本书之前如何犹豫。
- 选择 Scenarios 节点下的 Linear Increase 。Linear Increase 场景控件显示在结果面板,User graph 显示 localhost 曲线。
- 将 localhost 曲线的端点拖放到 2 分钟时 10 个用户的坐标中。
- 从 Vertical scale 下拉菜单中选择 20。
- 单击 More Points 按钮。将在 localhost 行中央出现一个点。
- 单击该新点并将其拖放至 1 分钟时 10 个用户的坐标中。
- 展开 Linear Increase 节点,并选择该节点下的 QoS 节点。将显示Summary 和 Details 选项卡。
- 选择 Details 选项卡并单击 New 按钮。
将显示 Add Metric 向导。 - 选择 Statistic Metric ,然后单击 Finish。
- 在打开的度量配置面板中,在 Name 字段中输入
Execution Time Requirement
。 - 针对右侧 GUI 中 Statistic 下拉菜单,请选择 Avg。Exe.Time (ms) 及小于符号(<),然后在文本字段中输入 200。
如果执行时间超过 200 毫秒,这将导致负载测试结果“失败”。有关配置 QoS 度量的更多详情,请查阅 Customizing QoS Metrics for Scenarios。 - 选择 Scenarios 分支下的 Linear Increase 节点,然后单击 Load Test 工具栏按钮。负载测试工具将开始自定义的负载测试, Graph 选项卡将显示在右侧 GUI 面板中。
- 等待(2 分钟)负载测试完成。运行负载测试时,您可以通过选择合适的多选框,以查看 Graph 选项卡内的各种参数。
负载测试完成之后,测试信息概要将显示在右侧 GUI 面板中,其中包括项目名称、开始负载测试和结束负载测试的时间、所选定场景以及任何机器和配置文件。
视频教程:微调负载测试配置和场景
查看报告
负载测试完成后,必须分析收集到的数据,以便了解应用程序/服务在负载下是如何执行的。负载测试工具使您能够配置和生成负载测试报告。
在本节中,您将学会如何查看详细报告以及如何生成 HTML 报告。
若要查看详细报告,请完成以下步骤:
- 从结果面板的 Views 下拉菜单中选择 Detailed Report 。将显示一个带有各种参数的 Graph 选项卡。
- 在图表内,可以执行以下操作:
- 若要查看要绘制和查看的不同参数,请选择位于结果面板底部的“所需参数”复选框。
- 若要在对数比例尺中查看多个参数,请选择 Log Scale 多选框。对数比例尺允许您在同一图形上看到多条曲线的形状(即使显示的值彼此相距很远)。
- 若要查看整个图中录制的详情,请右键单击图中任何区域,然后从快捷菜单中选择 Show Recorded Details 。默认录制错误详情。也可以录制成功详情;关于如何配置它的更多详情,请查阅 Customizing the Data Recording Parameters 。
正如您所看到的,您可以从 Detailed Report的 Graph 选项卡中收集负载测试的各种细节。也可以通过 Histogram 和 Table 选项卡获得其他信息。关于这些选项卡和负载测试详细报告的更多信息,请查阅 审查和定制负载测试结果。
将项目保存为 .lt 文件
- 通过单击 Save Project 工具栏按钮保存这个负载测试项目。
- 在打开的对话框中,在 File 名称字段输入项目名称,然后单击 Save 按钮。负载测试工具将保存项目,并向文件名添加
.lt
扩展名。