当前位置: 首页 > 文档资料 > jMeter 中文教程 >

Webservice 测试计划(Webservice Test Plan)

优质
小牛编辑
133浏览
2023-12-01

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

创建Webservice项目

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

package cn.xnip.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参数。

接下来,在cn.xnip.ws包下创建实现类HelloWorldImpl.java

package cn.xnip.ws;
import javax.jws.WebService;
@WebService(endpointInterface="cn.xnip.ws.HelloWorld")
public class HelloWorldImpl  implements HelloWorld  {
   @Override
   public String getHelloWorldMessage(String myName){
      return("Hello "+myName+" to JAX WS world");
   }
}

现在让我们通过创建Endpoint发布者在本地发布此Web服务,并在服务器上公开该服务。

发布方法有两个参数 -

  • 端点URL字符串。

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

HelloWorldPublisher.java的内容如下 -

package cn.xnip.endpoint;
import javax.xml.ws.Endpoint;
import cn.xnip.ws.HelloWorldImpl;
public class HelloWorldPublisher {
   public static void main(String[] args){
      Endpoint.publish("http://localhost: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="cn.xnip.ws.HelloWorldImpl" url-pattern="/hello"/>
</endpoints>

现在所有文件都准备好了,目录结构看起来如下面的屏幕截图所示 -

Webservice Dir结构
  • 现在创建此应用程序的WAR文件。

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

  • 将其保存为Tomcat服务器的webapps文件夹下的hello.war文件。

  • 现在启动Tomcat服务器。

  • 启动服务器后,您应该能够使用URL访问Web服务 - http:// localhost:8080/hello/hello

创建JMeter测试计划

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

重命名测试计划

  • 单击/home/manisha/apache-jmeter2.9/bin/jmeter.sh打开JMeter窗口。
  • 单击“测试计划”节点。
  • 将此测试计划节点重命名为WebserviceTest。
WS测试计划

添加线程组

添加一个Thread Group,它是所有其他元素(如Samplers,Controllers和Listeners)的占位符。

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

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

    • Name - webservice用户

    • Number of Threads (Users) - 2

    • Ramp-Up Period - 保留默认值0秒。

    • Loop Count - 2

WS测试用户

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

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

我们将添加SOAP/XML-RPC Request元素 -

  • 右键单击鼠标按钮以获取“添加”菜单。
  • 选择Add> Sampler> SOAP/XML-RPC Request。
  • 在树中选择SOAP/XML-RPC Request元素
  • 编辑以下属性,如下图所示 -
  • 在此元素中输入以下详细信息 -
    • Name − SOAP/XML-RPC Request

    • URL - http:// localhost:8080/hello/hello?wsdl

    • Soap/XML-RPC Data - 输入以下内容

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://ws.xnip.cn/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:getHelloWorldMessage>
         <arg0>Manisha</arg0>
      </web:getHelloWorldMessage>
   </soapenv:Body>
</soapenv:Envelope>
WS测试请求

添加监听器

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

  • 选择webservice用户元素。

  • 选择“添加”>“侦听器”>“查看结果树”,添加“查看结果树”侦听器。

WS测试请求

运行测试计划

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

查看输出

可以在侦听器中看到以下输出。

WS样本结果WS结果请求WS响应数据

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