Das Testen von Software ist ein Prozess, bei dem die Korrektheit und die Ausführung der Software überprüft wird, um Fehler oder Defekte zu finden.
Erklärung
Um eine gute Anwendung zu erstellen, muss getestet und geprüft werden, ob die Anwendung alle Anforderungen erfüllt.
Softwaretests bieten eine unabhängige und objektive Sicht auf die Software und liefern potenziellen Kunden Informationen über die Qualität.
Das Testen ist beim Programmieren obligatorisch (also zwingend erforderlich), da es teilweise zu gefährlichen Situationen kommen kann, wenn eine Software nicht eingehend getestet wurde.
Testen kann jedoch nicht alle Fehler der Anwendung finden.
Beim Testen wird nicht nachgewiesen, dass ein Produkt unter allen Bedingungen ordnungsgemäß funktioniert, sondern nur, dass es unter bestimmten Bedingungen nicht funktioniert.
Das Testen umfasst meist eine Prüfung des Codes und auch die Ausführung des Codes in verschiedenen Umgebungen und Bedingungen.
Arten von Tests
In dieser Grafik sind die wichtigsten Testarten aufgelistet:
Wie du siehst, wird dabei zuerst einmal in Automatisiertes und Manuelles Testen unterschieden.
Automatisiertes Testen
Bei dem Automatiserten Testen werden Testfälle mit Hilfe von Automatisierungswerkzeugen oder einer Programmiersprache in Testskripte umgewandelt.
Manuelles Testen
Für die Durchführung manueller Tests wird das Produkt manuell (per Hand) durchgegangen und mithilfe von Testfällen überprüft, wo mögliche Fehler oder Defekte auftreten können.
Bei den manuellen Tests wird in drei verschiedene Arten unterschieden:
- White Box Tests
- Black Box Tests
- Grey Box Tests
White Box Test
Bei White Box Tests haben die Tester vollen Zugriff auf den Quellcode. Das ist nicht immer ratsam, da bei manchen Programmen dieser sehr vertraulich behandelt werden muss.
Diesen Quellcode gehen sie Schritt für Schritt durch und überprüfen das Programm auf mögliche Fehler bzw. Defekte.
Dabei beziehen sie jedoch nicht die Systemanforderungen in die Tests ein, sondern betrachten ausschließlich den Programmcode.
Black Box Test
Bei Black Box Tests werden alle Tests ohne Kenntnisse über die innere Funktionsweise/Implementierung des zu testenden Programms entwickelt.
Die Tester haben also keine Idee, was genau in den Klassen oder Methoden passiert.
Der Fokus bei Black Box Tests liegt auf der Funktionalität, die sich aus den Anforderungen an das System ableiten lassen.
Black Box Tests lassen sich dabei noch in zwei Testarten unterteilen:
- Funktionales Testen
- Nichtfunktionales Testen
Funktionales Testen
Die Testingenieure prüfen bei den funktionalen Tests alle Komponenten systematisch anhand der Anforderungen an das System.
Dabei werden alle Komponenten getestet, indem beispielsweise bei Methoden der Wert vorgegeben, die Ausgabe definiert und die tatsächliche Ausgabe mit dem erwarteten Wert verglichen wird.
Funktionale Tests beinhalten dabei folgende drei Schritte:
- Unit-Tests
- Integrationstests
- System-Tests
1. Unit-Test
Bei den Unit-Tests (deutsch Modultests) werden abgrenzbare Teile (z.B. ausgewählte Code-Abschnitte, Unterprogramme, Klassen) einzeln auf Fehler und Defekte getestet.
Das Hauptziel der Durchführung von Unit-Tests ist die Bestätigung der Funktionalität von Unit-Komponenten und ihrer Leistung.
2. Integrationstest
Nach der erfolgreichen Implementierung der Unit-Tests werden die Integrationstests durchgeführt.
Dabei wird der Datenfluss zwischen voneinander abhängigen Modulen oder die Schnittstelle zwischen zwei Klassen getestet.
Der Zweck des Integrationstests besteht darin, die Richtigkeit und Funktionsfähigkeit der Verbindung zwischen einzelnen Modulen zu überprüfen.
3. System-Test
Sobald die Unit- und Integrationstests fertig sind, werden die System-Tests durchgeführt.
Dabei wird das Softwareprodukt als komplettes System noch einmal Schritt für Schritt unter möglichst realistischen Nutzungsbedingungen getestet.
Nichtfunktionales Testen
Bei den nichtfunktionalen Tests wird das Programm auf mögliches Fehlverhalten in der Performanz, allgemeinen Benutzbarkeit und Sicherheit getestet.
Viele nichtfunktionale Eigenschaften wie z.B. Benutzbarkeit sind jedoch nur schwer quantifizierbar, sie können also schwer an konkreten Werten oder Verhalten des Programms festgemacht werden.
Auch fehlen oft konkrete Angaben aus der Anforderungsdefinition, wodurch entsprechende Tests und die Bewertung erzielter Testergebnisse erschwert werden.
Funktionstests stellen also sicher, dass das Softwareprodukt ordnungsgemäß funktioniert, während bei nichtfunktionalen Tests nichtfunktionale Aspekte wie Leistung, Verwendbarkeit, Zuverlässigkeit usw. geprüft werden.
Grey Box Test
Grey Box Tests sind eine Kombination aus White Box Tests und Black Box Tests. Die Tester haben also Zugriff auf den Quellcode und auf die Anforderungen an das System.
Grey Box Tests sind vorteilhaft, weil sie die einfache Technik der Black Box Tests mit dem auf den Code ausgerichteten System der White Box Tests kombinieren.
Was haben eigentlich Insekten mit Testen zu tun?
Vielleicht hast du ja schonmal von einem Bug im Kontext von Programmen gehört.
Dabei handelt es sich um Fehler im Code, die in manchen Fällen verheerende Folgen haben können.
Bug heißt übersetzt Insekt und tatsächlich löste schon einmal eine Motte eine Störung eines Computers aus!
Die Wissenschaftler schrieben nach diesem Vorfall in ihr Notizheft: "First actual case of bug being found" ("Der erste Fall, bei dem tatsächlich ein Insekt gefunden wurde").