jMeter - Web服务测试计划
在本章中,我们将学习如何创建测试计划来测试 Web 服务。出于测试目的,我们创建了一个简单的 Web 服务项目并将其部署在本地 Tomcat 服务器上。
创建网络服务项目
为了创建 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"); } }
现在让我们通过创建 Endpoint 发布者在本地发布此 Web 服务并在服务器上公开该服务。
发布方法有两个参数 -
端点 URL 字符串。
实现者对象,在本例中是 HelloWorld 实现类,它在由上面参数中提到的 URL 标识的端点处公开为 Web 服务。
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("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 = "com.tutorialspoint.ws.HelloWorldImpl" url-pattern = "/hello"/> </endpoints>
现在所有文件都已准备就绪,目录结构将如下图所示 -
现在创建该应用程序的 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。
添加线程组
添加一个线程组,它是所有其他元素(如采样器、控制器和侦听器)的占位符。
右键单击 WebserviceTest(我们的测试计划)→ 添加→ 线程(用户)→ 线程组。线程组将添加到测试计划 (WebserviceTest) 节点下。
接下来,让我们修改线程组的默认属性以适应我们的测试。以下属性已更改 -
名称- 网络服务用户
线程数(用户) - 2
加速周期- 保留默认值 0 秒。
循环计数- 2
添加采样器 - SOAP/XML-RPC 请求
现在我们已经定义了用户,是时候定义他们将要执行的任务了。
我们将添加 SOAP/XML-RPC 请求元素 -
右键单击鼠标按钮以获取“添加”菜单。
选择添加 → 采样器 → SOAP/XML-RPC 请求。
在树中选择 SOAP/XML-RPC 请求元素
编辑以下属性,如下图所示 -
在此元素中输入以下详细信息 -
名称 - SOAP/XML-RPC 请求
URL - http://localhost: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>
添加监听器
您需要添加到测试计划中的最后一个元素是侦听器。该元素负责将 HTTP 请求的所有结果存储在文件中并呈现数据的可视化模型。
选择 Web 服务用户元素。
通过选择“添加”→“侦听器”→“查看结果树”来添加“查看结果树”侦听器。
运行测试计划
现在将上述测试计划保存为test_webservice.jmx。使用“运行”→“开始”选项执行此测试计划。
查看输出
在监听器中可以看到以下输出。
在最后一张图中,您可以看到响应消息“Hello Manisha to JAX WS world”。