"Test driven developement" hat auch seine Nachteile, naemlich dass man sich sehr leicht verrennt, alle moeglichen Tests zu schreiben, bis man dann beim Coden merkt, dass das Interface, was man sich so definiert hat, in dieser Form nicht sinnvoll ist.
TDD hat natürlich viele Methoden und Angriffspunkte, und mit Tests eine komplette Software zu definieren, die sich am Ende als unzweckmäßig erweist, ist nicht der Sinn von TDD. Der Kreislauf von Test und Implementierung sollte überschaubar sein, alles andere wäre nicht agil.
Integrationstests und Akzeptanztests beispielsweise greifen auf einer Ebene, bei der es nicht um das konkrete Testen von APIs in ihrer gegenwärtigen Ausprägung geht, sondern um das Verhalten größerer Software weitesgehend unabhängig von ihrer internen Organisation.
Mathias