Testgetriebene Entwicklung und Verbesserung der White-Box-Testfähigkeiten

9

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?

user892871
quelle
Warum nicht auch Black-Box-Tests?
Martijn Verburg
@Martijn, unter Berücksichtigung des Hintergrunds, höchstwahrscheinlich aufgrund der technischen Herausforderungen bei Whitebox-Tests. Auch wenn Black-Box-Techniken für Entwickler sehr nützlich sind, sind Leute mit guten Eigenschaften für Entwickler keine guten Black-Box-Tester. Wir sind zu neugierig und können ungeduldig werden. Ich weiß, dass ich es getan habe.
StuperUser

Antworten:

9

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:

  1. Die JUnit- Bibliothek und / oder die TestNG- Bibliothek.
  2. Eine spöttische Bibliothek wie Mockito oder JMock
  3. Ein Lasttest-Tool zum Angriff auf den Code - JMeter
  4. Das Konzept der Abhängigkeitsinjektion (eine Form der Inversion der Kontrolle)

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!

Martijn Verburg
quelle
Sie sind auch nützliche Techniken, um als Entwickler im Java-Ökosystem zu lernen. Soweit ich weiß, sollten Tester Black-Box-Tests durchführen.
Tom
1

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.

Swagatika
quelle
1

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.

maple_shaft
quelle
0

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).

Bob Santos
quelle
0

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.

Rupjones
quelle