© saicle/Shutterstock.com
PHP Magazin
Mit Codeception innerhalb von wenigen Minuten Projekte testen

Fangt einfach an!

Der Vorteil von automatisierten Tests liegt auf der Hand: Neben der Zeitersparnis gegenüber dem manuellen Klicken ist das kontrollierte Abrufen von Seiten mit vorher definierten Tests eine zusätzliche Kontrolle der eigenen Arbeit - und das schon während der Entwicklung. Dass das Schreiben von Tests für die eigene Applikation kein Hexenwerk ist und schnell von der Hand geht, werde ich in diesem Artikel mittels des Testtools Codeception nachweisen.

Andreas Mautz


Codeception [1] ist ein Framework zum automatisierten Testen von Webapplikationen. Es nutzt Selenium und WebDriver zur Fernsteuerung der gebräuchlichsten Browser sowie den Headless-Browser PhantomJS. Zum Testen von Projekten installiert man auf dem Mac mit den folgenden Kommandos die benötigten Pakete. Zusätzlich braucht man Composer:

brew install selenium-server-standalonebrew install phantomjsbrew install chromedriver

Installation

Im zu testenden Projekt laden und installieren wir Codeception. Der folgende Befehl erstellt die grundlegende Ordnerstruktur und die Konfigurationsdateien:

cd /path/to/my/projectwget http://codeception.com/codecept.pharphp codecept.phar bootstrap

Wir haben jetzt in unserem Projektordner zusätzlich den Ordner /tests/ mit verschiedenen Unterordnern für die verschiedenen Testszenarien und den Output sowie die ausführbare Datei codecept.phar und die Hauptkonfigurationsdatei codeception.yml (Abb. 1).

Damit sind wir nun startklar. Die Eingabe von php codecept.phar zeigt die verfügbaren Kommandos.

Abb. 1: Liste der Codeception-Kommandos

Konfiguration

Die Hauptkonfiguration in der codeception.yml regelt die generellen Settings. Für die ersten Tests reichen zwar die Standardsettings, ich empfehle zusätzlich aber das Codeception-Modul Recorder, um Screenshots beim Testen erzeugen zu lassen, die man später sehr gut sichten kann. Die Konfiguration wird aus diesem Grund um weitere Extensions erweitert (Listing 1).

Listing 1extensions: enabled: - Codeception\Extension\RunFailed - Codeception\Extension\Recorder config: Codeception\Extension\Recorder: delete_successful: true

Sollte es jetzt in einem Test zu einem Fehler kommen, hat man direkt beim Auftreten des Fehlers einen Screenshot der betreffenden Seite im Zustand des Tests. Das spart Zeit beim Auffinden und Kommunizieren des Fehlers.

Testen

Codeception unterstützt sowohl Akzeptanz- und Unit Tests als auch funktionale Tests. Wir werden uns an dieser Stelle um die Akzeptanztests kümmern, also um das Testen der Website aus Usersicht. Diese Tests sind im Vergleich zu anderen langsamer, da sie auf ferngesteuerten Browsern laufen. Dafür bieten sie jedoch die Testbarkeit von AJAX-Funktionalität und JavaScript und präsentieren auf der Ergebnisseite eine sehr gute und übersichtliche Darstellung über den Zustand und die Benutzbarkeit des Frontends. Doch dazu später mehr. Wir nutzen nun das CLI, um eine erste Testdatei zu erzeugen:

php codecept.phar generate:cept acceptance Home

Die so erzeu...

PHP Magazin
Mit Codeception innerhalb von wenigen Minuten Projekte testen

Fangt einfach an!

Der Vorteil von automatisierten Tests liegt auf der Hand: Neben der Zeitersparnis gegenüber dem manuellen Klicken ist das kontrollierte Abrufen von Seiten mit vorher definierten Tests eine zusätzliche Kontrolle der eigenen Arbeit - und das schon während der Entwicklung. Dass das Schreiben von Tests für die eigene Applikation kein Hexenwerk ist und schnell von der Hand geht, werde ich in diesem Artikel mittels des Testtools Codeception nachweisen.

Andreas Mautz


Codeception [1] ist ein Framework zum automatisierten Testen von Webapplikationen. Es nutzt Selenium und WebDriver zur Fernsteuerung der gebräuchlichsten Browser sowie den Headless-Browser PhantomJS. Zum Testen von Projekten installiert man auf dem Mac mit den folgenden Kommandos die benötigten Pakete. Zusätzlich braucht man Composer:

brew install selenium-server-standalonebrew install phantomjsbrew install chromedriver

Installation

Im zu testenden Projekt laden und installieren wir Codeception. Der folgende Befehl erstellt die grundlegende Ordnerstruktur und die Konfigurationsdateien:

cd /path/to/my/projectwget http://codeception.com/codecept.pharphp codecept.phar bootstrap

Wir haben jetzt in unserem Projektordner zusätzlich den Ordner /tests/ mit verschiedenen Unterordnern für die verschiedenen Testszenarien und den Output sowie die ausführbare Datei codecept.phar und die Hauptkonfigurationsdatei codeception.yml (Abb. 1).

Damit sind wir nun startklar. Die Eingabe von php codecept.phar zeigt die verfügbaren Kommandos.

Abb. 1: Liste der Codeception-Kommandos

Konfiguration

Die Hauptkonfiguration in der codeception.yml regelt die generellen Settings. Für die ersten Tests reichen zwar die Standardsettings, ich empfehle zusätzlich aber das Codeception-Modul Recorder, um Screenshots beim Testen erzeugen zu lassen, die man später sehr gut sichten kann. Die Konfiguration wird aus diesem Grund um weitere Extensions erweitert (Listing 1).

Listing 1extensions: enabled: - Codeception\Extension\RunFailed - Codeception\Extension\Recorder config: Codeception\Extension\Recorder: delete_successful: true

Sollte es jetzt in einem Test zu einem Fehler kommen, hat man direkt beim Auftreten des Fehlers einen Screenshot der betreffenden Seite im Zustand des Tests. Das spart Zeit beim Auffinden und Kommunizieren des Fehlers.

Testen

Codeception unterstützt sowohl Akzeptanz- und Unit Tests als auch funktionale Tests. Wir werden uns an dieser Stelle um die Akzeptanztests kümmern, also um das Testen der Website aus Usersicht. Diese Tests sind im Vergleich zu anderen langsamer, da sie auf ferngesteuerten Browsern laufen. Dafür bieten sie jedoch die Testbarkeit von AJAX-Funktionalität und JavaScript und präsentieren auf der Ergebnisseite eine sehr gute und übersichtliche Darstellung über den Zustand und die Benutzbarkeit des Frontends. Doch dazu später mehr. Wir nutzen nun das CLI, um eine erste Testdatei zu erzeugen:

php codecept.phar generate:cept acceptance Home

Die so erzeu...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang