Ich bin ein Java-Programmierer der Einstiegsklasse, der gerade die Schule verlassen hat. Ich habe gute Kenntnisse und Erfahrungen mit J2SE. Kann mir jemand raten, wie ich meine Fähigkeiten als Java White Box Tester verbessern oder optimieren kann? Eine breite Palette von Eingaben ist willkommen.
Und was ist testgetriebene Entwicklung?
Antworten:
Test Driven Development (TDD) und seine erweiterten Cousins Acceptance TDD (ATDD) und Behavior Driven Development (BDD) sind nützliche Techniken, um als Tester im Java-Ökosystem zu lernen. Ich werde mich auf TDD konzentrieren, wenn Sie nach White-Box-Tests suchen.
Was ist TDD? - Im Kern geht es darum, einen fehlgeschlagenen Test (rot) zu schreiben, diesen Test zu bestehen, indem eine Implementierung (grün) geschrieben und dann neu faktorisiert wird. Der Wikipedia-Artikel ist ein ausreichender Ort, um weitere Informationen zu erhalten. Das Thema ist jedoch sehr umfangreich. Ich empfehle, einige der bekanntesten Bücher in diesem Bereich zu lesen, z. B. Testgesteuerte Entwicklung anhand von Beispielen und effektives Arbeiten mit Legacy-Code . Ich werde auch einen schamlosen Stecker für das TDD-Kapitel in The Well-Grounded Java Developer einwerfen
Im Java-Ökosystem bedeutet dies, dass Sie Folgendes lernen möchten:
Und dann üben, üben, üben, üben. Gute Java White Box Tester sind sehr selten, die besten haben Tests für eine Vielzahl von Codebasen geschrieben.
Mit HTH können Sie loslegen!
quelle
Junit ist eines der besten Unit-Test-Frameworks für die Programmiersprache Java. Es ist ein Open-Source-Framework zum Schreiben und Ausführen wiederholbarer Tests.
quelle
Normalerweise zitiere ich Wikipedia nicht gern, aber die Informationen zu diesem Artikel scheinen sicher genug zu sein ...
http://en.wikipedia.org/wiki/Test-driven_development
Im Wesentlichen handelt es sich um einen Test-First-Ansatz für die Softwareentwicklung, bei dem Unit-Tests zuerst für Anwendungsfälle entworfen und geschrieben werden. Anschließend erfolgt eine harte Entwicklung, um diese Unit-Tests zum Bestehen zu bringen.
quelle
Ich bin nicht sicher, ob mein Vorschlag als Werkzeug für White-Box-Tests betrachtet wird, aber Sie können sich auch dbUnit für datenbankgesteuerte Projekte und Selenium für Webtests ansehen (z. B. Überprüfung von Elementen, die aufgrund einiger Ergebnisse vorhanden sein sollten).
quelle
Die Frage bezieht sich speziell auf "White-Box-Tests". Hier kennen Ihre Tests die interne Struktur Ihres Codes genau und bestätigen das Verhalten bei jedem Schritt und nicht nur die Eingabe / Ausgabe / Nebenwirkung (Black-Box-Test). Während JUnit für beides hervorragend geeignet ist, benötigen Sie weitere zusätzliche Frameworks, um dies im Rahmen eines Unit-Tests zu tun.
EasyMock und JMock sind hierfür gute Frameworks. Ich neige dazu, JMock zu bevorzugen.
Bei dem Risiko, eine OT-Debatte zu beginnen, sollten Sie sorgfältig über die Auswirkungen von White-Box-Tests nachdenken. White-Box-Tests sind (offensichtlich) eng mit Ihrem Code verbunden. Wenn sie nicht sorgfältig verwendet werden, können spöttische Frameworks dazu führen, dass Ihre Tests ziemlich kompliziert, schwer lesbar und beim Refactoring spröder sind.
Ich neige dazu, mich an eine Mischung aus beidem zu halten. Black-Box-Tests, wo immer möglich, und White-Box-Tests werden sparsam auf riskanteren / komplizierteren Code angewendet.
Natürlich können die oben aufgeführten Frameworks auch in Black-Box-Tests verwendet werden, bei denen die Anzahl der beitragenden (injizierten) Klassen groß ist und einfaches Stubbing unhandlich wird.
In Bezug auf TDD handelt es sich in erster Linie um einen designverbessernden Ansatz zum Schreiben von Code und nicht nur um das Schreiben von Tests. Die Tests, die Sie am Ende haben, sind eine wichtige Ausgabe, aber darüber hinaus soll der Ansatz das Design und die Struktur Ihrer Anwendung verbessern.
quelle