Seminare der PW-Akademie

Komponententest

 

Was ist der Komponententest

Der Komponententest bildet im klassischen V-Modell der Softwareentwicklung die erste Teststufe nach der Implementierung, sprich nach der Spitze des V. Das heißt, an diesem Punkt trifft die Entwicklung bzw. Umsetzung den ersten der Test einzelner Software-Funktionen.

Abbildung 1: Verortung der Teststufe Komponententest im V-Modell
Im Englischen heißt der Komponententest „Single Unit Test“. „Single“ ist dabei der entscheidende Begriff, da im Komponententest nur eine einzelne Komponente getestet wird. Eine Komponente ist am Beispiel der Softwareentwicklung eine einzelne Funktion im Code oder ein Codeabschnitt. Die Definition einer Komponente ist abhängig von verschiedenen Faktoren und kann nicht einfach verallgemeinert werden. So kann zum Beispiel eine zugekaufte Software als Komponente gesehen werden, obwohl es ein Verbund aus vielen Codeabschnitten sowie verschiedenen Funktionsaufrufen ist.

Abbildung: Verortung der Teststufe Komponententest im V-Modell

Was ist das Ziel des Komponententests

Ein Komponententest ist, wie oben beschrieben, das Abtesten der einzelnen Komponenten, bevor diese zu einem System integriert werden. Das Ziel ist es hierbei, die Funktionalität der jeweiligen Komponente zu gewährleisten. Die Tests untergliedern sich dabei in die Bereiche „funktionale Tests“ sowie „nicht funktionale Tests“.

Bei den funktionalen Tests wird die Komponente auf die korrekte Ausführung ihrer Funktionen getestet. Im Vordergrund steht dabei die Frage: „Was macht die Software?“. Sprich, die Komponente wird in allen Belangen getestet, welche ihre korrekte Ausführung der Funktionen betreffen. Das können Umrechnungen, Kalkulationen oder korrekte Code-Aufrufe sein.

Die nicht funktionalen Tests beschäftigen sich, anders als die funktionalen Tests, nicht mit den Funktionen der Komponente, sondern mit den Umständen, unter welchen die Funktionen erfüllt werden müssen. Dabei steht die Frage: „Wie arbeitet die Software?“ im Vordergrund. Das primäre Ziel der Tests ist es also zu schauen, ob die Komponente ihre Funktionen unter bestimmten Gesichtspunkten erfüllt. Bekannte Beispiele wären dabei das Testen der Performanz oder ein Belastungstest.

Am Ende der Komponententests steht eine in ihrer Funktionalität getestete Komponente, welche in ein System entsprechend den definierten Anforderungen integriert werden kann.

Vorteile des Komponententests

Die Vorteile des Komponententest liegen in der einzelnen Betrachtung der definierten Komponente. Damit wird sichergestellt, dass die einzelne Komponente in all ihrer definierten Eigenschaften, sprich sowohl funktional als auch nicht-funktional, abgesichert ist. Sämtliche Signale, welche die Komponente zur Ausführung ihrer Funktionen benötigt, können durch eine Testumgebung simuliert werden. Speziell beim Testen von Software können hierbei Fehler aufgedeckt werden, welche beim Betrieb im System schwerwiegende Folgen haben könnten, ohne dass diese Komponente sich im realen System befinden muss. Alle erforderlichen Eingangssignale können über die Testumgebung in die Komponente eingespeist und bei Bedarf problemlos angepasst werden. Ein mittlerweile klassisches Beispiel einer solchen Testumgebung war ein Aufbau mit Matlab Simulink. Für einen guten Aufbau sollte der Komponententester vorher den Schaltplan entwerfen bzw. falls bereits einer gegeben ist, diesen korrekt umsetzen.

Danach ist es wesentlich unkomplizierter, die einzelnen Komponenten in ein System zu integrieren und deren Kommunikation untereinander zu überprüfen. Dies ist allerdings Thema des Integrationstests. Hier muss dann nicht erneut die korrekte Funktionsweise der Komponenten überprüft werden, da dies bereits geschehen ist. Man kann sich also auf die reine Kommunikation der Komponenten konzentrieren.

Auch im späteren Systemtest kann man sich primär auf die Funktionsweise des gesamten Systems konzentrieren und die Testfälle zur Absicherung der Kundenanforderungen abarbeiten, da die einzelnen Komponenten bereits am Anfang der Testphase ausführlich bewertet wurden. Somit wird auch die Fehlersuche drastisch verringert, denn aufgrund der vorangegangenen Testebenen können auftauchende Fehler besser bezüglich ihrer Zugehörigkeit zugeordnet sowie behoben werden.

Anwendung von Komponententest

Komponententests finden überall dort Anwendung, wo am Ende ein funktionsfähiges System das Ergebnis sein soll. Je später Fehler in einer Software oder innerhalb eines Entwicklungsprozesses gefunden werden, desto teurer wird deren Beseitigung. Man spricht davon, dass ein Fehler, der nicht gefunden wird, pro Entwicklungsebene das zehnfache der eigentlichen Behebungskosten benötigt. Daher ist es wichtig, schon mit dem ausführlichen Testen der einzelnen Komponenten anzufangen, sobald es die Möglichkeit dazu gibt.

Wie bereits beschrieben, ist es sehr sinnvoll, mit einer virtuellen Versuchsumgebung zu testen. Diese Umgebungen können jederzeit und mit wenig Aufwand angepasst werden. Der initiale Aufwand ist zwar höher, aber es rechnet sich sehr schnell, wenn diese Testumgebung regelmäßig genutzt wird. Sollte man sofort auf der richtigen Hardware testen, muss man berücksichtigen, dass diese erheblichen Schaden nehmen kann, sollte in der Komponente ein Fehler auftauchen, der zum Beispiel Stromstärken oder Spannungen beeinflusst. Speziell, wenn dieser Fehler erst beim Testen des gesamten Systems auftritt und dann nicht nur die Komponente, sondern das gesamte System zerstören kann.

Typische Fehler bzw. Fehlerzustände, die durch den Komponententest gefunden werden, sind Datenflussprobleme oder Fehler in der Codierung. Diese Art von Fehler frühzeitig zu entdecken, spart zum Ende des gesamten Testprozesses viel Zeit und Geld.

Was sollte ich noch über den Komponententest wissen?

Der Komponententest ist ein unerlässliches Mittel, wenn es darum geht, ein System zu entwickeln. Dabei spielt es keine Rolle, ob es sich um ein System aus Mechanik, Software oder einem kombinierten System handelt. Fehler müssen frühzeitig erkannt werden. Der Komponententest ist dabei die früheste Form des Testens außerhalb der Überprüfung von Anforderungen oder anderen Dokumenten. Der Vorteil, dass die Komponente außerhalb der Einflüsse anderer Komponenten getestet wird, ist für das Testen der Anforderungen an die Komponente selbst essenziell.

Wie so häufig im Bereich des Testens, muss der Komponententest an die entsprechenden Gegebenheiten des Testprozesses und an die Vorgaben angepasst werden. Es gibt nicht den einen Testablauf, der für alle Szenarien der Beste ist. Auch die angesprochene Definition einer Komponente spielt dort mit rein. Was für einen bereits ein System ist, nutzt ein anderer als Komponente.

Es ist dabei immer essenziell, die Rückverfolgbarkeit nie aus den Augen zu verlieren, sprich die Verbindung zwischen Testfall und Anforderung. Jede Anforderung muss durch einen Testfall belegt werden. Somit gilt auch ein Komponententest erst als abgeschlossen, wenn alle Anforderungen an die entsprechende Komponente durch Testfälle belegt werden können.

PW Akademie

Das Wissen hinter dem Komponententest ist Teil der Schulung „ Certified Tester Foundation Level“ (CTFL) vom „International Software testing Qualification Board“, kurz ISTQB. Wir bieten diese Schulung in unserer Prozesswerk Akademie an. Unsere Trainer sind als Berater im technischen Bereich tätig und können auf mehrere Jahre Erfahrung im Testing sowie Testmanagement bei verschiedenen Unternehmen zurückgreifen.

Sei es von einfachen Software Tests auf Komponentenebene bis hin zum Systemtest via Erprobung am Gesamtfahrzeug. Des Weiteren sind sie nicht nur auf das reine Testing spezialisiert, sondern kennen sich darüber hinaus in dessen Umfeld sehr gut aus. Dadurch können viele Brücken von Theorie zur Praxis gebaut werden, was das Verständnis der Theorie an einfachen Beispielen deutlicher macht und gerade für zukünftige Tester einen Einblick in reale Fälle sowie deren Lösung, Umsetzung und Probleme ermöglicht. Als Plus bieten die Akademie-Räume inklusive der Versorgung an Getränken, Snacks und Mittagessen das perfekte Ambiente zum Erlernen der umfangreichen CTFL Theorie. Wir konzentrieren uns darauf, dass jeder Teilnehmer auf die Prüfung vorbereitet ist. Auch nach Abschluss der Schulung stehen wir den Teilnehmern durch ein Netzwerk über LinkedIn für Fragen und Anregungen zur Verfügung.