TE180_Testgetriebene_Entwicklung_Z Flashcards

1
Q

Was ist Testgetriebene Entwicklung (TDD)?

A

Testgetriebene Entwicklung (TDD) ist ein Softwareentwicklungsansatz, der von Kent Beck entwickelt wurde. TDD kombiniert Design, Testing und Implementierung in einem iterativen Zyklus, um robusten und gut getesteten Code zu erzeugen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was bedeutet der Red-Green-Refactor-Zyklus in TDD?

A

Der Red-Green-Refactor-Zyklus ist ein zentraler Prozess in TDD: - FAIL (Red): Schreibe einen Test, der fehlschlägt, weil die Funktionalität noch nicht implementiert ist. - PASS (Green): Implementiere den minimalen Code, um den Test bestehen zu lassen. - REFACTOR: Überarbeite den Code, um ihn zu verbessern, ohne dass die Tests fehlschlagen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche Konventionen werden in TDD befolgt?

A

In TDD werden folgende Konventionen befolgt: - Zu jeder Klasse existiert eine entsprechende Testklasse. - Kleine, schnelle Inkremente. - Keine neuen Features während der Refaktorisierung. - Reduktion von Technical Debt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie geht man in Eclipse vor, um TDD anzuwenden?

A

Um TDD in Eclipse anzuwenden, folge diesen Schritten: 1. Erstelle eine leere zu testende Klasse. 2. Generiere eine Testklasse mit einem ersten fehlgeschlagenen Test. 3. Implementiere den Code, um den Test zu bestehen. 4. Refaktoriere den Code und bestätige die Änderungen durch erneutes Testen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Motivationen gibt es für die Anwendung von TDD?

A

Die Motivationen für die Anwendung von TDD umfassen: - Klare Vorstellung: Präzise Definition der zu implementierenden Funktionalität. - Aufdecken von Verständnislücken: Unvollständiges Verständnis wird beim Schreiben der Tests sichtbar. - Code-Abdeckung: Sicherstellen, dass jedes Codesegment getestet ist. - Dokumentation: Tests dienen als ergänzende Dokumentation des Codes. - Vereinfachtes Debugging: Fehler können durch fehlschlagende Tests schnell lokalisiert werden. - Inkrementeller Ansatz: Aufbau einer hierarchischen Testsuite. - Regressionstest: Sicherstellen, dass neue Funktionen keine Seiteneffekte haben. - Continuous Integration: Nahtlose Integration in kontinuierliche Entwicklungsprozesse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie ergänzt TDD das Softwaredesign?

A

TDD ersetzt nicht das Architektur-/Softwaredesign, sondern ergänzt es. Es hilft, Designentscheidungen zu validieren oder zu verwerfen und Schwachstellen im Design aufzudecken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist das Problem und die Lösung beim Mocking im Unit Test?

A

Problem: Isolation von Testobjekten und Trennung der Abhängigkeiten. Lösung: Verwendung von Mocking-Frameworks wie Mockito, JMockit und EasyMock, um das Verhalten abhängiger Objekte zu simulieren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist der Ping-Pong-Ansatz im Pair Programming bei TDD?

A

Der Ping-Pong-Ansatz im Pair Programming bei TDD beinhaltet folgende Schritte: 1. Entwickler A schreibt einen fehlgeschlagenen Test. 2. Entwickler B implementiert minimalen Code, um den Test zu bestehen. 3. Entwickler B refaktorisiert den Code und schreibt den nächsten fehlgeschlagenen Test. 4. Der Zyklus wiederholt sich, bis keine weiteren sinnvollen Tests mehr notwendig sind.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist Behaviour Driven Development (BDD) und wie unterscheidet es sich von TDD?

A

Behaviour Driven Development (BDD) ist von TDD inspiriert und ergänzt Domain-Driven Design (DDD). BDD fokussiert sich auf höhere Testebenen wie System- und Akzeptanztests. Es nutzt Szenarien, die von Anwenderexperten in Textform formuliert und in Mock-Szenarien umgewandelt werden. Bekannte Frameworks für BDD sind JBehave und Cucumber.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was sind die Vorteile der Anwendung von TDD?

A

TDD bietet folgende Vorteile: - Verbesserung des Code-Designs durch iterative Tests und Refaktorisierung. - Förderung der Testbarkeit und Reduktion von Abhängigkeiten. - Sicherstellung, dass alle Codesegmente gründlich getestet sind. - Unterstützung bei der Dokumentation des Codes. - Vereinfachung des Debuggings durch präzise Testfälle. - Integration in Continuous Integration-Prozesse zur kontinuierlichen Qualitätssicherung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly