Test-Framework für WCF/WBB

  • Es kommt leider öfter mal vor, dass ich bei der Plugin-Entwicklung einfache Flüchtigkeitsfehler machen, die dann allerdings darin resultieren, dass ganze Seiten nicht angezeigt werden, dass Funktionalität nicht wie gewünscht funktioniert, usw. Gerade da das Packen und Installieren/Updaten von Paketen immer recht aufwendig ist, wäre es daher schön wenn man vorher Tests programmieren könnte und nicht immer wieder alles erneut manuell testen muss.


    Ich habe dabei an Test-Frameworks wie PHPUnit gedacht. Problematisch ist hierbei allerdings, dass ein sinnvoller Test ohne lokale Installation von WBB nicht möglich ist. Dass es sich bei WBB um proprietäre Software handelt, macht das noch ein bisschen komplexer. Dennoch könnte man dafür Workarounds erstellen.


    Die Frage die sich mir nun stellt, ist ob sich schon jemand Gedanken darüber gemacht hat, wie ein solches Test-Framework funktionieren könnte, oder ob es nicht schon etwas in der Richtung gibt, das kompatibel mit WBB ist. Falls nicht, würden sich Interessenten finden, die bei der Entwicklung davon helfen möchten oder zumindest eigene Ideen einbringen wollen?

  • Zur Zeit entwickle ich ein Plugin, welches man in seiner lokalen WCF / WBB Installation (du darfst das WBB übrigens ein mal lokal - für andere Personen unzugänglich - installieren für Test- und Entwicklungszwecke) hinzufügt. Mit diesem Plugin kann man Live seine Änderungen am PHP Quellcode testen und das anlegen von Optionen, EventListenern und allem anderen sowie das Packen der Pakete wird zum Kinderspiel. Eine Beta Version wird voraussichtlich Anfang März veröffentlicht.


    PHPUnit beziehungsweise allgemein Unit Tests sind für das WCF ungeeignet. Gründe dafür findet man hier im Forum in einigen Themen, zum Beispiel hier.

  • PHPUnit beziehungsweise allgemein Unit Tests sind für das WCF ungeeignet. Gründe dafür findet man hier im Forum in einigen Themen, zum Beispiel hier.

    Auch wenn die dort angesprochenen Punkte zwar größtenteils Sinn ergeben, so denke ich dennoch, dass es möglich ist. Das WCF hat ja selbst ein vorgeschaltetes Bootstrapping, wenn man das Test-Framework also dort einhängt, muss selbst kein großartiger Mehraufwand betrieben werden. Und selbst wenn, genau das wäre ja der Sinn von einem Test-Framework - Einmal muss es programmiert werden, aber wenn es fertig ist: Installiere dir lokal WCF zum Entwickeln, installiere das Test-Framework dazu und programmiere dann deine Tests.


    Primär geht es mir auch eher um UI-Tests als um Unit Tests (habe ich leider etwas missverständlich geschrieben), wie es beispielsweise in Laravel möglich ist (mein favorisiertes PHP Framework)

    PHP
    public function testNewUserRegistration()
    {
        $this->visit('/register')
             ->type('Taylor', 'name')
             ->check('terms')
             ->press('Register')
             ->seePageIs('/dashboard');
    }

    Ich müsste also nicht selbst das Plugin installieren und manuell testen ob mein Formular funktioniert, sondern könnte einfach programmieren, dass die Seite besucht werden und ein Formular ausgefüllt/abgeschickt werden soll, woraufhin in der Auflistung von Objekten ein neuer Punkt auftauchen sollte.


    Das ist natürlich nur ein Beispiel, es lässt sich aber noch weiter ausbauen.

    Kleines Beispiel: Für die nächste Version musst du was an deinem Plugin ändern, und zwar ziemlich weit unten an einer Stelle, die im gesamten System Auswirkungen haben KÖNNTE. Was machst du nach der Änderung, wenn du keine Unit-Tests hast? Du testest das gesamte System von vorne bis hinten durch, ob alles funktioniert wie es soll. Oder setzt einen Azubi oder Praktikanten dran. Mit Unit-Tests startest du die Test-Session, wartest vielleicht mal 10 Minuten und hast ein Ergebnis mit einer Liste, die dir genau sagt an welchen Stellen im System welche Fehler geworfen und welche falschen Werte geliefert werden.

    Gerade für solche Anwendungsfälle würde sich diese Testart logischerweise sehr eignen. Ändere große Teile deiner API, refactore deinen Code und teste alles manuell erneut. Oder schreibe dir vorher einen Test, der dich für all dies absichert.


    Bezüglich deinem Projekt Manager:
    Ich habe den schon vor einiger Zeit gesehen und er sieht sehr interessant aus. Bin schon gespannt wann er rauskommt. Leider gibt es aktuell nicht sehr viel, was die Entwicklung erleichtert (im Vergleich zu anderen Frameworks, was meist zwar kein fairer Vergleich ist, müssen hier bestimmte Dinge doch recht unkonventionell umgesetzt werden). Ich warte selbst bereits seit letztem Mittwoch darauf, dass mein Form Builder im Plugin-Store durchgesehen und bestätigt wird.

  • Auch wenn die dort angesprochenen Punkte zwar größtenteils Sinn ergeben, so denke ich dennoch, dass es möglich ist. Das WCF hat ja selbst ein vorgeschaltetes Bootstrapping, wenn man das Test-Framework also dort einhängt, muss selbst kein großartiger Mehraufwand betrieben werden. Und selbst wenn, genau das wäre ja der Sinn von einem Test-Framework - Einmal muss es programmiert werden, aber wenn es fertig ist: Installiere dir lokal WCF zum Entwickeln, installiere das Test-Framework dazu und programmiere dann deine Tests.

    Tatsächlich habe ich mir im Rahmen der Entwicklung des Projekt Managers genau in der Richtung bereits Gedanken gemacht. Ich denke, gerade wenn man sich schon etwas mit solchen Tests im Rahmen von PHP Frameworks auskennt, kann man durchaus etwas für das WCF basteln. Leider fehlt mir dafür - zumindest aktuell - die Zeit, so etwas alleine aufzubauen. Falls sich aber ein Team findet, könnte ich mir vorstellen, mich daran zu beteiligen.


    Ich warte selbst bereits seit letztem Mittwoch darauf, dass mein Form Builder im Plugin-Store durchgesehen und bestätigt wird.

    Sieht spannend aus. Man kann zwar sehen, dass WoltLab in der Richtung vieles beim Sprung von WCF Version 1.1 nach 2.X getan hat, aber viel Code ist noch immer ziemlich redundant.

  • Zeitlich geht es mir aktuell genauso. In etwa einem Monat steht ein Umzug an, danach kommt ein berufliches Projekt und etwa zeitgleich startet nebenbei noch ein Projekt für eine andere Firma das ca. 2-3 Monate an Zeit kostet. Dazu kommen noch private Projekte, also insgesamt bin ich leider sehr eingespannt und habe nicht allzu viel freie Zeit zur Verfügung. Sobald das allerdings größtenteils rum ist, würde ich gerne etwas Zeit nehmen, für ein Testing-Framework zumindest zu experimentieren. Ich würde mir dich für dann mal vormerken wenn's okay ist ;)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!