- JMeter 教程
- JMeter - 首頁
- JMeter - 概述
- JMeter - 環境
- JMeter - 構建測試計劃
- JMeter - 測試計劃元素
- JMeter - Web測試計劃
- JMeter - 資料庫測試計劃
- JMeter - FTP測試計劃
- JMeter - Web服務測試計劃
- JMeter - JMS測試計劃
- JMeter - 監控測試計劃
- JMeter - 監聽器
- JMeter - 函式
- JMeter - 正則表示式
- JMeter - 最佳實踐
- JMeter 資源
- JMeter - 快速指南
- JMeter - 有用資源
- JMeter - 討論
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://: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 檔案。
將其另存為 **hello.war** 檔案,放在 Tomcat 伺服器的 **webapps** 資料夾下。
現在啟動 Tomcat 伺服器。
伺服器啟動後,您應該能夠使用以下 URL 訪問 Web 服務:https://:8080/hello/hello
建立 JMeter 測試計劃
現在讓我們建立一個測試計劃來測試上面的 Web 服務。
重新命名測試計劃
透過點選 /home/manisha/apache-jmeter2.9/bin/jmeter.sh 開啟 JMeter 視窗。
點選測試計劃節點。
將此測試計劃節點重新命名為 WebserviceTest。
新增執行緒組
新增一個執行緒組,它是所有其他元素(如取樣器、控制器和監聽器)的佔位符。
右鍵單擊 WebserviceTest(我們的測試計劃)→新增→執行緒(使用者)→執行緒組。執行緒組將新增到測試計劃(WebserviceTest)節點下。
接下來,讓我們修改執行緒組的預設屬性以適應我們的測試。更改以下屬性:
**名稱** - webservice user
**執行緒數(使用者)** - 2
**Ramp-Up 期間** - 保留預設值 0 秒。
**迴圈次數** - 2
新增取樣器 - SOAP/XML-RPC 請求
現在我們已經定義了使用者,是時候定義他們將執行的任務了。
我們將新增 SOAP/XML-RPC 請求元素:
右鍵單擊滑鼠以獲取“新增”選單。
選擇新增→取樣器→SOAP/XML-RPC 請求。
在樹中選擇 SOAP/XML-RPC 請求元素
編輯以下屬性,如下圖所示:
在此元素中輸入以下詳細資訊:
名稱 - SOAP/XML-RPC 請求
**URL** - https://: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 請求的結果儲存到檔案中,並呈現資料的視覺化模型。
選擇 webservice user 元素。
透過選擇新增→監聽器→檢視結果樹來新增檢視結果樹監聽器。
執行測試計劃
現在將上述測試計劃儲存為 *test_webservice.jmx*。使用執行→啟動選項執行此測試計劃。
檢視輸出
監聽器中可以看到以下輸出。
在最後一張圖片中,您可以看到響應訊息“Hello Manisha to JAX WS world”。