In den letzten beiden Artikeln haben wir uns eingehend mit der Theorie der Unit-Tests befasst und wie sie uns bei der Entwicklung von WordPress helfen kann. Wir haben Unit-Tests definiert und verschiedene Möglichkeiten untersucht, wie wir uns bei unseren Projekten unterstützen können.
Aber wir haben noch mehr zu berichten.
In diesem abschließenden Artikel werden wir prüfen, warum wir uns überhaupt mit dem Komponententest beschäftigen sollten, und fassen die Vor- und Nachteile zusammen. Als nächstes werden wir uns ansehen, wie wir unsere bestehenden Projekte nachrüsten können. Zum Abschluss fassen wir eine Liste von Ressourcen zusammen, die speziell für uns WordPress-Entwickler zur Verfügung stehen und Ihnen helfen werden, unsere Themen zu testen.
Das übergreifende Thema dieser gesamten Serie befasste sich mit der Frage, warum wir uns mit Unit-Tests beschäftigen sollten. Wenn dies jedoch nicht kurz gesagt wurde, gilt Folgendes:
Unit Testing hilft uns dabei, Probleme frühzeitig zu erkennen, Entwicklern eine Menge selbstdokumentierenden Codes zur Verfügung zu stellen und eine höhere Qualität der Software zu erreichen.
Zugegeben, dies setzt voraus, dass wir das Üben von guten Einheitentesttechniken durchführen. Natürlich wurde dies im vorherigen Artikel ausführlich behandelt, aber es lohnt sich, dies noch einmal zu wiederholen.
Zu beachten ist - insbesondere, wenn Sie versuchen, dies in einer eher geschäftlichen Umgebung oder in einem größeren Unternehmen anzuwenden -, dass Komponententests nicht nur etwas sind, was Entwickler für sich selbst tun. Qualität ist zweiseitig - sie profitiert vom Kunden und dem Unternehmen.
Durch die Bereitstellung eines höheren Qualitätsniveaus für den Kunden - das heißt gründlich getesteter Software - sollten weniger Fehler auftreten. Da Fehler zu einer Zeit führen, die Entwickler mit der Lösung verbringen müssen, anstatt an neuen Projekten oder neuen Funktionen bestehender Produkte zu arbeiten, kann dies letztendlich Geld sparen.
Durch die Bereitstellung eines höheren Qualitätsniveaus für das Unternehmen sind die Entwickler sicherer in ihren Bemühungen, da sie bei jeder Änderung eine Reihe von Tests durchführen können, wenn sie wissen, wie sich ihre Arbeit auf die gesamte Anwendung auswirkt. Wenn ein Test fehlschlägt, können sie ihn vor der Bereitstellung in der Produktion beheben.
Bei Unit Testing geht es um Qualität. Es betrifft nicht nur die Benutzer, die den Code schreiben, sondern auch das Unternehmen, das ihn versendet, und die Kunden, die ihn verwenden.
Die Wahrheit ist, wir haben bereits die Vorteile des Komponententests behandelt. Der Vollständigkeit halber wollen wir sie hier zusammenfassen (obwohl Sie sie immer im Detail überprüfen können!). Stückprüfung…
Alles hört sich gut an, richtig? Und ja, es wird vorausgesetzt, dass sich die Entwickler für hohe Standards und Vorgehensweisen zur Rechenschaft ziehen, wenn es darum geht, dies in der täglichen Arbeit umzusetzen, aber Unit-Tests sind nicht ohne Nachteile.
Dies wurde in dieser Serie gesagt: Die Prüfung von Einheiten erfordert eine erhebliche Zeitintensität. Zugegeben, wenn Sie ein neues Projekt beginnen, ist die Zeitinvestition viel geringer als wenn Sie dies in eine vorhandene Anwendung einpassen, aber Sie sind es immer noch Sie müssen mehr Code schreiben als ohne zu testen.
Da Sie mehr Code schreiben, nehmen Sie sich mehr Zeit - am vorderen Ende des Projekts. Die Vorteile von Komponententests ergeben sich häufig erst später, aber wenn ein Projekt ein bestimmtes Zieldatum für die Veröffentlichung hat und diese Version eine bestimmte Anzahl von Funktionen enthält, werden Sie wahrscheinlich nicht alle Komponententests und Funktionen in diese Version integrieren die Freisetzung.
Wenn Sie kleinere Feature-Sets zum Release oder verzögerte Zieldaten vermeiden möchten, müssen Sie dies tun haben rechtzeitig für Unit-Tests bauen.
Sie haben alle gehört: Komplexität tötet, halte es einfach dumm, weniger ist mehr und so weiter.
Ehrlich gesagt, alle diese Punkte sind wahr und sie haben ihren richtigen Platz in der Entwicklung, aber die Tatsache ist, dass diese Einheit getestet wird ist zusätzlicher Code und zusätzlicher Code immer führt zu mehr Komplexität. Daher müssen wir sicherstellen, dass wir alle unsere Unit-Tests ordnungsgemäß verwalten und organisieren können.
Möglicherweise ist dies die Dateiorganisation oder der Namensabstand oder Namenskonventionen oder versionierte Tests oder alle oben genannten. Was auch immer Sie am Ende tun, Unit-Tests sollten in der Welt der Software nicht als Bürger zweiter Klasse behandelt werden - sie sollten den gleichen Konstruktionsprinzipien wie andere Klassen oder Funktionen so weit wie möglich unterliegen.
Ja, im letzten Artikel haben wir gesagt, dass Komponententests dazu beitragen können, das Design einer Anwendung voranzutreiben und ein Design zu fördern, das die gesamte Anwendung testfähiger macht. Dies ist immer noch wahr, aber es ist mit einem Aufwand verbunden: Manchmal ist das am besten überprüfbare Design nicht das klarste.
Damit meine ich, dass, weil eine Reihe von Funktionen - oder sogar eine Klasse - vollständig Unit-getestet ist, die Kohäsion das Potenzial hat, gefährdet zu werden, weil wir den Zugriff auf bestimmte Funktionen opfern, um ihre Datenverarbeitung zu überprüfen. Natürlich ist dies keine strenge und schnelle Regel, und für manche ist dies vielleicht nicht einmal ein Problem, aber Sie müssen entscheiden, worüber Sie dogmatisch werden sollen: Ist es ein perfekt konstruierter Satz von Klassen und oder Funktionen oder? ein zusammenhängendes System von Tests und Funktionen, die zusammenarbeiten?
Letztendlich glaube ich, dass es darauf ankommt, wie Sie Tests als einen größeren Teil des Ganzen betrachten. Wenn sie Teil des Designs Ihrer Anwendung sind, leidet das Design möglicherweise nicht. Wenn Sie Tests jedoch im Nachhinein betrachten, kann das Design der Kernanwendung nur geringfügig beeinträchtigt werden.
Wie gesagt, Software wird nie gemacht und da das Testen von Einheiten Teil einer Software ist, wird es niemals gemacht.
Da eine Anwendung immer weiterentwickelt wird - sei es, dass Fehler behoben werden, neue Funktionen eingeführt (oder sogar entfernt) werden, müssen die zugehörigen Tests ebenfalls hinzugefügt oder aktualisiert werden. Und es kommt immer wieder auf die Zeit zurück.
Wenn Sie in einem Team von Entwicklern arbeiten, kann sich das Fehlen von Aktualisierungstests auch negativ auf das Team auswirken, da die Ergebnisse, die die Tests melden, falsch-positiv oder falsch negativ sind. Sobald Tests geschrieben sind, müssen sie unbedingt aktualisiert werden. Andernfalls können sie zu einem sehr schlechten Produkt führen.
Unit Testing ist viel einfacher zu verkaufen, wenn Sie mit einem Projekt beginnen. Wenn Sie jedoch eine bestehende Anwendung (oder in unserem Fall ein Design oder Plugin) nachrüsten möchten, wird dies etwas Zeit in Anspruch nehmen Anstrengung.
Und obwohl es für die perfekte Umsetzung keine Silberne Kugel gibt, gibt es einige gute Möglichkeiten, um die Praxis in Ihrer täglichen Arbeit umzusetzen:
Wenn Sie die obigen Schritte befolgen, erhalten Sie schließlich eine erhebliche Menge Code-Abdeckung. Ja, es braucht Zeit und ja, Sie werden wahrscheinlich eine Menge Code überarbeiten müssen, aber die Investition wird in der gleichen Zeit Dividenden für die Zukunft Ihres Produkts bringen.
Hier eine Zusammenfassung der Ressourcen, die zum erfolgreichen Testen Ihrer auf WordPress basierenden Projekte beitragen können:
Zwischen der ersten Artikelserie und dieser Artikelserie wurde ein starkes Fundament gelegt, auf dem Sie fortfahren können, um Ihre Unit-Testverfahren zu entwickeln.