2010-06-27 21 views
8

Ich bin dabei, mit Hilfe der Code-Abdeckung in die Entwicklung zu gehen, und ich frage mich, wie es typischerweise in die Test-getriebene Entwicklung passt.TDD und Code Coverage

Ist die Codeabdeckung ein nachträglicher Einfall? Hat Ihr Prozess so etwas wie

  1. gehen, um einen Test schreiben für die Funktionalität
  2. Run-Test durchgeführt werden, stellen Sie sicher, dass sie scheitern
  3. Umsetzung Funktionalität
  4. Run-Test, stellen Sie sicher, sie
  5. schreiben passieren mehr Tests für die Funktionalität, bis 100% (oder fast) Codeabdeckung erreicht wird

Oder führen Sie Codeabdeckung am Ende a Nachdem zahlreiche funktionale Teile implementiert wurden, gehen sie zurück und arbeiten auf 100% Deckung hin.

Die dritte Option, die ich mir vorstellen kann, ist eine 100% ige Abdeckung, bevor die Funktionalität implementiert wird.

Welche von diesen ist am häufigsten, und was sind die Vorteile?

Antwort

12

Sie schreiben keine Tests, bis eine 100% ige Codeabdeckung erreicht ist. Wenn Sie TDD verfolgt haben, dann gibt es keinen Code, der jemals geschrieben wurde, ohne von einem Test benötigt zu werden, also sollten Sie immer in der Nähe von 100% Deckung sein.

Stattdessen schreiben Sie Tests, bis alle Tests bestanden haben und bis alle erforderlichen Tests geschrieben wurden. Dies bedeutet, dass der gesamte erforderliche Code geschrieben wurde, da Sie nur Code geschrieben haben, wenn dies für einen Test erforderlich war.

+1

Ja, begann ich TDD vor kurzem und war angenehm überrascht, dass zu finden, nachdem ich ein paar Tests und Code getan schrieb Das von uns verwendete Code-Coverage-Tool meldet eine 100% ige Abdeckung. Ich musste nicht über die Berichterstattung nachdenken, sondern nur sicherstellen, dass ich nur Code geschrieben hatte, der notwendig war, um einen Test zu bestehen. Wenn ich versehentlich zu viel Code schreibe, würde ich versuchen, Teile davon zufällig zu kommentieren, und wenn keine Tests plötzlich fehlschlagen, weiß ich, dass ich nicht genug Tests geschrieben habe. – SCFrench

1

Mit TDD sollten Sie fast immer in der Nähe von 100% Abdeckung sein, wenn Sie neuen Code entwickeln, da Sie keinen Code entwickeln, den Sie nicht bestehen müssen, um Tests zu bestehen. Nur wenn Sie denken, dass der Code so einfach ist, dass Sie keinen Test benötigen (etwa wie eine automatische Eigenschaft in C#), sollten Sie Code haben, der nicht speziell behandelt wird. Sie können durch Refactoring manchmal nicht benötigte Blöcke einfügen oder den Code auf unerwartete Weise ändern, sodass Sie die Abdeckung zu diesem Zeitpunkt verwenden möchten, um sicherzustellen, dass Sie nicht versehentlich nicht getesteten Code eingeführt haben. Abgesehen davon würde ich sagen, dass ich es mehr als eine Gesundheitsüberprüfung benutze und regelmäßig Coverage-Analysen aus den gleichen Gründen mache. Es kann auch sehr nützlich sein, wenn deine Disziplin zusammenbricht und du versäumst, auf TDD-Art zu arbeiten.

0

Denken Sie daran, dass Sie einen Test haben können, der tatsächlich Code verwendet, der durch Zufall abgedeckt wird. Sie müssen vorsichtig sein, besonders beim Starten von TDD. Oh, ich bin in dieser Funktion und ich weiß, ich muss diese kleine winzige dünne Abendessen Minze hinzufügen, während ich daran bin, warum nicht eine andere Minze. Bevor Sie es wissen, haben Sie eine Menge nicht getesteten Code.

Schreibtest: fail Write-Code: Pass Umgestalten: Pass

Goto top