Dies ist ein Auszug aus dem Unit Testing Succinctly eBook von Marc Clifton, freundlicherweise von Syncfusion zur Verfügung gestellt.
Das übliche Mantra, das wir bei jeder Softwaremethodik hören, ist, dass es die Benutzerfreundlichkeit und Qualität verbessert, die Entwicklungs- und Testzeit reduziert und das Produkt schneller und mit weniger Fehlern auf den Markt bringt. Dies sind hohe Ziele, aber ich habe noch nicht gesehen, dass eine Methodik den Gral der Softwareentwicklung liefert.
Letztendlich besteht der Hauptgrund für das Schreiben von Komponententests darin, die Richtigkeit zu beweisen. Dies geschieht nur, wenn Sie Komponententests schreiben Gut. Einzeltests allein verbessern die Verwendbarkeit oder Qualität Ihres Produkts nicht direkt. Sie können die Anwendung trotzdem durcheinander bringen, unabhängig davon, ob sie sich als richtig erwiesen hat oder nicht - und es ist sicherlich nicht garantiert, die Entwicklungs- und Testzeit zu reduzieren (mehr dazu später) oder Ihr Produkt früher auf den Markt zu bringen.
Lassen Sie uns also von Anfang an klar und real sein: Unit-Tests können verwendet werden, um die Richtigkeit zu überprüfen Nebenwirkung Dies muss im Hinblick auf Ihren Entwicklungsprozess mit dem Aufwand des Schreibens und Aufrechterhaltens nützlicher Komponententests in Einklang gebracht werden.
Gut geschriebene Komponententests geben Ihnen eine messbar Sie können sicher sein, dass sich die unzähligen Methoden, aus denen Ihre Anwendung besteht, korrekt verhalten. Der einfachste Weg, diese Messung objektiv durchzuführen, ist ein Überdeckungstest: In welchem Prozentsatz der Methoden in Ihrer Anwendung werden Komponententests gegen sie geschrieben? Während diese Frage nicht direkt anspricht, ob eine Methode als eine Einheit betrachtet werden soll (wird später diskutiert) oder ob die Tests sinnvoll sind, ist sie dennoch eine Messung, die Sie jederzeit durchführen können, und kann als Richtwert für die Richtigkeit von verwendet werden Ihre Bewerbung.
Das Testen von Einheiten ist ein iterativer Prozess. Es gibt immer Fehler, die beim Testen von Einheiten übersehen werden. Die Anzahl der im Laufe der Zeit gemeldeten Fehler und die Anzahl der ungelösten Probleme im Vergleich zu den gelösten Problemen bieten jedoch aussagekräftige Informationen zum Zustand Ihrer Anwendung. Es ist zwar unmöglich zu sagen: „Mit dem Komponententest wurde die Anzahl der Fehler um 50 Prozent reduziert“. Es ist jedoch möglich zu messen, wie viele Fehler Ihre Anwendung aufgrund einer unvollständigen Abdeckung des Gerätetests hat. Während Sie Komponententests schreiben, um das Problem und den Fix zu überprüfen, können Sie auch messen, wie viele Komponententests Sie bezüglich der gemeldeten Fehler geschrieben haben, im Vergleich zur Gesamtzahl der Komponententests.
Alle diese Benchmarks verleihen Ihrem Entwicklungsprozess eine gewisse Objektivität. Einer der Vorteile des Komponententests ist daher, dass jeder, vom Entwickler bis zum Manager, objektive Informationen erhält, die in den Entwicklungsprozess zurückgeführt werden können, um diesen Prozess zu verbessern.
Ein weiterer Vorteil ist die Wiederholbarkeit, auch als Regressionstest bekannt. Wenn eine Anwendung ausgereift ist, möchten wir sicherstellen, dass diese vorhanden ist, Arbeiten Code ist nicht defekt. Durch das Schreiben von Komponententests gegen Methoden, während sie geschrieben werden, und durch Hinzufügen von Komponententests für Fehler, wenn sie gemeldet werden, können alle diese Tests automatisch erneut getestet werden, wenn neuer Code hinzugefügt oder vorhandener Code geändert wird. Komponententests werden zu einem bedeutenden Zeitreduzierungswerkzeug, wenn getestet wird, ob sich eine Anwendung nach einer geringfügigen oder erheblichen Codeänderung noch korrekt verhält. Während Unit-Tests Usability-Tests, Leistungstests, Belastungstests usw. nicht ersetzen, hilft es auf jeden Fall, die Zeit zu sparen, die bei der allgemeinen Frage verschwendet wird: „Das hat vorher funktioniert; Warum tut es das jetzt nicht? "
Es ist leicht zu testen, dass eine Methode das Richtige tut, wenn alle Prozesse in der Methode linear ausgeführt werden. Sobald Sie jedoch eine ob
Aussage oder a Schalter
Anweisung, die Sie erstellen zyklomatische Komplexität, Das ist eine fantastische Art zu sagen, dass Ihr Code jetzt mehrere Ausführungspfade hat. Die nützlichsten Unit-Tests sind die, die getestet werden jeder einzelne Code-Zweig das kommt in deiner Methode vor. Das Schreiben dieser Art von Komponententests kann mühsam sein, ist jedoch die Anstrengung wert, da sie garantiert, dass mindestens jeder Codezweig ausgeführt wurde. Dies kann nicht während des Abnahmetests, des Verwendbarkeitstests oder anderer Tests der Qualitätssicherung auftreten Abteilung (wenn Sie eine haben) führt.
In dieser ganzen Serie werden verschiedene Strategien und Tipps zur Durchführung effektiver Komponententests beschrieben.