24 Stimmen

Warum Fit/FitNesse?

Welchen Sinn hat die Verwendung von Fit/FitNesse anstelle von Integrationstests im Stil von xUnit? Es hat wirklich seltsam und sehr unklar Syntax meiner Meinung nach.

Geht es wirklich nur darum, dass die Produktverantwortlichen Tests schreiben? Das werden sie nicht tun! Es ist zu kompliziert für sie. Warum also sollte jemand Fit/FitNesse nutzen?

更新情報 Es ist also nur für Tests nach Geschäftsregeln geeignet?

20voto

Tomek Szpakowicz Punkte 13137

Das Ziel ist es, zu arbeiten mit Nicht-Programmierer, oft sogar völlig untechnische Personen, wie z. B. potenzielle Nutzer einer Geschäftsanwendung, können sich ein Bild davon machen, was die Anwendung tun soll, und es dann in Tests umsetzen. Während die Durchführung von Tests für sie sicherlich zu kompliziert ist, sollten sie in der Lage sein, über Tabellen mit Beispieldaten zu diskutieren, die z. B. in Word ausgefüllt wurden. Und das Tolle daran ist, dass diese Dokumente im Gegensatz zu herkömmlichen Spezifikationen mit Ihrer Anwendung leben, weil automatisierte Tests Sie dazu zwingen, sie zu aktualisieren.

Ver Einführung in Fit y Arbeitsablauf anpassen von James Shore und folgen Sie den Links zum Rest der Dokumentation, wenn Sie möchten.


Aktualisierung: Das hängt davon ab, was Sie unter Geschäftsregeln verstehen ;-) Manche Leute verstehen darunter etwas sehr Enges (wie z.B. Business Rules Engines etc.), andere etwas sehr Weites.

Meiner Meinung nach ist Fit ein Werkzeug, mit dem Sie geschäftliche (wie auch fachliche) Anwendungsfälle mit reichhaltigen realistischen Beispielen in einem Dokument niederschreiben können, das die Endbenutzer oder Fachleute (in einigen Bereichen) verstehen, überprüfen und diskutieren können. Gleichzeitig liegen diese Beispiele in maschinenlesbarer Form vor, so dass sie für automatisierte Tests verwendet werden können. Sie schreiben das Dokument weder selbst, noch beauftragen Sie andere damit. Stattdessen ist es ein Produkt der Zusammenarbeit und Diskussion, das das wachsende Verständnis für die Anwendung auf beiden Seiten widerspiegelt. Die Beispiele werden immer umfangreicher, je weiter man fortschreitet und je mehr Eckfälle gelöst werden.

Wichtig ist, was die Anwendung tun wird, nicht wie sie es tut. Es ist eine Form der funktionalen Spezifikation. Als solche ist sie recht breit angelegt und nicht wirklich nach Modulen, sondern eher nach Nutzungsszenarien gegliedert.

Die Tests, die aus den Beispielen hervorgehen, testen das externe Verhalten der Anwendung in Bezug auf Aspekte, die aus geschäftlicher Sicht wichtig sind. Ja, man könnte es Geschäftsregeln nennen. Aber schauen wir uns das Beispiel von Diego Jancic für die Kreditwürdigkeitsprüfung an, nur mit einer kleinen Abwandlung. Was ist, wenn ein Teil des Fit-Dokuments 1) die Auflistung von Attributen und deren Bewertungen und 2) die Bereitstellung von Kundendaten und die Überprüfung der Ergebnisse ist? Was sind dann die tatsächlichen Geschäftsregeln: die Bewertungstabelle (Attribute und deren Bewertungen) oder die Anwendungslogik, die die Bewertung für jeden Kunden berechnet (basierend auf der Bewertungstabelle)? Und welche werden getestet?

Fit/FitNesse-Tests scheinen eher für Akzeptanztests geeignet zu sein. Andere Tests (wenn man sich nicht um die Zusammenarbeit mit Kunden, Nutzern, Domänenexperten usw. kümmert, sondern einfach nur Tests automatisieren will) lassen sich wahrscheinlich einfacher auf herkömmliche Weise schreiben und pflegen. xUnit ist gut für Unit-Tests und API-Tests geeignet. Jedes Web-Framework sollte ein Tool für das Testen von Web-Applikationen/Diensten haben, das in den modify-build-test-deploy-Zyklus integriert ist, z. B. hat django einen kleinen Test-Client. Sie haben eine Menge zur Auswahl.

Und Sie können jederzeit Ihr eigenes Tool schreiben (oder vorzugsweise ein vorhandenes optimieren), um die Tests in Ihrem speziellen Interessengebiet besser zu unterstützen.


Ein weiterer allgemeiner Gedanke. Es ist oft (nicht immer!!!) besser, Ihre Tests, "Geschäftsregeln" und so ziemlich alles in einer Form von gut definierten Daten zu kodieren, die von einem einfachen, generischen Stück Code interpretiert werden. Dann ist es einfach, die Daten anderweitig zu verwenden: Dokumentation erstellen, auf ein neues Test-Framework migrieren, die Anwendung auf eine neue Umgebung/Programmiersprache portieren, die Konformität mit externen Regeln oder einem anderen System überprüfen (lassen Sie Ihrer Fantasie freien Lauf). Es ist viel schwieriger, solche Informationen aus dem Code herauszuziehen, z.B. aus einfachen, fest kodierten Unit-Tests oder Geschäftsregeln.

Fit speichert Testfälle als Daten. In einem sehr spezifischen Format, weil es für die Verwendung vorgesehen ist, aber dennoch. Ihre domänenspezifischen Tests können andere Formate wie einfaches CSV, JSON oder YAML verwenden.

4voto

Diego Jancic Punkte 6913

Die Idee ist, dass Sie (der Programmierer) ein einfach zu verstehendes Format definieren, z. B. eine Excel-Tabelle. Dann gibt der Product Owner Informationen ein, die für fachfremde Personen schwer zu verstehen sind... und Sie validieren einfach, dass Ihr Code so funktioniert, wie es der PO erwartet. Die in xUnit verwendete Methode kann für Programmierer als Eingabe für leicht verständliche oder einfache Informationen verwendet werden. Wenn Sie eine Menge seltsamer Beispiele mit mehreren Feldern in Ihren xUnit-Test eingeben müssen, wird er schwer zu lesen sein.

Stellen Sie sich einen Fall vor, in dem Sie entscheiden müssen, ob Sie einem Kunden einen Kredit gewähren, und zwar auf der Grundlage von Alter, verheiratet/alleinstehend, Anzahl der Kinder, Gehalt, Tätigkeit, ... Als Programmierer können Sie diese Informationen nicht schreiben; und ein Risikomanager kann keinen xUnit-Test schreiben.

1voto

Chanakya Punkte 930

Hilft, Redundanzen bei Regressions- und Fehlertests zu reduzieren. Erstellen Sie ein verwaltbares Repository von Testfällen. Es ist wie einmal erstellen und für immer verwenden.

0voto

Viktor Ilyenko Punkte 600

Es ist sehr nützlich bei der Zusammenarbeit von QA- und Entwicklungsteams: Die QA kann dem Entwickler das Ergebnis des fehlgeschlagenen Tests zeigen, und der Entwickler kann leicht helfen, ein Umgebungsproblem zu lösen und die Schritte zur Reproduktion eines Fehlers zu verstehen. Es ist für UI- und sogar für API-Tests geeignet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X