jMeter - Plan testów usług internetowych
W tym rozdziale dowiemy się, jak utworzyć plan testów, aby przetestować usługę sieciową. Do naszych celów testowych stworzyliśmy prosty projekt usługi sieciowej i wdrożyliśmy go lokalnie na serwerze Tomcat.
Utwórz projekt usługi internetowej
Do stworzenia projektu webservice użyliśmy Eclipse IDE. Najpierw napisz interfejs punktu końcowego usługiHelloWorld pod pakietem com.tutorialspoint.ws. Zawartość HelloWorld.java jest następująca -
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);
}
Ta usługa ma metodę getHelloWorldMessage który przyjmuje parametr typu String.
Następnie utwórz klasę implementacji HelloWorldImpl.java pod pakietem com.tutorialspoint.ws.
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");
}
}
Opublikujmy teraz tę usługę sieciową lokalnie, tworząc wydawcę punktu końcowego i udostępniając usługę na serwerze.
Metoda publikowania przyjmuje dwa parametry -
Ciąg adresu URL punktu końcowego.
Implementor, w tym przypadku klasa implementacji HelloWorld, która jest udostępniana jako usługa sieci Web w punkcie końcowym identyfikowanym przez adres URL wymieniony w powyższym parametrze.
Zawartość HelloWorldPublisher.java jest następująca -
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());
}
}
Zmodyfikuj zawartość web.xml, jak pokazano poniżej -
<?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>
Aby wdrożyć tę aplikację jako usługę sieciową, potrzebowalibyśmy innego pliku konfiguracyjnego sun-jaxws.xml. Zawartość tego pliku jest następująca -
<?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>
Teraz, gdy wszystkie pliki są gotowe, struktura katalogów wyglądałaby tak, jak pokazano na poniższym zrzucie ekranu -
Teraz utwórz plik WAR tej aplikacji.
Wybierz projekt → kliknij prawym przyciskiem myszy → Eksportuj → plik WAR.
Zapisz to jako hello.war plik pod webapps folder serwera Tomcat.
Teraz uruchom serwer Tomcat.
Po uruchomieniu serwera powinieneś mieć dostęp do usługi sieciowej za pomocą adresu URL - http: // localhost: 8080 / hello / hello
Utwórz plan testów JMeter
Teraz stwórzmy plan testów, aby przetestować powyższą usługę sieciową.
Zmień nazwę planu testów
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter2.9/bin/jmeter.sh.
Kliknij węzeł Test Plan.
Zmień nazwę tego węzła planu testów na WebserviceTest.
Dodaj grupę wątków
Dodaj jedną grupę wątków, która jest symbolem zastępczym dla wszystkich innych elementów, takich jak Samplers, Controllers i Listeners.
Kliknij prawym przyciskiem myszy na WebserviceTest (nasz plan testów) → Dodaj → Wątki (Użytkownicy) → Grupa wątków. Grupa wątków zostanie dodana w węźle Plan testów (WebserviceTest).
Następnie zmodyfikujmy domyślne właściwości grupy wątków, aby pasowały do naszych testów. Następujące właściwości są zmieniane -
Name - użytkownik serwisu internetowego
Number of Threads (Users) - 2
Ramp-Up Period - pozostaw domyślną wartość 0 sekund.
Loop Count - 2
Dodaj próbnik - żądanie SOAP / XML-RPC
Teraz, gdy zdefiniowaliśmy użytkowników, nadszedł czas na zdefiniowanie zadań, które będą wykonywać.
Dodamy element żądania SOAP / XML-RPC -
Kliknij prawym przyciskiem myszy, aby wyświetlić menu Dodaj.
Wybierz Dodaj → Sampler → Żądanie SOAP / XML-RPC.
Wybierz element żądania SOAP / XML-RPC w drzewie
Edytuj następujące właściwości, jak na poniższym obrazku -
W tym elemencie wprowadzane są następujące szczegóły -
Name − SOAP/XML-RPC Request
URL - http: // localhost: 8080 / hello / hello? Wsdl
Soap/XML-RPC Data - Wprowadź poniższą zawartość
<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>
Dodaj słuchacza
Ostatnim elementem, który musisz dodać do swojego planu testów, jest Listener. Ten element jest odpowiedzialny za przechowywanie wszystkich wyników twoich żądań HTTP w pliku i prezentację wizualnego modelu danych.
Wybierz element użytkownika usługi sieciowej.
Dodaj odbiornik widoku drzewa wyników, wybierając Dodaj → Listener → Wyświetl drzewo wyników.
Uruchom plan testów
Teraz zapisz powyższy plan testów jako test_webservice.jmx . Wykonaj ten plan testów za pomocą opcji Uruchom → Start.
Wyświetl dane wyjściowe
Następujące dane wyjściowe można zobaczyć w odbiorniku.
Na ostatnim obrazie możesz zobaczyć wiadomość odpowiedzi „Hello Manisha to JAX WS world”.