Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

⯇ Vorheriges Tutorial

Im ersten Tutorial beginnen wir mit der Einrichtung unseres Projekts. Am Ende dieses Teils haben wir das Projekt vollständig aufgesetzt und sind bereit, den ersten Test zu schreiben. In den folgenden Tutorials definieren wir dann verschiedene Szenarien, um unsere Beispielintegration aus Getting Started - jadice web toolkit hinsichtlich seiner Performance zu testen.

Info

Wir empfehlen den Code bereits vor der Durchführung des Tutorials hier herunterzuladen.

Gatling

Gatling ist ein Framework, das in der Lage ist, komplexes Nutzerverhalten nachzustellen und zu simulieren. Die während des Performancetests gesammelten Daten werden aufbereitet und in übersichtlicher Form als HTML-Datei bereitgestellt. Tests innerhalb von Gatling werden in der Programmiersprache Scala geschrieben.

Begriffe

Bevor wir uns den ersten Tests zuwenden, machen wir uns mit den in Gatling genutzten Begriffen vertraut:

  • Szenario
    Ein Szenario beschreibt eine Abfolge von Interaktionen des Nutzers mit der Anwendung. Bspw. könnte ein Szenario folgendermaßen aussehen:
    1. Nutzer authentifiziert sich
    2. Nutzer ruft Dokument auf
    3. Nutzer scrollt 3 Seiten nach unten
    4. Nutzer exportiert das Dokument als PDF
  • User
    In einer realen Umgebung wird die Anwendung nicht nur von einer Person genutzt, sondern von mehreren auf einmal. Unter Gatling ist es ebenfalls möglich, mehrere Nutzer gleichzeitig oder zeitlich versetzt auf die Anwendung zugreifen zu lassen.
  • Verbindungsmethode
    Für aussagekräftige Tests sollte die Verbindungsmethode gewählt werden, welche bei Ihrer jadice web toolkit Implementierung standardmäßig aktiviert ist. Zur Auswahl stehen hierbei:
    • Longpoll
    • Server-Sent Events
    • WebSockets
  • SetUp
    Über die setUp-Methode wird das Szenario vorkonfiguriert. Hier wird unter anderem die Nutzeranzahl eingestellt.

Projektstruktur

Für den Anfang erstellen wir ein neues Mavenprojekt mit folgender Projektstruktur:


Codeblock
language
languagexml
themeRDark
xmltitleVerzeichnisstruktur
├── pom.xml
├── src/test/resources/ 
│   ├── bodies					- Wie der Name vermuten lässt, werden wir hier Request-bodies ablegen. 
│   └── data					- Hier legen wir sonstige benötigte Daten ab
└── src/test/scala/
    └── org/jwt/performance		- Hier landen unsere Scala-Tests

Maven

In den properties der pom.xml konfigurieren wir die aktuellen Gatling-Versionen:

Codeblock
language
languagexml
themeRDark
xmltitlepom.xml - properties
<gatling.version>2version>3.3.1</gatling.version>
<gatling-plugin.version>2version>3.20.4<5</gatling-plugin.version>
 


Die benötigten dependencies sind folgende:

Codeblock
languagexml
themeRDarklanguagexml
titlepom.xml - dependency
<dependency>
      <groupId>io.gatling.highcharts</groupId>
      <artifactId>gatling-charts-highcharts</artifactId>
      <version>${gatling.version}</version>
      <scope>test</scope>
</dependency>

 


Außerdem benötigen wir noch das Gatling-Maven-Plugin. Es ermöglicht die Ausführung von Gatling aus Maven heraus. Hier konfigurieren wir auch unsere oben erstellten Verzeichnisse:

Codeblock
languagexml
themeRDark
languagexml
titlepom.xml - Gatling-Maven-Plugin
<plugin>
     <groupId>io.gatling</groupId>
     <artifactId>gatling-maven-plugin</artifactId>
     <version>${gatling-plugin.version}</version>
     <configuration>
           <configFolder>${project.basedir}/src/test/resources</configFolder>
           <dataFolder>${project.basedir}/src/test/resources/data</dataFolder>
           <requestBodiesFolder>${project.basedir}/src/test/resources/bodies</requestBodiesFolder>
           <simulationsFolder>${project.basedir}/src/test/scala</simulationsFolder>
           <resultsFolder>${project.build.directory}/reports/gatling</resultsFolder>
           <runMultipleSimulations>true</runMultipleSimulations>
     </configuration>
</plugin>

 


Unsere vollständige pom.xml sieht folgendermaßen aus:

Codeblock
languagexml
themeRDarklanguagexml
titlepom.xml - vollständig
collapsetrue
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<artifactId>jwt-tutorial-000-performance<performancetest</artifactId>
	<name>jwt-tutorial-000-performance<performancetest</name>
	<description>Getting Started with Jadice Web Toolkit performancetest</description>
	<url>https://levigo.de/info/display/JKB/Getting+Started+-+Performancetests+in+JWT<x/O4C-BQ</url>
	<packaging>jar</packaging>

	<parent>
		<artifactId>jwt-tutorial</artifactId>
		<groupId>org.jwt</groupId>
		<version>5.710.052.2</version>
	</parent>
	<properties>
		<gatling.version>2version>3.3.1</gatling.version>
		<gatling-plugin.version>2version>3.20.4<5</gatling-plugin.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>io.gatling.highcharts</groupId>
			<artifactId>gatling-charts-highcharts</artifactId>
			<version>${gatling.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>io.gatling</groupId>
				<artifactId>gatling-maven-plugin</artifactId>
				<version>${gatling-plugin.version}</version>
				<configuration>
					<configFolder>${project.basedir}/src/test/resources</configFolder>
					<dataFolder>${project.basedir}/src/test/resources/data</dataFolder>
					<requestBodiesFolder>$<bodiesFolder>${project.basedir}/src/test/resources/bodies</requestBodiesFolder>bodiesFolder>
					<simulationsFolder>${project.basedir}/src/test/scala</simulationsFolder>
					<resultsFolder>${project.build.directory}/reports/gatling</resultsFolder>
					<runMultipleSimulations>true</runMultipleSimulations>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>