Seltsame Frage - Unit Testing soll automatisch, wiederholbar und einfach zu bedienen sein. Für viele (auch für mich) ist "manual unit test" ein Widerspruch in sich.
Manuelles Testen kann in solchen Fällen nützlich sein, in denen man keine automatisierten Tests durchführen kann. Diese liegen typischerweise nicht auf dem Einheitentestniveau, sondern höher - z.B. Integration, GUI, Stress etc. Tests.
Mit Komponententests testen Sie kleine Teile Ihres Codes (normalerweise einzelne Methoden / Klassen) gleichzeitig. Die Tests sind selbst in Code geschrieben, so dass sie (fast immer) automatisch von einem Unit-Testing-Framework ausgeführt werden können.
Update: Jetzt, da Sie Ihrer Frage einen konkreteren Kontext geben, ist es einfacher, eine konkrete Antwort zu geben: -)
Ich bin überzeugt, dass automatisierte Komponententests sich während der gesamten Laufzeit eines SW-Projekts praktisch immer amortisieren. Das Einrichten ist teurer als das manuelle Testen, aber je mehr Sie es ausführen, desto mehr Zeit sparen Sie - und desto früher erhalten Sie Feedback darüber, wo Ihr Code durch neue Änderungen unterbrochen wird.
Legacy-Code mit Komponententests abzudecken, ist definitiv nicht einfach, aber wenn das Produkt für Ihr Unternehmen wertvoll ist und voraussichtlich noch jahrelang Bestand haben wird, ist es immer noch eine würdige Anstrengung. Besonders, da ein Produktionssystem im wirklichen Leben die erwartete Lebensdauer übertrifft.
Ein Aspekt ist, dass Sie "versuchen, alle von uns geschriebenen Codepfade zu überprüfen" - mit automatisierten Unit-Tests in Kombination mit einem Code-Coverage-Tool, das Sie automatisch sehen können - oft direkt in Ihrer IDE, wenn das Coverage-Tool integriert ist Nun, welche Code Pfade sind nicht durch Ihre neuesten Unit-Tests abgedeckt.
Ich empfehle Effektiv mit Legacy-Code - es enthält a Viel wertvolles Wissen darüber, wie man Komponententests für verschlungenen, schlecht geschriebenen Legacy-Code schreibt.
"Manual Unit Testing" ist ziemlich unmöglich. Komponententests sind definiert als isolierte Tests von kleinen Codeeinheiten. Sie können das nicht wirklich manuell tun.
Wenn Sie jetzt von Integrationstests sprechen, ist das eine andere Sache:
Pro manuelle Integrationstests:
Con manuelle Integrationstests:
Alles in allem ist es das Beste, beide manuelle und automatisierte Integrationstests zu haben; Diese können sich manchmal gut ergänzen, da einige Dinge tatsächlich einfacher automatisiert zu testen sind, während andere überhaupt nicht automatisiert werden können.
Ich denke, dass die einzige wirkliche Antwort auf Ihre Frage ist, spielt keine Rolle, weil Sie beide haben müssen.
Mit automatisierten Komponententests können Ihre Entwickler Tests programmieren, die den Code automatisch nach ihrem Verständnis der Spezifikationen validieren. Da sie automatisiert sind, können sie jedes Mal mit wenig oder keiner Variation wiederholt werden. Per Definition werden diese Komponententests wissen, wie die Software funktioniert, und können daher als white box testing betrachtet werden - die Tests kennen einige, wenn nicht alle zugrunde liegenden Codes .
Manuelles Testen wird andererseits Probleme aus Sicht der Benutzer aufdecken. Sie können herausfinden, welche Fehler von Entitäten auftreten können, die nicht mit dem zugrunde liegenden Code und der zugrunde liegenden Struktur vertraut sind, sowie bei Problemen mit der Benutzerfreundlichkeit Ihres Programms. Dies wird als Blackbox-Test betrachtet.
Tags und Links unit-testing