10 Stimmen

TDD und Codeabdeckung

Ich stehe kurz davor, mich mit der Entwicklung unter Verwendung von Code-Abdeckung zu befassen, und frage mich, wie sich dies typischerweise mit testgetriebener Entwicklung verhält.

Ist Code-Abdeckung nachträglich? Geht Ihr Prozess in etwa so vor:

  1. Schreiben Sie einen Test für die zu implementierende Funktionalität
  2. Führen Sie den Test aus, stellen Sie sicher, dass er fehlschlägt
  3. Implementieren Sie die Funktionalität
  4. Führen Sie den Test aus, stellen Sie sicher, dass er besteht
  5. Schreiben Sie weitere Tests für die Funktionalität, bis eine Code-Abdeckung von 100% (oder nahezu) erreicht ist

Oder führen Sie die Code-Abdeckung erst ganz am Ende durch, nachdem zahlreiche funktionale Teile implementiert wurden, und arbeiten dann daran, eine 100%ige Abdeckung zu erreichen?

Die dritte Option, die mir einfällt, ist die Anstrengung, eine 100%ige Abdeckung anzustreben, bevor die Funktionalität überhaupt implementiert wird.

Was ist am häufigsten, und welche Vorteile gibt es?

15voto

John Saunders Punkte 159011

Sie schreiben keine Tests, bis eine Codeabdeckung von 100 % erreicht ist. Wenn Sie TDD befolgt haben, gibt es keinen Code, der jemals ohne einen Test geschrieben wurde, daher sollten Sie immer nahe bei 100 % Abdeckung sein.

Stattdessen schreiben Sie Tests, bis alle Tests bestanden sind und alle erforderlichen Tests geschrieben wurden. Das bedeutet, dass der gesamte erforderliche Code geschrieben wurde, da Sie nur Code geschrieben haben, wenn er von einem Test benötigt wurde.

1voto

tvanfosson Punkte 506878

Mit TDD sollten Sie fast immer nahe 100%ige Abdeckung haben, wenn Sie neuen Code entwickeln, da Sie keinen Code entwickeln, den Sie nicht benötigen, um Tests zu bestehen. Nur wenn Sie denken, dass der Code so einfach ist, dass Sie keinen Test benötigen (sagen wir, wie eine automatische Eigenschaft in C#), sollten Sie Code haben, der nicht explizit abgedeckt ist. Durch Refactoring können manchmal Blöcke eingeführt werden, die nicht erforderlich sind oder den Code auf unerwartete Weise ändern, sodass Sie zu diesem Zeitpunkt die Abdeckung verwenden sollten, um sicherzustellen, dass Sie aus Versehen nicht getesteten Code eingeführt haben. Abgesehen davon würde ich sagen, dass ich es mehr als Realitätscheck verwende und aus denselben Gründen periodisch Abdeckungsanalysen durchführe. Es kann auch sehr nützlich sein, wenn Ihre Disziplin versagt und Sie versäumt haben, auf eine TDD-Weise zu arbeiten.

0voto

Gutzofter Punkte 2005

Denken Sie daran, dass Sie einen Test haben können, der tatsächlich Code verwendet, der zufällig abgedeckt wird. Hierbei müssen Sie besonders aufpassen, insbesondere wenn Sie mit TDD beginnen. Oh, ich bin in dieser Funktion und ich weiß, dass ich diesen kleinen winzigen dünnen After-Dinner-Mint hinzufügen muss, während ich dabei bin, warum nicht noch ein Mint. Bevor Sie es wissen, haben Sie einen Haufen ungetesteten Codes.

Test schreiben: Fail Code schreiben: Pass Refaktorisieren: Pass

Zum Anfang

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X