Warum phpunit verwenden, wenn herkömmliche manuelle Tests verwendet werden können?

14

Wenn ich eine Web-App erstelle, teste ich meine Arbeit im Browser, um festzustellen, ob ich Fehler erhalte, und behebe sie. Ich habe komplexe Anwendungen erstellt und das Testen auf diese Weise war einfach und schnell. Ich habe auf youtube viele Videos über phpunit gesehen und kann keinen Zweck dafür finden. Warum ist diese Bibliothek nützlich? Ist phpunit mehr für PHP-Framworks wie cakephp oder zend? Ich benutze kein Framework, nur Core-PHP. Wäre oder kann phpunit für mich nützlich sein? Wenn ja wie

Es gibt auch xdebug, aber ich bin mir nicht sicher, ob es damit zusammenhängt.

Sarmen B.
quelle
5
Wie lange dauert es, bis Sie eine komplexe Anwendung in jeder Ecke überprüft haben?
@ user1249, phpUnit kann noch keine automatisierten Funktionstests durchführen. Es werden nur automatische Komponententests durchgeführt.
Pacerier

Antworten:

12

Wäre oder kann phpunit für mich nützlich sein? Wenn ja wie

Ja auf jeden Fall.

phpunit gehört zur Familie der xUnit-Testbibliotheken . Mit diesen Bibliotheken erstellen Sie automatisch ausführbare Tests, die das Verhalten Ihrer Anwendung überprüfen. Dies ist unter anderem wichtig, um sicherzustellen, dass Ihre Änderungen die vorhandene Funktionalität nicht beeinträchtigen.

Alle Gründe für automatisierte Tests aufzulisten, die verschiedenen Arten und Technologien wären zu viel. Lesen Sie die folgenden Links:

BenR
quelle
ironischerweise der erste link von o'reilly 404'd
Félix Gagnon-Grenier
6

Angenommen, Sie wollten Ihre Anwendung bei jeder Bereitstellung manuell testen. Wie würden Sie das machen?

Zunächst einmal könnten Sie eine Liste aller Dinge erstellen, die Sie testen möchten, damit Sie später nicht vergessen, etwas zu testen. Dann würden Sie wahrscheinlich die Schritte für jeden Test aufschreiben, um sicherzustellen, dass Sie sie jedes Mal auf die gleiche Weise durchgeführt haben. Wenn Sie nicht sicherstellen würden, dass der von Ihnen verwendete Testprozess konsistent ist, wären Ihre Ergebnisse nicht konsistent.

Nun, da Sie die Liste der Tests haben, die Sie durchführen müssen, öffnen Sie Ihren Browser, lesen Sie die Schritte des ersten Tests, führen Sie sie durch und notieren Sie sich das Ergebnis. Sie würden diesen Vorgang für jeden Test in Ihrer Liste wiederholen.

Die Anzahl der Tests, die Sie durchführen, würde mit der Zunahme Ihrer Anwendung und dem Auffinden neuer Fehler weiter zunehmen. Sie können diese Tests natürlich nur mit menschlicher Geschwindigkeit durchführen, was sie ziemlich langsam macht.

Die Ironie dabei ist, dass Sie beim mechanischen Durchlaufen einer Liste von Operationen rechnen. Du machst es einfach viel langsamer als zum Beispiel ein Computer.

Dies ist neben vielen anderen guten Gründen der Grund, warum wir Komponententests schreiben: Sie überlassen es dem Computer, das Rechnen zu erledigen, damit Sie es nicht müssen.

Ich kann eine umfassende Unit-Test-Suite schnell genug ausführen, um sie während der Entwicklung häufig zu verwenden, nicht nur einmal pro Woche vor der Bereitstellung. So kann ich Fehler schneller erkennen und Zeit und Geld sparen.

Ich kann sogar Tests schreiben, die das Verhalten des Systems vorhersagen, und dann dieses Verhalten schreiben (von dem ich bereits weiß, dass es richtig ist, weil ich es gerade getestet habe), ein Prozess, der als Test Driven Development bekannt ist.

Rein Henrichs
quelle
5

Manuelle Tests (dh Klicken auf die Anwendung im Browser) werden eigentlich als Funktionstests bezeichnet. Funktionstests und Komponententests sind zwei verschiedene Methoden, die in der Qualitätssicherung verwendet werden. Warum denkst du, kannst du sie nicht beide benutzen?

Unit-Tests werden verwendet, um zu testen, ob Ihr Code wie erwartet funktioniert (z. B. ob Ihr Web-Service Fehler angemessen behandelt oder die Ergebnisse wie erwartet zurückgibt).

Wenn Sie auf Ihre Anwendung klicken, testen Sie die Funktionalität Ihrer Anwendung.

Wäre oder kann phpunit für mich nützlich sein? Wenn ja wie

Unit-Tests haben viele Vorteile - sie können beim Refactoring sehr nützlich sein, da Sie bestätigen können, dass der Code wie erwartet funktioniert. Wenn jemand Ihren Code liest, kann es auch sehr hilfreich sein, die beabsichtigte Verwendung des Codes in den Komponententests zu überprüfen.

Christian P
quelle
Unit Tests testen auch das Verhalten. Sie schaffen eine falsche Dichotomie.
Rein Henrichs
@ ReinHenrichs, Funktionstests werden von Selen durchgeführt, nicht von PHPUnit.
Pacerier
1

Ja!

Ja. Absolut ja.

Eigentlich braucht das Qualifikation. Unit-Testing-Frameworks wie PHPunit sind nützlich, wenn Sie eine Anwendung schreiben und warten, die von anderen Personen verwendet werden soll.

Die Gründe, warum Unit-Tests nützlich sind, umfassen

  • Regressionstests für bestimmte Fehler, die Sie aufgedeckt haben, und

  • Das Ausführen von Komponententests ist viel schneller als das manuelle Testen und kann daher viel gründlicher sein.

In der Firma, für die ich arbeite, schreiben wir Unit-Tests, bevor wir den Code schreiben, der sie übergibt. Dies hilft uns dabei, vernünftige, testbare Designs zu erstellen (da wir überlegen müssen, was wir schreiben, bevor wir es tun!) Und es bietet eine einfache Möglichkeit, zu behaupten, dass unser Code den Anforderungen des Benutzers entspricht.


quelle