Der beste ROI ist normalerweise der früheste Test, der diese Art von Fehler finden kann.
Unit-Tests sollten die meisten Fehler aufdecken, die sich nur in einer Methode oder möglicherweise in einer Komponente befinden. Es werden Fehler gefunden, die normalerweise innerhalb von Minuten behoben werden können, wobei die Gesamtumschlagszeit weniger als eine Stunde beträgt. SEHR billige Tests, SEHR billige Fehler zu finden und zu beheben! Wenn diese Fehler in den Integrationstest eingegangen sind, kann der Turn-Around eher ein Tag sein (Testläufe finden häufig nachts statt), vorausgesetzt, der Fehler wird nicht von einem anderen Fehler verdeckt. Außerdem wird es wahrscheinlich mehr Bugs geben, da anderer Code gegen den ursprünglichen Buggy-Code geschrieben wurde. Darüber hinaus wirken sich alle Neugestaltungen auf mehr Codeteile aus. Wenn mehr Fehler durchgelassen werden, müssen viele weitere Testläufe durchgeführt werden, bevor der Integrationstest abgeschlossen werden kann. Schlechte Komponententests sind oft das Herzstück von langen, kostspieligen und teuren ProzessenIntegrationszyklen testen. Durch das Überspringen von Unit-Tests wird möglicherweise die Entwicklungszeit halbiert, aber das Testen dauert mindestens drei- bis viermal so lange, das gesamte Projekt wird doppelt so lang und Sie haben immer noch eine geringere Qualität als bei Unit-Tests mit IME.
Integrationstests sind normalerweise die frühesten tatsächlichen Tests, bei denen Integrationsfehler gefunden werden können (obwohl Überprüfungsprozesse einige Fehler finden können, bevor die Software geschrieben wird oder bevor der Code getestet wird). Sie möchten diese Fehler finden, bevor Sie dem Benutzer oder der Veröffentlichung die Software anzeigen, da das Beheben von Fehlern im letzten Moment (oder das Beheben von Fehlern im laufenden Betrieb!) Sehr teuer ist. Sie können diese Fehler nicht früher finden, wenn sie billiger zu beheben wären, da Sie (per Definition) mehrere funktionierende Komponenten für die Integration benötigen. Integrationstests werden verlangsamt, wenn Fehler, die nichts mit interagierenden Teilen zu tun haben (wie kleinere Tippfehler), zuerst behoben werden müssen, bevor die interessanteren Tests überhaupt beginnen können.
Beim Testen der Benutzerakzeptanz wird sichergestellt, dass die Software das tut, was der Kunde wünscht (obwohl er hoffentlich die ganze Zeit involviert war), um das Risiko zu verringern, dass am Ende des Projekts eine große Lücke zwischen den Erwartungen und der tatsächlichen Software entsteht - SEHR teuer !). Wenn Sie dieses Teststadium erreicht haben, sollten Sie wirklich glauben, dass die meisten Fehler in Ihrem Produkt, zumindest im Vergleich zu den technischen Daten, bereits gefunden wurden. Beim Testen der Benutzerakzeptanz geht es mehr darum, sicherzustellen, dass das Produkt den Anforderungen des Kunden entspricht, als dass sichergestellt wird, dass im Vergleich zu den Spezifikationen keine Fehler auftreten.
Wenn ich nur einen Testtyp automatisieren würde, wäre es ein Unit-Test. Integrationstests können manuell durchgeführt werden und wurden von vielen großen Unternehmen über Jahre hinweg auf diese Weise durchgeführt. Es ist zeitaufwändiger, Arbeiten manuell auszuführen, die von einem Computer immer wieder ausgeführt werden können, und für die meisten Projekte weitaus teurer, ganz zu schweigen von langweiligen und fehleranfälligen Aufgaben, die jedoch ausgeführt werden können. Benutzerakzeptanztests werden häufig manuell durchgeführt, da Benutzer häufig nicht wissen, wie sie ihre Tests automatisieren sollen, während sie noch testen, was ihnen wichtig ist. Unit-Tests müssen automatisiert werden. Sie müssen in der Lage sein, alle Unit-Tests innerhalb weniger Sekunden bei Bedarf so häufig wie alle paar Minuten auszuführen. Menschen können sich mit manuellen Tests einfach nicht einmal annähern. Ganz zu schweigen davon, dass Unit-Tests im Code enthalten sind und nicht ausgeführt werden können, ohne sie über Code aufzurufen, dh zu automatisieren.
Beachten Sie, dass dies in erster Linie ein Forum für Entwickler und nicht für Tester ist. Integrationstests werden hauptsächlich von Testern durchgeführt. Unit-Tests werden von Entwicklern implementiert. Natürlich sprechen Entwickler mehr über Komponententests als über andere Testarten. Dies bedeutet nicht, dass sie andere Tests nicht für wichtig halten. Es bedeutet nur, dass sie es nicht wirklich tun (oder es seltener tun).