Performance Test mit Gatling

Ich hatte hier schon mal über Performance Tests mit Apache Bench geschrieben. Mit Gatling kann man nicht nur URLs abrufen, sondern auch Anmeldungen oder Formulare ausfüllen. D.h. man kann mit Gatling testen wie sich die Website verhält wenn sich z.B. 100 User gleichzeitig sich an einer Website anmelden. Gatling erwartet vordefinierte Testsskripte als Java Funktion und kann diese Tests über die Commandozeile gestartet werden.

Um einen eigenen Test zu definieren muss man im Gatling Verzeichnis Simulations, in diesem Fall /var/gatling/user-files/simulations/basic, eine eigene Testdatei erzeugen. Innerhalb von Simulations kann man eigene Unterordner definieren und die Testskripte nach eigenem Wunsch ablegen.

Die folgende Testdatei certread.scala ist ein einfacher Test mit dem Namen My Scenario definiert, der auf meinem Webserver (ci-server) eine URL abruft und übperprüft, ob die Seite mit dem HTTP Status 200 ausgeliefert wurde:

import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import com.excilys.ebi.gatling.http.Headers.Names._
import akka.util.duration._
import bootstrap._
 
class certread extends Simulation {
 
val scn = scenario("My scenario")
            .exec(
		http("My Page")
              .get("http://ci-server/certread")
		.check(status.is(200)))
 
setUp(scn.users(100))
 
}

Der Befehl scn.users(100) definiert in diesem Fall die Anzahl der Benutzer die die URL abfragen. D.h. hier kann man einfach die Anzahl erhöhen und beim nächsten Testdurchlauf wird die gewünschte Zahl von Abrufen genommen.

Um den vordefinierten Testfall mit Gatling starten zu können, empfhielt sich die Kommandozeile zu nehmen und mit dem Parameter -s einfach den Klassen Namen zu starten:

/var/gatling/bin/gatling.sh -s certread

Wenn der Test durchgeführt wurde, erhält man folgende Informationen in der Kommandozeile:

screenshot der kommendozeile von gatline

Wenn man nun hergeht und sich den generierten Report von Gatling mal anschaut, sieht das dann in etwa so aus:

Ich finde die Gatling Reports informativ, übersichtlich und einfach hübsch 😉

Wenn man ein wenig nach Gatling im Internet sucht, wird man schnell fündig. Es scheint eine stark verbreitetes Tools zu handeln. Es gibt auch ein Jenkins Plugin, welches allerdings nur mit Maven funktioniert. Ich werde sicherlich die kommende Tage das mal eigenes Skript basteln um meine PHP Projekte damit über Jenkins ebenfalls prüfen zu lassen.

http://www.agile-coding.net/performance-test-mit-gatling/