k6 ist ein Open-Source-Lasttest-Werkzeug. Hiermit könnt ihr super einfach eure WebAPIs im Netzwerk testen. Darüber hinaus sind auch Smoke-Test möglich, damit ihr zum Beispiel die Funktion euer API nach einem Update sicherstellen könnt.

In meinem Anwendungsfall möchte ich in einem regelmäßigen Intervall bis dauerhaft testen. Damit ich stromsparend agieren kann, wählte ich einen Raspberry PI als Hardware. Mit ein paar Kniffen bekommt ihr k6 darauf locker zum laufen.

Ich nutze einen Raspberry PI 4 mit folgender Ausstattung:

Raspberry PI 4 mit Metall Gehäuse und Lüfter

Vorbereitung

Installieren von notwendigen Paketen

Ich habe Raspbian installiert. Um k6 zu installieren brauchen wir noch 2 Pakete, da wir k6 direkt aus den Sourcen bauen müssen.

sudo apt install git make

Installieren von GO

Bevor wir k6 installieren können, brauchen wir die Programmiersprache GO auf der k6 basiert.

Der einfachste Weg ist die fertig kompilierte Version vom neusten Stand herunterzuladen und systemweit einzurichten. GO aus dem Paketmanager (apt install golang) ist leider nur in der Version 1.11.x verfügbar. Wir brauchen aber als Minimum 1.14.x.

mkdir /home/go
cd /home/go
wget https://dl.google.com/go/go1.15.1.linux-armv6l.tar.gz
sudo tar -C /usr/local -xzf go1.15.1.linux-armv6l.tar.gz;

export PATH=$PATH:/usr/local/go/bin;
GOPATH=/home/go;
export GOPATH;
export PATH=$PATH:$GOPATH/bin;

Testen der GO Installation

Mit folgendem Befehl in der Konsole seht ihr, ob ihr alles richtig gemacht habt.

$ go version
go version go1.15.1 linux/arm

Damit ihr nicht jedes Mal bei jeder neuen Shell die Export-Befehle setzen müsst, tragt ihr diese am besten in ~/.bashrc ein.

echo "export PATH=$PATH:/usr/local/go/bin;" >> ~/.bashrc
echo "GOPATH=/home/go;" >> ~/.bashrc
echo "export GOPATH;" >> ~/.bashrc
echo "export PATH=$PATH:$GOPATH/bin;" >> ~/.bashrc

Installieren von k6

Zuerst müssen wir das git-Repository von k6 laden.

cd /tmp/
git clone https://github.com/loadimpact/k6.git
cd /tmp/k6
make

Kurze Zeit später sollte k6 fertig gebaut sein. Wir stellen es jetzt noch systemweit zur Verfügung.

mkdir /usr/local/k6
cp /tmp/k6/k6 /usr/local/k6

Noch die Umgebungsvariable setzen und k6 steht zur Verfügung.

export PATH=$PATH:/usr/local/k6;
echo "export PATH=$PATH:/usr/local/k6;" >> ~/.bashrc 

Jetzt können wir k6 testen. Dazu erstellen wir eine neue Datei mit dem Namen script.js.

import http from "k6/http";

export default function() {
    let response = http.get("https://test-api.k6.io");
};

Um den Loadtest zu starten einfach den folgenden Befehl eintippen.

k6 run script.js

Das Ergebnis sieht wie folgt aus.

Happy Testing allerseits,
Cheers Jörg