构建 WebService 测试计划
在本节中,你将学习如何创建 测试计划 来测试 Web 服务。你将创建五个向一页发送请求的用户。此外,你将告诉用户运行他们的测试两次。因此,请求总数为(5 个用户)x(1 个请求)x(重复 2 次)=10 个 HTTP 请求。要构建测试计划,你将使用以下元素: 线程组 、 HTTP 请求 和 聚合图 。
如果采样器似乎从 Web 服务收到错误,请仔细检查 SOAP 消息并确保格式正确。特别是,确保 xmlns 属性与 WSDL 完全相同。如果 xml 命名空间不同,webservice 可能会返回错误。
9.1 创建 WebService 测试计划
在我们的测试计划中,我们将使用 .NET Web 服务。我们不会深入讨论编写 Web 服务的细节。如果你不知道如何编写 Web 服务,请在 Google 上搜索 Web 服务并熟悉为 Java 和 .NET 编写 Web 服务。应该注意的是,.NET 和 Java 如何实现 Web 服务之间存在显着差异。该主题过于广泛,无法在用户手册中涵盖。请参阅其他来源以更好地了解差异。
JMeter 按照它们在树中出现的顺序发送请求。
首先使用菜单 File → Templates... 并选择模板Building a SOAP Webservice Test Plan
。然后,单击创建
按钮。
图 9.1.0。网络服务模板
更改以下内容:
接下来,选择HTTP Header Manager
并更新SOAPAction
标头以匹配你的 Web 服务。在这种情况下,某些 web 服务可能不使用 SOAPAction 将其删除。
目前,只有 .NET 使用 SOAPAction,因此对于所有其他 Web 服务,有一个空白的 SOAPAction 是正常的。该列表包括 JWSDP、Weblogic、Axis、The Mind Electric Glue 和 gSoap。
图 9.1.2 Web 服务标头
最后一步是将 SOAP 消息粘贴到Body Data
文本区域中。
图 9.1.3 Web 服务主体
9.2 添加用户
线程组 告诉 JMeter 你想模拟的用户数量,用户应该多久发送一次请求,以及他们应该发送多少个请求。
如果尚未选择树中的线程组元素,请选择它。你现在应该在 JMeter 窗口的右侧看到线程组控制面板(参见下面的图 9.2)
图 9.2。具有默认值的线程组
首先为我们的线程组提供一个更具描述性的名称。在名称字段中,输入 JMeter 用户。
接下来,将用户数(称为线程)增加到 10。
在下一个字段 Ramp-Up Period 中,保留默认值 0 秒。该属性告诉 JMeter 在启动每个用户之间延迟多长时间。例如,如果你输入 5 秒的 Ramp-Up Period,JMeter 将在 5 秒结束时完成启动所有用户。因此,如果我们有 5 个用户和 5 秒的 Ramp-Up Period,那么启动用户之间的延迟将为 1 秒(5 个用户 / 5 秒 = 1 个用户/秒)。如果你将该值设置为 0,那么 JMeter 将立即启动你的所有用户。
最后,清除标记为Forever
的复选框,并在 Loop Count 字段中输入值 2 。此属性告诉 JMeter 重复测试多少次。如果你输入循环计数值 0,那么 JMeter 将只运行一次测试。要让 JMeter 重复运行你的测试计划,请选中 Forever 复选框。
在大多数应用程序中,你必须手动接受你在控制面板中所做的更改。但是,在 JMeter 中,控制面板会在你进行更改时自动接受你的更改。如果更改元素的名称,则在离开控制面板后(例如,选择另一个树元素时),将用新文本更新树。
有关已完成的 JMeter 用户线程组,请参见图 9.2。
图 9.3。JMeter 用户线程组
9.3 添加监听器以查看存储测试结果
你需要添加到测试计划的最后一个元素是 Listener 。此元素负责将 HTTP 请求的所有结果存储在文件中并呈现数据的可视化模型。
选择 JMeter Users 元素并添加一个 Aggregate Graph 侦听器(Add → Listener → Aggregate Graph)。接下来,你需要指定输出文件的目录和文件名。你可以在文件名字段中键入它,或者选择浏览
按钮并浏览到一个目录,然后输入一个文件名。
图 9.4。图表结果监听器
9.4 休息网络服务
测试一个 REST Web 服务非常相似,你只需要在 HTTP 请求中修改
- 方法:选择你要测试的那个
- 正文数据:可以是 JSON、XML 或任何自定义文本
你可能还需要修改HTTP Header Manager
以选择正确的Content-Type