6 Schritte zur optimalen Qualitätssicherung in der Softwareentwicklung

Qualitätssicherung in der Softwareentwicklung

Qualität in der Softwareentwicklung kommt nicht von Ungefähr. Sie muss durch einen parallelen, eigenständigen Prozess im Verlauf des gesamten Entwicklungs-Zyklusses sichergestellt werden. Dafür gibt es unterschiedliche Methoden und Verfahren, von denen sich besonders 6 Testarten in der Praxis bewährt haben. Sie alle verbindet dabei das Grundkonzept, dass ein Test zunächst immer das korrekte erwartete Ergebnis definiert, welches im Rahmen der Testdurchführung anhand variierter Testdaten mit dem tatsächlichen Ergebnis verglichen wird, um so mögliche Fehler aufzudecken.

Und das sind die 6 wichtigsten Testarten für die Qualitätssicherung:

Unit Test – stellt sicher, dass jede Codezeile richtig funktioniert

Beim Unit Testing werden einzelne Codezeilen bzw. Codebereiche in einem Programm individuell und unabhängig voneinander gestestet um festzustellen, ob sie tatsächlich genau das tun, was sie sollen. Diese Testart wird normalerweise vom Entwickler selbst definiert, während er den Quellcode schreibt. Das “Einheiten-Testen” hilft ihm dabei, saubereren Code mit weniger Fehlern in kürzerer Zeit zu entwickeln. Normalerweise wird man nicht unbedingt jede Codezeile in der gesamten Software durch Unit Tests prüfen, da dies recht aufwändig ist. Aber eine Abdeckung von über 50% ist definitiv empfehlenswert.

Integrationstest – stellt sicher, dass einzelne Software-Bausteine richtig zusammenarbeiten

Integrationstests sind eine logische Weiterentwicklung der Unit Tests. Zwei Software-Bausteine, die bereits jeweils durch Unit Tests qualitätsgesichert wurden, werden nun zusammengefügt, um die Verbindung zwischen ihnen zu verifizieren und das Funktionieren von Schnittstellen zu prüfen.

Funktionstest – stellt sicher, dass einzelne Funktionen der Software das richtige Ergebnis produzieren

Funktionale Tests gehören zur Kategorie der “Black Box” Tests. Sie überprüfen, ob eine einzelne Funktion oder ein Set von zusammengehörenden Funktionen richtig ablaufen und das gewünschte Ergebnis liefern. Man nennt diese Testart “Black Box”, da der Tester – im Gegensatz zu den obigen Testarten – keine Kenntnis über den Code selbst benötigt. Ihn interessiert ausschließlich das funktionale Ergebnis, ganz gleich, wie es intern innerhalb der Software hergestellt wird. Funktionstests sind also eine Qualitätssicherung auf der Ebene der Geschäftslogik von Software.

Systemtest – stellt sicher, dass alle Funktionen zusammen das gewünschte Ergebnis liefern

Hierbei wird übergreifende Funktionalität im Sinne einer Anfang-bis-Ende-Betrachtung getestet. Dafür werden alle Funktionen, die zur Durchführung einer bestimmten spezifizierten Operation notwendig sind, überprüft um sicherzustellen, dass der gesamte Ablauf von Anfang und über alle Zwischenschritte hin bis zum Endpunkt fehlerfrei funktioniert. Operationen können dabei sowohl manuelle als auch automatisierte Prozesse sein und sich sowohl auf die funktionale Geschäftslogik der Software beziehen als auch auf rein technische und nicht-funktionale Aspekte.

Auch Systemtests sind typische “Black Box” Tests, die ohne jegliche Kenntnis der technischen Implementierung innerhalb des Codes durchgeführt werden können. Alles, was der Tester wissen muss, ist welches Ergebnis eine bestimmte Operation in der Software liefern sollte.

Regressionstest – stellt sicher, dass Änderungen an einer Stelle zu keinen neuen Fehlern an anderer Stelle führen

Durch Regressionstests wird geprüft, dass Änderungen an einer Stelle in der Software oder an Umgebungsparametern der Software (z.B. eine neue Version des Betriebssystems) keine neuen Fehler oder unerwünschte Seiteneffekte verursachen.

Typischerweise enthalten Regressionstests mehrere Elemente aus vorgelagerten Funktions- oder Systemtests, die in entsprechender Kombination erneut durchgeführt werden. Die Kunst beim Regressionstest besteht darin herauszfinden, welche Bereiche einer Software durch Änderungen an einer bestimmten Stelle betroffen sein könnten, um genau für diese Bereiche die bereits definierten relevanten Funktionstests zu wiederholen.

Abnahmetest – stellt sicher, dass der Kunde zufrieden ist

Am Ende der Softwareentwicklung muss der Projektkunde natürlich noch prüfen, ob die Software das leistet, was er beauftragt hat. Dementsprechend ist ein Abnahmetest der abschließende Test im QA-Zyklus und wird durch den Kunden selbst durchgeführt, häufig mit Unterstützung des Entwicklungspartners. Eine sinnvolle Strategie kann darin bestehen, die durchzuführenden Abnahmetests gemeinsam mit dem Kunden im Vorfeld zu definieren, um ein einheitliches Verständnis von den Qualitätserwartungen zu erarbeiten.

Warum sind diese 6 Testarten so wichtig für die Qualitätssicherung?

Je später im Entwicklungsprozess Fehler entdeckt werden, desto schwieriger sind die Fehleranalyse und Ursachensuche. Und damit verbunden steigen auch die Kosten zur Fehlerbehebung deutlich an. Es macht also Sinn, bereits zu Beginn der Entwicklung die einzelnen Code-Bestandteile zu überprüfen und eine durchgängige Teststrategie während der gesamten Entwicklungsphase zu implementieren – immer mit dem Ziel, Fehlfunktionen so schnell wie möglich zu erkennen und zu beheben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert