Ich habe festgestellt, dass TDD bei aufstrebenden Systemen schlechte Leistungen erbringt. Ich bin ein Videospielentwickler und habe TDD kürzlich verwendet, um ein System zu erstellen, das mehrere einfache Verhaltensweisen verwendet, um eine realistisch aussehende Bewegung für eine Entität zu erstellen.
Es gibt zum Beispiel Verhaltensweisen, die dafür verantwortlich sind, Sie von gefährlichen Bereichen unterschiedlicher Art zu entfernen, und Verhaltensweisen, die dafür verantwortlich sind, Sie zu interessanten Bereichen unterschiedlicher Art zu bewegen. Durch die Zusammenführung der Ergebnisse der einzelnen Verhaltensweisen entsteht eine endgültige Bewegung.
Die Eingeweide des Systems ließen sich leicht implementieren, und TDD war hier nützlich, um anzugeben, wofür jedes Subsystem verantwortlich sein sollte.
Ich bekam jedoch Probleme, wenn es darum ging zu spezifizieren, wie die Verhaltensweisen interagieren, und was noch wichtiger ist, wie sie sich im Laufe der Zeit gegenseitig beeinflussen. Oft gab es keine richtige Antwort, und obwohl meine ersten Tests bestanden wurden, konnte die Qualitätssicherung immer wieder Fälle finden, in denen das System nicht funktionierte. Um die richtige Lösung zu finden, musste ich mehrere unterschiedliche Verhaltensweisen durchlaufen. Wenn ich die Tests jedes Mal aktualisiert habe, um die neuen Verhaltensweisen zu berücksichtigen, bevor ich überprüft habe, ob sie im Spiel funktioniert haben, habe ich die Tests möglicherweise immer wieder verworfen. Also habe ich diese Tests gelöscht.
Möglicherweise hätte ich stärkere Tests durchführen müssen, die die von der Qualitätssicherung entdeckten Randfälle erfasst haben. Wenn Sie jedoch ein System wie dieses haben, das auf vielen Physik- und Gameplay-Systemen aufbaut und mit den Verhaltensweisen im Laufe der Zeit zu tun hat, wird es zu einem kleinen Problem Alptraum, um genau anzugeben, was passiert.
Ich habe mit ziemlicher Sicherheit Fehler in meiner Herangehensweise gemacht, und wie ich bereits sagte, hat TDD hervorragend funktioniert und sogar einige optimierende Refaktoren unterstützt.