Von Helmut Sachsenhausen auf Donnerstag, 23. April 2020
Kategorie: System Integration

Bash Automated Testing System (Bats)

Bei Bats (https://github.com/bats-core/bats-core) handelt es sich um ein TAP-compliant (Test anything Protocol) Testing Framework für die Bash. Es bietet einen einfachen Weg, um eigene UNIX-Programme zu verifizieren und sicherzugehen, dass sie sich so verhalten wie erwartet. Für Debian-basierte Distributionen gibt es das Paket Bats, auf anderen Distributionen muss bats manuell installiert werden. Entwickelt wurde Bats von Sam Stephenson. Die aktuelle Version ist Bats 1.2.0.

Beispiel/Use-Case:

Es soll ein Webserver in einem Docker-Container (httpd:2.4) mittels docker-compose angelegt und gestartet werden. Vorher soll von Bats getestet werden, ob der Webserver läuft und ob der Port erreichbar ist. Zudem wird überprüft, ob die Startwebseite „Hallo ORDIX" ausgibt. Dieser Container kann jetzt gestoppt, gestartet und entfernt werden. Die docker-compose.yml-Datei hat folgenden Inhalt:

Implementierung:

Bevor der Test gestartet werden kann, müssen die einzelnen Tests erstellt werden. Dazu wird ein Makefile zum Starten der verschiedenen Testcases und Containeroperationen benutzt. Dieses lädt die einzelnen Testfälle, sodass sie danach ausgeführt werden können.

Bats Dateien

  In der Datei test_helper.bash sind verschiedene Funktionen definiert, in denen die jeweiligen Tests gestartet, konfiguriert, usw. werden.

In der Datei test-all.bats werden die Ausgaben und Returncodes der Befehle aus test_helper.bash ausgewertet und geprüft.

Die Ergebnisse der Tests sehen wie folgt aus:

# bats test-all.bats
✓ Test already-up container apache
✓ Test running container apache
✓ Test ports of container apache: 0.0.0.0:80->80/tcp
✓ Run curl (/mnt/index.html): Hallo ORDIX

Fazit 

Softwaretests sind ein wichtiges Mittel, um fehlerfreie Software zu erstellen. Mit Bats gibt es ein kleines und einfaches Tool zum strukturierten und automatischen Testen von Bash-Programmen.

Kommentare hinterlassen