JMeter - Web服务测试计划



本章我们将学习如何创建一个测试计划来测试 Web 服务。为了测试目的,我们创建了一个简单的 Web 服务项目并将其部署到本地 Tomcat 服务器上。

创建 Web 服务项目

要创建一个 Web 服务项目,我们使用了 Eclipse IDE。首先在包 **com.tutorialspoint.ws** 下编写服务端点接口 **HelloWorld**。HelloWorld.java 的内容如下:

package com.tutorialspoint.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)

public interface HelloWorld {
   @WebMethod String getHelloWorldMessage(String string);
}

此服务有一个方法 **getHelloWorldMessage**,它接受一个 String 参数。

接下来,在包 **com.tutorialspoint.ws** 下创建实现类 **HelloWorldImpl.java**。

package com.tutorialspoint.ws;

import javax.jws.WebService;

@WebService(endpointInterface="com.tutorialspoint.ws.HelloWorld")
public class HelloWorldImpl  implements HelloWorld  {
   @Override
   public String getHelloWorldMessage(String myName) {
      return("Hello "+myName+" to JAX WS world");
   }
}

现在让我们通过创建端点发布者并将服务公开到服务器上来在本地发布此 Web 服务。

publish 方法接受两个参数:

  • 端点 URL 字符串。

  • 实现者对象,在本例中是 HelloWorld 实现类,它作为 Web 服务公开在参数中提到的 URL 标识的端点。

HelloWorldPublisher.java 的内容如下:

package com.tutorialspoint.endpoint;

import javax.xml.ws.Endpoint;
import com.tutorialspoint.ws.HelloWorldImpl;

public class HelloWorldPublisher {
   public static void main(String[] args) {
      Endpoint.publish("https://127.0.0.1:9000/ws/hello", new HelloWorldImpl());
   }
}

修改 web.xml 内容如下所示:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
   Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

<web-app>
   <listener>
      <listener-class>
         com.sun.xml.ws.transport.http.servlet.WSServletContextListener
      </listener-class>
   </listener>
	
   <servlet>
      <servlet-name>hello</servlet-name>
      <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
	
   <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
   </servlet-mapping>
	
   <session-config>
      <session-timeout>120</session-timeout>
   </session-config>
	
</web-app>

要将此应用程序部署为 Web 服务,我们需要另一个配置文件 **sun-jaxws.xml**。此文件的内容如下:

<?xml version = "1.0" encoding = "UTF-8"?>
<endpoints
   xmlns = "http://java.sun.com/xml/ns/jax-ws/ri/runtime"
   version = "2.0">
   
   <endpoint name = "HelloWorld" 
      implementation = "com.tutorialspoint.ws.HelloWorldImpl" 
      url-pattern = "/hello"/>
</endpoints>

现在所有文件都已准备就绪,目录结构将如下面的屏幕截图所示:

WebService Dir structure
  • 现在创建此应用程序的 WAR 文件。

  • 选择项目→右键单击→导出→WAR 文件。

  • 将其另存为 **hello.war** 文件,放在 Tomcat 服务器的 **webapps** 文件夹下。

  • 现在启动 Tomcat 服务器。

  • 服务器启动后,您应该能够使用以下 URL 访问 Web 服务:https://127.0.0.1:8080/hello/hello

创建 JMeter 测试计划

现在让我们创建一个测试计划来测试上面的 Web 服务。

重命名测试计划

  • 通过点击 /home/manisha/apache-jmeter2.9/bin/jmeter.sh 打开 JMeter 窗口。

  • 点击测试计划节点。

  • 将此测试计划节点重命名为 WebserviceTest。

WS Test Plan

添加线程组

添加一个线程组,它是所有其他元素(如采样器、控制器和监听器)的占位符。

  • 右键单击 WebserviceTest(我们的测试计划)→添加→线程(用户)→线程组。线程组将添加到测试计划(WebserviceTest)节点下。

  • 接下来,让我们修改线程组的默认属性以适应我们的测试。更改以下属性:

    • **名称** - webservice user

    • **线程数(用户)** - 2

    • **Ramp-Up 期间** - 保留默认值 0 秒。

    • **循环次数** - 2

WS Test Users

添加采样器 - SOAP/XML-RPC 请求

现在我们已经定义了用户,是时候定义他们将执行的任务了。

我们将添加 SOAP/XML-RPC 请求元素:

  • 右键单击鼠标以获取“添加”菜单。

  • 选择添加→采样器→SOAP/XML-RPC 请求。

  • 在树中选择 SOAP/XML-RPC 请求元素

  • 编辑以下属性,如下图所示:

  • 在此元素中输入以下详细信息:

    • 名称 - SOAP/XML-RPC 请求

    • **URL** - https://127.0.0.1:8080/hello/hello?wsdl

    • **Soap/XML-RPC 数据** - 输入以下内容

<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:web = "http://ws.tutorialspoint.com/">
   <soapenv:Header/>
	
   <soapenv:Body>
      <web:getHelloWorldMessage>
         <arg0>Manisha</arg0>
      </web:getHelloWorldMessage>
   </soapenv:Body>
   
</soapenv:Envelope>
WS Test request

添加监听器

您需要添加到测试计划中的最后一个元素是监听器。此元素负责将所有 HTTP 请求的结果存储到文件中,并呈现数据的可视化模型。

  • 选择 webservice user 元素。

  • 通过选择添加→监听器→查看结果树来添加查看结果树监听器。

WS Test request

运行测试计划

现在将上述测试计划保存为 *test_webservice.jmx*。使用运行→启动选项执行此测试计划。

查看输出

监听器中可以看到以下输出。

WS Sample Result

WS Result Request

WS Response Data

在最后一张图片中,您可以看到响应消息“Hello Manisha to JAX WS world”。

广告