Testautomatisierung in PHP – Welche Arten es gibt, wofür sie genutzt werden und welche Vorteile sie bieten

Testautomatisierung in PHP – Welche Arten es gibt, wofür sie genutzt werden und welche Vorteile sie bieten

15. November 2017 Webentwicklung

Der Klassiker – Unit-Tests

Modul- oder Unit-Tests werden vom Programmierer meist vor oder direkt nach der Entwicklung einer Komponente eines System geschrieben. Ziel eines Unit-Tests ist es, genau diese eine Komponente – diese Unit – auf Ihre korrekte Funktionalität hin zu prüfen. Im PHP-Bereich setzt unsere Agentur dafür den Platzhirsch – PHPUnit – ein.

Da einzelne Module oft Abhängigkeiten zu anderen Komponenten besitzen, also beispielsweise im laufenden Betrieb einen Datensatz in einem bestimmten Format übergeben bekommen, werden diese Abhängigkeiten in Unit-Tests durch Dummy-Daten s.g. Mocks ersetzt und so die Testbarkeit gewährleistet. Diese Mocks müssen vielfältig gestaltet sein und die Unit-Tests jeden möglichen Fall überprüfen um auftretende Fehlverhalten des Units testen zu können.

Der Vorteil von Unit-Tests ist, dass diese relativ schnell entwickelt sind und – für sich und in der Regel – extrem schnell ausgeführt werden, da sie eben nur eine einzelne Unit, eine einzeln eFunktion des Systems testen. Ein Nachteil der Unit-Tests ist gleichzeitig ein Vorteil, der Punkt des minimalen Testbereichs. So ist durch den Unit-Test zwar die korrekte Arbeit der einzelnen Unit bzw. Funktion sichergestellt. Ob diese dann im laufenden Betrieb wirklich korrekt mit anderen Komponenten und schließlich dem gesamten System funktioniert, sollte schließlich durch Integrationstests sichergestellt werden.

Der Dauerbrenner – Integrationstests

Integrationstests gehen einen Schritt weiter als Unit-Tests. Sie testen das System ab einem vordefinierten Einstiegspunkt oder über eine Schnittstelle zum System. Die Tests sind zum Überprüfen der korrekten Zusammenarbeit von Komponenten oder bzw. Units Ihres Systems.

Geschrieben werden diese Integrationstests ebenfalls meist parallel zur Entwicklung der Komponenten. Ziel im Gegensatz zu den Unit-Tests ist es, zu Prüfen, ob es Probleme bei der Zusammenarbeit von Komponenten oder Units miteinander gibt. Der Test läuft ab dem definierten Einstiegspunkt, von Oben nach Unten durch das System und prüft, ob das gewünschte Ergebnis erzielt wird.

Integrationstest, die auch als „Continuous Integration“ betitelt werden, sind im Gegensatz zu Unit-Tests auch in der Ausführungszeit wesentlich umfassender und werden daher zumeist auf speziellen Servern automatisch ausgeführt. Unsere Agentur setzt zur Automatisierung von Integrationstest auf die Lösung Jenkins .

 

 

Der Perfektionist – UI-Tests

Ziel der UI-Tests ist, im Gegensatz zu den zuvor benannten Tests, das Frontend. Meist werden diese Tests durch eine automatisierte Fernsteuerung der Benutzeroberfläche realisiert. Im Detail bedeutet dies, dass eine Software auf das System los gelassen wird, die vordefinierte Arbeitsschritte über das User-Interface simuliert, ähnlich wie es auch ein Benutzer tuen würde und jeweils die Ergebnisse der Aktion auswertet.

Nachteil dieser Tests ist, dass diese recht zeitaufwendig in der Erstellung und sehr langsam in Ihrer Ausführung sind. Dies liegt daran, dass sie zumeist direkt in einem echten Browser Klick-Abläufe simulieren, die eben ihre Zeit benötigen.

UI-Tests werden daher im Gegensatz zu Unit- oder Integrationstests erst dann erstellt, wenn die Benutzeroberfläche eine gewisse Stabilität erreicht hat und nicht mehr umfangreichen Änderungen unterzogen werden soll.

UI-Tests werden auch oft nur für Kernfunktionen des Systems angelegt, für Funktionen also, die häufig genutzt oder essentiell für die Bedienung sind. Unsere Agentur nutzt für automatisierte Tests hier seit Jahren erfolgreich Selenium.

 

Sie haben Fragen zur Automatisierung von Testabläufen oder zur Implemetierung von Lösungen zur Testautomatisierung Ihrem Unternehmen? Kontaktieren Sie uns, wir beraten Sie gern.

Über den Author

Stefan Pingel: Ist Gründer & Geschäftsführer der Agentur 404MEDIA. Er studierte Web Applications Development und betreut seit 15 Jahren Unternehmen jeder Branche und Größe im Hinblick auf die Entwicklung webgestützter Anwendungssoftware, E-Commerce sowie Marketing.