2011-01-14 5 views
7

Lassen Sie mich zuerst erklären, was ich mit dieser Frage anstrebe:Test Driven Entwicklung, Unit Testing

Welche Art von dev bin ich? Ich bin der Typ, der über das Problem nachdenkt, den Code schreibt und dann selbst testet. Ich entwickle hauptsächlich Web-Apps, aber es gibt auch Projekte, die auf UI basieren (RCP/Swing-Apps). Ich starte meine App und klicke hier, teste das ... Du kennst wahrscheinlich diesen "Stil".

Nun, ich bin ein Typ, der versucht, sich mit jeder Zeile/Projekt zu verbessern und ich möchte, dass mein Code/Apps pragmatisch getestet werden. Ich schreibe in Code - ich möchte Code testen.

Also begann ich für einige meiner Klassen/Funktionen Unit-Tests (Junit 4) zu verwenden. Dies funktioniert für Backend-Sachen, bei denen keine Benutzeroberfläche beteiligt ist - tbh: Ich finde es schwierig, die meisten Tests zu schreiben. Wenn wir eine Webanwendung erstellen, gibt es wahrscheinlich Interaktionen mit der Sitzung oder so. Ich schätze, Sie verstehen es.

Was ich suche sind einige Ressourcen wahrscheinlich mit Beispielen. Jeder gute Buch Rat wäre auch willkommen. Versteh mich nicht falsch - ich will nicht nur Sachen für Logiktests, ich bin daran interessiert, meine Benutzeroberfläche zu testen.

Vielleicht ist dies ein wichtiger Teil zu: ich in Java (85% der Zeit) Entwicklung und PHP/Python (der Rest)

Grüße

Antwort

2

Sie können Selenium für die komplette Front-End-Tests verwenden unter einem Mainstream-Test-Framework (zB: JUnit). Dann halten Sie einfach nur eine JVM für Back-End-Code, die einfach genug ist. Sie sollten in dieser Hinsicht abgedeckt sein. Mit Selenium schreiben Sie einen End-to-End-Test im Gegensatz zu einem atomaren Einheitstest für jeden Aspekt. Das ist eine Abwägung zur Verwendung des kompletten Frontends zum Testen.

1

Es gibt mehrere Frameworks, mit denen Sie Ihre Benutzeroberfläche testen können. Ich habe die Benutzeroberfläche mit dem FEST-Framework für meine Swing-Benutzeroberfläche getestet. Aber es gibt andere Tools, die am besten für Web-Anwendungen geeignet sind. Java Source hat eine großartige Liste von Open Source Web Testing Tools in Java.

2

Ich finde die Technik beschrieben in The Humble Dialog Box sehr effektiv in Test-fahren meine GUIs. Im Wesentlichen ist jede GUI-Klasse in 3 Klassen und eine Schnittstelle unterteilt: (1) der Logik-Controller, der definiert, wie sich die Logik der GUI verhält (Etiketten ändern, Dinge sind aktiviert? Usw.), voll testbar und hat keine Abhängigkeiten von der tatsächlichen GUI, hängt aber von (2) der View-Schnittstelle ab, die definiert, wie der Logik-Controller später mit der GUI interagiert. (3) Die eigentliche GUI-Klasse, die ein sehr dünner Wrapper für die echte GUI-Bibliothek ist. Schließlich (4) die gefälschte Ansicht, die Sie zum Testen verwenden, um zu beweisen, dass Ihr Logik-Controller die GUI korrekt manipuliert.

Es mag zunächst eine Menge Arbeit erscheinen, aber ich ermutige Sie, es zu versuchen. Ich habe sehr wenige Probleme mit meinen GUIs gehabt, seit ich damit angefangen habe. Die Vorarbeit spart später große Kopfschmerzen (und Zeit).

+0

+1 für den bescheidenen Dialog! –

1

Test Driven Development: By Example, von Kent Beck Ein praktischer Leitfaden ist die bahnbrechende Arbeit.

Andere Ich würde vorschlagen, sind:

Das RSpec Buch stellt die nächste Generation - Behavior Driven Development . Wenn Sie sich für TDD interessieren, werden Sie sich auch für BDD interessieren.

Aber wichtiger als das Lesen ist zu üben. Versuchen Sie, es selbst zu tun, und sehen Sie, ob Sie eine lokale Gruppe finden oder erstellen können, die Code Katas mit TDD verwendet.

+0

Ich werde in dieses Buch schauen, danke für das Teilen Don! – onigunn