Empfohlene Sache für einen TDD-Neuling

8

Ich bin sehr neu in TDD Welt. Ich habe ein paar Fragen bezüglich TDD.

  1. Muss ich in TDD zuerst testen? Ich habe gehört, dass es bei TDD nicht um Tests geht. Es geht um Design. Ich stimme zu, dass es gut ist, zuerst einen Test zu machen, aber was ich gerne weiß, ist, dass es immer noch TDD ist, wenn wir dem Test-Last-Ansatz folgen?

  2. Sollen wir lieber BDD als TDD verwenden? Früher habe ich die Spezifikation meiner Aufgabe aufgelistet und versuche, den Testfall basierend auf meiner Spezifikation zu schreiben. Ist es ein falscher Ansatz? Willst du BDD oder TDD für deine Entwicklung verwenden?

  3. Verspottung? Einige Leute aus meinem Team pflegten zu sagen, dass sie TDD praktizieren. Aber sie folgen niemals dem Test-First-Ansatz. Sie verspotten die Daten nie. Müssen wir die Daten in TDD verspotten?

  4. "Verwenden von Mock Library" Vs "Erstellen der Mock-Klasse mit Daten manuell". Bevorzugen Sie eine Scheinbibliothek oder erstellen Sie die Scheinklassen mit einigen Scheindaten?

  5. Irgendein empfohlenes Buch für TDD oder BDD? Ich lese Kent Becks klassische Test-Driven Development - mit Beispiel. Ich habe festgestellt, dass dieses Buch in einem sehr frühen Stadium von TDD veröffentlicht wird, so dass einige der Dinge in diesem Buch nicht überholt sind.

Mark 20.10.2009, 03:24
quelle

7 Antworten

3
  

1). Muss ich zuerst in TDD testen?   Ich habe gehört, dass es bei TDD nicht um Tests geht.   Es geht um Design. Ich bin damit einverstanden   Es ist gut, zuerst einen Test zu machen, aber was ich   Ich möchte wissen, dass es immer noch TDD ist   wenn wir dem Test-Last-Ansatz folgen?

Ja! Genau genommen ist TDD Test Driven Development. Die Entwicklung wird also vom Test vorangetrieben. Also testen Sie zuerst und entwickeln dann ein Programm, um alle Tests zu bestehen.

  

2). Sollen wir lieber BDD verwenden?   TDD? Früher habe ich die Liste aufgeführt   Spezifikation meiner Aufgabe zuerst und ich   Versuchen Sie, den Testfall basierend auf meinem zu schreiben   Spezifikation. Ist es ein falscher Ansatz?   Mögen Sie lieber BDD oder TDD?   für Ihre Entwicklung?

Ich denke, du solltest sie ausgleichen. Verwenden Sie eine andere Technik, um das gesamte Design zuerst bereitzustellen, so gut wie die Zeit zur Verfügung stellt (machen Sie ein Risikomanagement, um die angemessene Zeit zu finden, die Sie für das Entwerfen ausgeben sollten) (Finden Sie einen Artikel über " RUP essential ". Es gibt eine ziemlich gute Idee über die Balance zwischen Agilität und Agilität. Identifizieren Sie die kritischsten Teile, erstellen Sie dann Tests und entwickeln Sie, um den Test zu bestehen.

  

3). Mocking? Einige Leute von meinem Team   pflegte zu sagen, dass sie üben   TDD. Aber sie folgen niemals zuerst dem Test   Ansatz. Sie verspotten die Daten nie. Machen   müssen wir die Daten in TDD vortäuschen?

Test-first und Spott ist nicht das Gleiche. Mocking ermöglicht Code mehr testbar sowie testbar, wenn andere Teile (auf denen dieser Code beruht) nicht vorhanden ist. Wenn es also keine solche Abhängigkeit gibt (IF !!), dann kannst du sie nicht verspotten. (Lesen Sie " Effektiv mit Legacy-Code arbeiten " Näheres über den Nähfußpunkt) .

  

4). "Mock Library" Vs "verwenden, um die Mock-Klasse mit Daten manuell zu erstellen". Machen   Du bevorzugst es, eine Bibliothek zu benutzen oder   Erstelle die Scheinklassen mit etwas Spott   Daten?

Ich denke, es ist einfach so, als würde man jemand anderes benutzen oder eine eigene Bibliothek erstellen. Ganz abhängig von der Situation und vielen Faktoren. Zum Beispiel, wenn Ihr Projekt groß ist und Sie eine passende Scheinbibliothek finden können, verwenden Sie sie.

  

5). Irgendein empfohlenes Buch für TDD oder BDD? Ich habe Kent Becks Klassiker gelesen   Testgetriebene Entwicklung - mit Beispiel.   Ich habe festgestellt, dass dieses Buch in veröffentlicht wurde   sehr frühen Stadium von TDD so einige der   Dinge in diesem Buch sind nicht ein bisschen   veraltet.

Es gibt eine Liste von Büchern über TDD hier .

Hoffe, das hilft.

    
NawaMan 20.10.2009, 03:44
quelle
2
  1. Ja, es geht um Design, aber diese Designmethodik beinhaltet zuerst das Schreiben von Tests. Menschen folgen dieser Regel mit unterschiedlichem Maß an Strenge, aber die meisten Menschen, die ich kenne, die TDD praktizieren, neigen dazu zu glauben, dass es besser ist, der Regel zu folgen.
  2. BDD wurde als TDD richtig beschrieben. Der Unterschied ist minimal. Im Wesentlichen macht BDD nur den Test als Spezifikation expliziter.
  3. Über die Nützlichkeit von Mocks gibt es eine große Uneinigkeit. Ich persönlich bevorzuge es, Interfaces zu testen, und ich vermeide es, Erwartungen in ein Pseudo zu stellen. Dennoch ist das Testen isoliert immer noch eine gute Idee für eine Vielzahl von Gründen, nicht zuletzt für die Testgeschwindigkeit. Es gibt nichts ärgerlicheres, als einen Code zu refactorieren, der immer noch genau der vorherigen Schnittstelle entspricht, ein funktionierendes Endergebnis hat und trotzdem alle Tests scheitern, weil die Erwartungen an den Mock nicht mehr erfüllt werden. Eine unangemessene Verwendung führt zu einem Test der Implementierungsdetails, anstatt sicherzustellen, dass die geleistete Arbeit korrekt ist.
  4. Siehe # 3. Ich bevorzuge es, einfach einen Stub ohne Erwartungen oder alternativ einen Integrationstest zu verwenden.
  5. Testgetriebene Entwicklung: Ein praktischer Leitfaden von Dave Astels. Sehr empfehlenswert.
Bob Aman 20.10.2009 03:40
quelle
1
  

Muss ich in TDD zuerst testen?

Ja, TDD ist im Wesentlichen:

%Vor%

Wenn Sie einen anderen Prozess verwenden, kann es sinnvoll sein, einige der Tools und Techniken zu verwenden, aber es ist nicht wirklich TDD. Für was auch immer das ist.

  

Verspottung?

Es gibt 4 mehr oder weniger brauchbare Alternativen, die verschiedene Gurus befürworten.

  1. mock-to-zero: Spioniere jede Abhängigkeit so, dass jede Einheit (z. B. Java-Klasse) effektiv isoliert getestet wird.

  2. mock-to-linear: nur zyklische Abhängigkeiten, so dass es eine lineare Reihenfolge von Tests gibt, wobei jede Einheit nur mit getesteten Abhängigkeiten getestet wird.

  3. mock-for-speed: simulieren Sie nur langsame, asynchrone oder anderweitig problematische Interfaces.

  4. Zero-Mocking: Testen Sie einfach alles, verwenden Sie einen Debugger, um herauszufinden, was passiert, wenn etwas kaputt geht.

Vermeiden Sie # 1, wenn Sie Ihr Spottwerkzeug nicht lieben, und vermeiden Sie # 4, wenn Sie Ihren Debugger nicht lieben.

    
soru 19.07.2010 23:13
quelle
1
rad 19.03.2013 11:04
quelle
0
  1. Ja, zuerst zu testen ist ziemlich genau was TDD ist.
  2. Wenn Sie keine Erfahrung mit beiden haben, würde ich mit TDD beginnen, um Ihre Füße nass zu bekommen (meine Meinung).
  3. Sie müssen sich nicht lustig machen, TDD zu machen. Wenn Ihre Anwendung jedoch Klassen hat, die von anderen Klassen abhängig sind (was ziemlich garantiert ist), sollten Sie sich darüber lustig machen. BTW verspottet nicht die Daten, sondern verspottet die Interaktion zwischen der Klasse, die Sie testen, und seinen Mitarbeitern, die andere Klasse, von der sie abhängig ist.
  4. Verspotten von Hand ist eine gute Möglichkeit, es zu verstehen, aber Spott / Isolation Frameworks ist der Weg zu gehen, wenn Sie nicht die ganze Zeit verbringen wollen, gefälschte Implementierungen zu schreiben.
  5. IMO, Becks Buch ist ein zeitloser Klassiker und ein guter Anfang. Wenn Sie mit .NET arbeiten, lese ich einfach The Art of Unit Testing, das sehr gute Techniken und Praktiken beim Komponententest behandelt.
Mathias 20.10.2009 03:32
quelle
0

(Ich wählte die einfachste Frage, um zu antworten, da ich nicht qualifiziert bin, andere Fragen zu beantworten)

  

Irgendein empfohlenes Buch für TDD oder BDD?

Agile Software-Entwicklung, Prinzipien, Muster und Praktiken, von Robert C. Martin

Extreme Programming Explained, von Kent Beck

    
pierrotlefou 20.10.2009 03:33
quelle
0
  

Muss ich in TDD zuerst testen?

Ja, TDD ist unbedingt Test-zuerst. Das Schreiben des Tests ermöglicht es zunächst, über die Funktion nachzudenken, die im Hinblick auf das Verhalten und nicht auf die Implementierung geschrieben werden soll, und konzentriert sich auf das Aufrufen der Funktion und das Verifizieren des Ergebnisses. Dies führt zu testbarem Code; sonst könntest du dich in einer Sackgasse befinden.
Das Schreiben von Tests erleichtert es außerdem, Tests nicht zu vergessen oder zu vernachlässigen.

Darüber hinaus ermöglicht das Schreiben - und das Scheitern - der Tests zunächst, den Test zu testen. Ein nach dem Code geschriebener Test könnte niemals fehlschlagen.

  

Sollen wir BDD gegenüber TDD bevorzugen?

Einige sagen BDD ist TDD richtig gemacht , wie der Fokus gesetzt wird auf Spezifikationen.

  

Müssen wir die Daten in TDD vortäuschen?   Einige Leute aus meinem Team pflegten zu sagen   dass sie TDD üben. Aber sie   niemals dem Test-First-Ansatz folgen.

Sie müssen nicht Mock-Objekte verwenden. Es gibt nur ein Werkzeug, das manchmal bequem sein kann.

  

"Verwenden von Mock Library" Vs "Erstellen der   Scheinklasse mit Daten manuell ".

Ich hatte nie das Bedürfnis, auf einen Mock-Objekt-Generator zurückzugreifen.

  

Irgendein empfohlenes Buch für TDD oder BDD?

TDD zum Beispiel, ist ein sehr gutes Tutorial und präsentiert eine Reihe von Mustern. Ein anderes großartiges Buch, mehr eine Referenz ist xUnit Muster .

    
philant 30.10.2009 22:24
quelle

Tags und Links