9 Beste automatisierte Testframeworks für PHP
Haben Sie schon lange Stunden damit verbracht, Ihren PHP-Code zu debuggen? Für die meisten Programmierer ist dies wahrscheinlich nicht die faszinierendste Herausforderung, aber es gibt eine Lösung, die uns dabei helfen kann, diese langwierige Aufgabe zu verkürzen. Automatisiertes Testen kann den Workflow der PHP-Entwicklung erheblich verbessern zulassen, dass vorab geschriebene Tests den Entwicklungsprozess vorantreiben.
In diesem Beitrag werden wir versuchen zu verstehen Warum automatisiertes Testen so cool ist, wie es funktioniert und was ist die besten Testframeworks Sie können mit anfangen.
Warum ist das Testen wichtig?
Anfänger von PHP-Entwicklern schreiben normalerweise keine Tests für ihren Code. Die meisten von uns begannen unsere Karriere mit dem Testen neuer Funktionen und Funktionen, die wir gerade im Browserfenster geschrieben hatten, und wenn etwas schief ging, waren wir ahnungslos, was zu tun war.
Wenn Sie Tests für unseren Code schreiben, können Sie wertvolle Debugging-Zeit und viele Stunden Kopfschmerzen sparen. Wenn ungeprüfter Code in Produktion geht, werden die Bewertungen, die wir erhalten werden, wahrscheinlich nicht so schön sein. Also was können wir tun?
Wahrscheinlich ist die beste Idee zu einen produktiven Testworkflow einrichten Hier müssen wir unseren eigenen Testcode schreiben, der überprüft, ob unser Anwendungscode ordnungsgemäß funktioniert.
Der Trick ist das Der Testcode muss vor dem Anwendungscode geschrieben werden. Auf diese Weise können wir von Anfang an sicherstellen, dass der von uns geschriebene Code ordnungsgemäß funktioniert. Der Testcode wird in separaten Dateien gespeichert. Wenn wir später auf Fehler in unserer PHP-App stoßen, müssen wir nichts weiter tun. Führen Sie einfach unsere Tests durch, die hoffentlich dazu führen werden geben Sie uns richtige Hinweise zu den Problemen.
Abgesehen von der Zeitersparnis und der richtigen Vorbereitung unserer App für die Produktion hat das Testen auch viele andere Vorteile, z.
- wartungsfähiger Code
- Erleichtertes Refactoring
- weniger Sicherheitsprobleme
- weniger aufgeblähte Codebasis (Anpassung des Anwendungscodes an den vorab geschriebenen Testcode führt dazu, dass auf überflüssige Teile verzichtet wird)
- bessere Leistung
Was ist automatisiertes Testen??
Natürlich können wir unsere Tests manuell schreiben, aber nach einer Weile kann es bei vielen sich wiederholenden Aufgaben mühsam und zeitaufwändig sein. Manuelle Tests können durch automatisierte Tests ersetzt werden, bei denen spezifische Software verwendet wird, die die lästige Arbeit für uns erledigt, und wir können mehr Zeit mit der Erstellung der Logik des Testcodes verbringen.
Zum Glück ist PHP eine ziemlich beliebte Programmiersprache, daher gibt es viele automatisierte Testframeworks, aus denen wir wählen können.
Testgetriebene Entwicklung (TDD) vs. Verhaltensgetriebene Entwicklung (BDD)
Die beiden wichtigsten Ansätze, die automatisierte Testframeworks verwenden, sind Test-Driven Development (TDD) und Verhaltens-Driven Development (BDD). In beiden Fällen wird der Entwicklungsprozess durch Tests gesteuert, dh Tests werden vor dem Anwendungscode geschrieben.
Der Hauptunterschied zwischen testgesteuertem und verhaltensgesteuertem Testen liegt in der Syntax des Testcodes: TDD verwendet in den Testdateien richtigen PHP-Code, während BDD verwendet vom Menschen lesbare Sätze Sie beschreiben das Verhalten jedes Features und können auch von nichttechnischen Interessengruppen verstanden werden.
Ein TDD-Test sieht im Code-Editor folgendermaßen aus, es handelt sich lediglich um normalen objektorientierten PHP-Code:
Ein BDD-Test ist dem ähnlich, auch Nicht-Programmierer können dies verstehen:
10 Automatisierte PHP-Testframeworks
Sehen wir uns 10 leistungsfähige automatisierte Testframeworks an, die Sie für PHP verwenden können.
1. PHPUnit
PHPUnit ist das bekannteste Testframework für das Schreiben von Unit Tests für PHP-Apps. Unit-Tests benötigen kleine Teile des Codes, die als Units bezeichnet werden, und testen sie einzeln. Mit Hilfe von PHPUnit können wir eine testgetriebene Entwicklung durchführen.
Es kann über die verwendet werden Befehlszeile, und es gibt uns eine praktische TestCase-Klasse dass wir entsprechend unseren Bedürfnissen erweitern können. PHPUnit erlaubt auch Entwicklern die Verwendung vorab geschriebene Bestätigungsmethoden, um zu bestätigen, dass sich die App auf bestimmte Weise verhält.
2. Codeception
Codeception ermöglicht nicht nur das Schreiben von Komponententests, sondern auch Funktions- und Abnahmetests. Diese beiden letzteren testen die PHP-App als Ganzes, wobei alle Funktionen miteinander verbunden sind, nicht als Einheiten. Mit Codeception können wir verschiedene Module entsprechend unseren Entwicklungsanforderungen aktivieren und konfigurieren.
Es ist in viele PHP-Entwicklungsframeworks wie integriert Symfony2, Laravel4, Yii, Phalcon und das Zend Framework. Dies bedeutet, dass wir ein PHP-Testframework für die Automatisierung und ein PHP-Entwicklungsframework zusammen verwenden können, um einen supereffizienten Entwicklungsworkflow zu etablieren.
3. Behat
Behat ist ein beliebtes, verhaltensorientiertes PHP-Testframework. Die Tests, die wir mit Behat schreiben können, sehen eher aus wie Geschichten als Code. Behat verwendet den StoryBDD-Subtyp der verhaltensgesteuerten Entwicklung (der andere Subtyp ist SpecBDD).
Das Framework wurde vom Cucumber-Projekt inspiriert, einem Test-Framework für die Programmiersprache Ruby.
4. PHPSpec
PHPSpec folgt ebenfalls dem verhaltensgesteuerten Testansatz, jedoch mit dem anderen Subtyp SpecBDD. Mit PHPSpec müssen wir Schreiben Sie zuerst die Spezifikationen, die beschreiben, wie sich der Anwendungscode verhält. Es wurde auch von einem Ruby-Test-Framework namens RSpec inspiriert.
5. Storyplayer
Storyplayer ist ein Full-Stack-Test-Framework, das es möglich macht End-to-End-Tests für eine gesamte Plattform schreiben. Storyplayer hat Unterstützung für Erstellen und Zerstören von Testumgebungen bei Bedarf. Es folgt dem TDD-Testansatz und ermöglicht uns das Schreiben von Funktionstests, mit denen eine Anwendung als Ganzes geprüft werden kann.
6. Peridot
Peridot ist ein leichtes, erweiterbares Testframework für PHP. Es kennzeichnet ein ereignisgesteuerte Architektur das erlaubt Testern leicht Passen Sie das Framework über Plugins und Reporter an.
Peridot verwendet die beschreibe es Syntax, um eine klare und lesbare Testsprache zu erstellen, die klar beschreibt, wie sich der Anwendungscode verhalten soll.
7. Atoum
Atoum ist ein intuitives und modernes PHP-Testframework, mit dem wir Unit-Tests ausführen können. Es vereinfacht die Testentwicklung und nutzt als junges Framework einige neuere Funktionen, die in PHP 5.3 eingeführt wurden (dies ist möglich)Kann nicht mit älteren PHP-Versionen verwendet werden) um uns einen schnellen und leicht verständlichen Testprozess zu ermöglichen.
Atoum sorgt für eine Hohe Sicherheit während der Testdurchführung, da es jede Testmethode in ihrem eigenen PHP-Prozess isoliert.
8. Kahlan
Kahlan ist ein voll funktionsfähiges BDD-Test-Framework, mit dem Sie Unit-Tests mit dem schreiben können beschreibe es Syntax. Es umfasst das KISS-Konstruktionsprinzip (Keep It Simple, Dumm). Kahlan erfordert mindestens PHP 5.5.
Es hat eine kleine Codebasis, es wird gesagt, dass es etwa zehnmal kleiner als PHPUnit ist, und es hat viele Funktionen, die uns einen erweiterbaren und anpassbaren Testworkflow bieten.
9. Selen
Selenium ist ein hochentwickeltes Testframework, das Browser automatisiert. Dies bedeutet, dass es möglich ist, Benutzerakzeptanztests zu schreiben untersuchen Sie die gesamte App als Ganzes.
Selenium ist ein robustes Tool, das über eine eigene WebDriver-API verfügt, mit der ein Browser nativ gesteuert werden kann Ein echter Benutzer würde es jedoch entweder lokal oder auf einem Remote-Computer verwenden. Selen ist ein hervorragendes Werkzeug zum Testen ausgereifterer Webanwendungen.
Abschließende Gedanken
Automatisierte Testframeworks befähigen uns, qualitativ hochwertigeren PHP-Code zu schreiben, und aufgrund der Beliebtheit der Sprache haben wir viele Auswahlmöglichkeiten, sodass wir uns für die entscheiden können, die unsere Entwicklungsanforderungen am besten erfüllt.
Es gibt jedoch eine wichtige Sache, die wir immer im Auge behalten müssen. Automatisiertes Testen kann leistungsstark sein, aber es kann Ersetzen Sie niemals Beta-Tests - Tests durchgeführt von echten Menschen, die die zukünftigen Benutzer der Anwendung sein werden.