Hallo zusammen,
ich möchte euch hier mein nächstes Open-Source-Projekt
SlimForDelphi vorstellen, das aus einer langjährigen Suche nach einer besseren Testmethodik entstanden ist.
Ich habe schon seit Jahren nach der Möglichkeit gesucht, meine Delphi-Anwendungen als Ganzes automatisiert testen zu können. Obwohl
Unit-Tests für gut pflegbaren Code unerlässlich sind, sind sie alleine nicht dafür ausreichend. In
Unit-Tests fehlen oft Abhängigkeiten, die zwar gemockt oder gestubbt werden können, aber das ist leider nicht ausreichend, um das korrekte Zusammenspiel aller Komponenten, Klassen und Module in der fertigen Anwendung abzusichern.
Mir fehlte ein Werkzeug, um Tests auf einer höheren Ebene durchzuführen – Tests, die das System so benutzen, wie es auch ein Endanwender tun würde, und die das große Ganze im Blick haben. Diese Suche hat mich eines Tages zu FitNesse geführt.
Was ist FitNesse?
FitNesse ist ein vollständig integriertes, eigenständiges Wiki und Test-Framework. Der Clou dabei ist: Tests werden nicht in Code, sondern in einfachen Tabellen auf einer Wiki-Seite geschrieben.
Diese Tests sind für jeden lesbar und beschreiben das Verhalten der Anwendung aus fachlicher Sicht, was sie ideal für Akzeptanz- und Integrationstests macht.
FitNesse vollständig vorzustellen würde den Rahmen hier sprengen, daher verweise ich auf die Projektseite:
https://fitnesse.org/
Und was genau macht SlimForDelphi?
FitNesse benötigt eine Brücke, um mit dem zu testenden System zu kommunizieren. Diese Kommunikation läuft über ein Protokoll namens Slim (Simple List Invocation Method).
SlimForDelphi ist eine Implementierung dieses Protokolls für Delphi. Es ist im Grunde ein kleiner Server, der in eine Delphi-Anwendung integriert wird, durch FitNesse angesprochen wird und es dem Test-Framework unter anderem erlaubt:
- Instanzen von Fixture-Klassen, die in Delphi geschrieben werden, zu erzeugen
- Beliebige Methoden und Properties auf den Fixture-Instanzen anzusprechen
- Zurückgelieferte Werte zu vergleichen, anzuzeigen oder zwischen zu speichern
Was sind die Vorteile für Delphi-Entwickler?- Echte Integrationstests: Testet das Zusammenspiel vieler Komponenten, ohne alles mühsam mocken zu müssen.
- Bessere Zusammenarbeit: Fachabteilungen und Tester können Tests lesen (oder sogar schreiben) und so sicherstellen, dass die Anforderungen richtig verstanden wurden.
- Lebende Dokumentation: Die Tests dokumentieren das tatsächliche Verhalten eurer Anwendung. Wenn sich der Code ändert, schlägt der Test fehl – die Doku veraltet nicht.
- Automatisierte Regressionstests: Ihr könnt eure gesamte Anwendungslogik mit einer Suite von Akzeptanztests abdecken und bei jeder Änderung automatisch ausführen.
- Integration in CI/CD: Die FitNesse-Tests lassen sich genau wie Unit-Tests in Build-Pipelines integrieren.
So, ich hoffe, jetzt einige von Euch neugierig gemacht zu haben.
Das Projekt findet ihr unter:
https://github.com/WladiD/SlimForDelphi
Aber davor empfehle ich dringend die FitNesse-Seite zu konsultieren:
https://fitnesse.org/
Schaut euch das Projekt an, probiert es aus und gebt mir gerne Feedback. Egal ob hier im Thread, als Issue oder sogar als Pull Request auf GitHub – jede Rückmeldung ist willkommen!
Ich hoffe, das Projekt stößt auf Interesse und hilft vielleicht dem einen oder anderen, der vor ähnlichen Herausforderungen beim Testen seiner Delphi-Anwendungen steht.