Software Testing Methoden helfen uns, den Fokus auf bestimmte Aspekte der Software zu legen. Des Weiteren ist es möglich, mit einer fokussierten Auswahl an Testfällen eine hohe Testabdeckung zu erreichen. In diesem Artikel schauen wir uns die unterschiedlichen Software Testing Methoden an. Der Fokus der Testing Methoden liegt auf den funktionalen Tests. Bei den funktionalen Tests wird getestet, ob die Funktionalität der Software den dokumentierten Anforderungen entspricht.
Werde jetzt in 6-12 Monaten Software-Tester!
Welche Software Testing Methoden gibt es für funktionale Tests?
Die Software Testing Methoden für funktionale Tests oder auch Testverfahren genannt, können in die nachstehenden Kategorien einsortiert werden:
-
Black Box Testing
- Spezifikationsbasierte Testverfahren
- Erfahrungsbasierte Testverfahren
-
White Box Testing
- Strukturbasierte Testverfahren
-
Gray Box Testing
- Erfahrungsbasierte Testverfahren
Black Box Testing
Beim Black Box Testing benötigen wir kein Wissen über die innere Struktur der Softwareanwendung. Wir fokussieren uns auf das von außen beobachtbare Verhalten. Dazu müssen wir keine Kenntnisse über den Quellcode der Softwareanwendung haben. Oft geht es in diesen Testverfahren um die richtige Auswahl von Eingabe- und Ausgabewerten. Die möglichen Eingabe- und Ausgabewerte entnehmen wir in der Regel aus den dokumentierten Spezifikation. Aufgrund dessen werden die Black Box Software Testing Methoden auch spezifikationsbasierte Testverfahren genannt. Wenn wir einen Black Box Test ausführen, tätigen wir eine Eingabe und verifizieren, ob die Ausgaben dem in den dokumentierten Spezifikationen definierten Sollwert entspricht.
Beispiel Kaffeeautomaten:
Wir wählen einen Espresso an einem Kaffeeautomaten aus. Wir tätigen also eine Eingabe und anschließend bekommen wir als Ausgabe einen Espresso, wir probieren diesen und verifizieren, dass es ein Espresso ist. Wir benötigen hier kein Wissen darüber, wie der Automat den Espresso erstellt.
Spezifikationsbasierte Software Testing Methoden
Bei spezifikationsbasierten Testverfahren bildet die Spezifikation die Basis des Vorgehens; anhand dieser werden die Testfälle erstellt. In der Regel erstellt der/die Software-Tester:in die logischen Testfälle und anschließend die konkreten Testfälle.
Beispiel, logische und konkrete Testfälle:
Anforderung:
Der Verkauf alkoholhaltiger Waren ist in Deutschland für Personen unter 16 Jahren untersagt. Bier und Wein darf an Personen ab 16 Jahren, verkauft werden. Person, die 18 Jahre oder älter sind, dürfen alle alkoholhaltigen Waren kaufen.
Testfall 1 – logisch:
Eine Person in der Altersklasse [Alter >= 0 und Alter < 16] möchte ein Produkt in der Klasse Alkoholgehalt [alkoholfrei] kaufen. Das Kassensystem fordert keine Alterskontrolle, der Kauf wird erlaubt.
Testfall 1.1 – konkret:
Eine Person von 9 Jahren möchte eine Dose Limonade kaufen. Das Kassensystem fordert keine Alterskontrolle und erlaubt den Verkauf.
Ihr seht, dass wir den konkreten Testfall direkt ausführen können und wie wir ihn aus den Anforderungen, durch die Anwendung der Äquivalenzklassenanalyse, abgeleitet haben.
Wir haben in diesem Testfall also keine konkreten Werte, die wir direkt anwenden könnten, sondern er referenziert ganze Klassen von Werten. Wenn wir den Testfall am System ausführen, müssen wir diese Klassen durch konkrete Werte ersetzen.
Mehr zu logische und konkreten Testfällen im Artikel: Äquivalenzklassenbildung
Spezifikationsbasierte Software Testing Methoden
Es gibt unterschiedliche, spezifikationsbasierte Testing Methoden, die eingesetzt werden, um aus Anforderungen und Spezifikationen Testfälle abzuleiten. Jeder dieser Methoden hat einen anderen Fokus, welche Risiken beim Einsatz minimiert werden. Zu den gängigen spezifikationsbasierten Techniken gehören:
- Äquivalenzklassenbildung
- Grenzwertanalyse
- Wertebereichsanalyse
- Entscheidungstabellen
- Zustandsübergangstest
- Anwendungsfallbasierte Verfahren
Die spezifikationsbasierten Testing Methoden werden oft von dem/der Software-Tester:in eingesetzt, um Testfälle zu erstellen. Der/die Software-Tester:in führt die erstellten Testfälle aus und dokumentiert Abweichung zwischen dem Ist- und Sollzustand in einem Fehlerbericht.
White Box Testing
Bei den strukturbasierten Testing Methoden liegt der Fokus auf dem Quellcode – also der Struktur der Software. Diese Methode wird auch White Box Tests genannt. Es werden Programmierkenntnisse vorausgesetzt. Diese Tests werden in der Regel von den Softwareentwicklern implementiert und automatisiert ausgeführt. Das strukturbasierte Testen gehört zu den Testverfahren im White Box Testing, da sie auf die innere Struktur der Software eingehen und auf Wissen über die innere Struktur der Software angewiesen sind.
Zu den strukturbasierten Test-Techniken gehören:
- Zeilenüberdeckung
- Anweisungsüberdeckung
- Zweigüberdeckung
- Bedingungsüberdeckung
- Pfadüberdeckung
Bei den strukturbasierten Testfällen messen wir in der Regel die Testabdeckung. Es gibt unterschiedliche Tools, welche die Testabdeckung einer Software anzeigen, wie beispielsweise Sonarqube.
Gray Box Testing
Wir haben in den vorherigen Abschnitten das Black Box und White Box Testing kennengelernt. Das Gray Box Testing ist eine Kombination des Black Box und White Box Testing. Beim Gray Box Testing nutzen wir beispielsweise die dokumentierten Spezifikationen als auch die interne Struktur der Softwareanwendung, um unsere Tests zu erstellen. In nächsten Abschnitt schauen wir uns die erfahrungsbasierten Testverfahren an, dies können je nach Fähigkeit des/der Softwaretesters/Softwaretesterin als Black Box Testing oder bei zusätzlichem Wissen über die Struktur der Softwareanwendung als Gray Box Testing ausgeführt werden.
Erfahrungsbasierte Testverfahren
Bei den spezifikationsbasierten und strukturbasierten Testverfahren gibt es bestimmte Techniken (die wir oben vorgestellt haben), die man als eine Schritt-für-Schritt-Anleitung anwenden kann, um Testfälle zu erstellen. Das heißt, wenn unterschiedliche Software-Tester:in die Techniken gekonnt auf dieselben Anforderungen anwenden, werden sie auf die gleichen Testfälle kommen. Bei den erfahrungsbasierten Testing Methoden gibt es keine Schritt-für-Schritt-Anleitung, sondern die Erfahrung und Wissen spielen bei diesen Verfahren eine große Rolle. Je mehr Erfahrung und Wissen wir haben über die Anwendung, Technologien und die Geschäftsprozesse, die die Anwendung abbildet, desto effektiver wird das Testing in der Regel sein.
Exploratives Testen
Das meist eingesetzte erfahrungsbasierte Testverfahren ist das explorative Testen. Beim explorativen Testen hat der/die Ausführende sehr viel Freiraum und wird nicht durch eine Schritt-für-Schritt-Anleitung eingeschränkt. Dies hat einen großen Vorteil für erfahrene Software-Tester:innen, kann aber zum Nachteil werden für unerfahrene Software-Tester:innen.
Beim Explorativen Testen bilden nicht allein Spezifikationen die Basis für die Tests, sondern die Softwareanwendung selbst. Das heißt der/die Ausführende erforscht die Anwendung/ das Feature und erstellt während des Erforschens der Anwendung unterschiedliche Testfälle, die er/sie parallel ausführt.
Der Prozess beim explorativen Testen sieht in der Regel wie folgt aus:
Exploratives Testen – Black Box oder White Box?
Das explorative Testen kann sowohl als reines Black Box Testing oder als eine Kombination von Black Box und White Box Testing ausgeführt werden, auch Gray Box Testing genannt. Ein:e unerfahrene:r Software-Testerin wird das explorative Testing in der Regel als Black Box Testing ausführen. Ein erfahrene:r Tester:in eher als Gray Box. Je mehr ein:e Software-Tester:in über die Anwendung, Technologien und Geschäftsprozesse weiß, desto mehr Risiken kann dieser/diese im explorativen Testen identifizieren und minimieren. Aufgrund dessen ist es von Vorteil, Kenntnisse über die interne Struktur der Softwareanwendung zu haben und Gray Box Testing einzusetzen.
Exploratives Testen wird sehr oft im agilen Umfeld eingesetzt. Durch die agile Softwareentwicklung wird das explorative Testen immer beliebter. Das explorative Testen wird sowohl von Software-Tester:innen als auch Softwareentwickler:innen eingesetzt. Das explorative Testen sollte jedoch nicht die einzige Software Testing Methode sein, die ein:e Software-Testerin einsetzt. Jede Software Testing Methode hat unterschiedliche Vor- und Nachteile in unterschiedlichen Anwendungsgebieten.
Mehr zum explorativen Testen und dessen Vor- und Nachteile kannst Du im folgenden Artikel erfahren: Exploratives Testen
Risikobasiertes Testen
Beim risikobasierten Testen gibt es unterschiedliche Ansätze, um die Risiken zu identifizieren. In der Regel geht es beim risikobasierten Testen um die drei nachstehenden Punkte:
- Risiken identifizieren
- Risiken analysieren
- Risiken minimieren
Das risikobasierte Testen ist die Königsdisziplin der Testverfahren, da es viele Fähigkeiten voraussetzt. Richtig ausgeführt ist das risikobasierte Testen eine Kombination der nachstehenden Software Testing Methoden:
- Spezifikationsbasierte Testing Methoden (Black Box Testing)
- Strukturbasierte Testing Methoden (White Box Testing)
- Erfahrungsbasierte Testing Methoden (Black Box / Gray Box)
Spezifikationsbasierte Methoden
Beim risikobasierten Testen können die Spezifikationen genutzt werden, um erste Risiken zu identifizieren. Diese können genauer analysiert und mit allen am Softwareentwicklungsprozess beteiligten Personen kommuniziert werden. Die Spezifikationen können als Risikoidentifizierung und Risikoanalyse genutzt werden.
Strukturbasierte Methoden
Je mehr Wissen wir beim risikobasierten Testen über die Anwendung, die Schnittstellen zu anderen Systemen und die ganze Architektur haben, desto besser wird unser Ergebnis beim risikobasierten Testen sein. Dieses Wissen können wir nutzen, um mehr Risiken zu identifizieren.
Erfahrungsbasierte Methoden
Genau wie beim explorativen Testen spielt die Erfahrung beim risikobasierten Testen eine große Rolle. Je mehr Erfahrung und Wissen wir haben, desto effizienter wird das risikobasierte Testverfahren sein. Hier gibt es keine Schritt-für-Schritt-Anleitung, die von jedem gleich ausgeführt wird und zum selben Ergebnis führt.
Je mehr Wissen wir beim risikobasierten Testen über die Geschäftsprozesse, interne Struktur der Anwendung und eingesetzten Technologien haben, desto mehr Risiken können wir in der Regel identifizieren.
Zusammenfassung Software Testing Methoden
Es gibt nicht die eine optimale Testing Methode im Software Testing. Die unterschiedlichen Software Testing Methoden haben Vor- und Nachteile. Wichtig ist es, diese zu kennen und je nach Kontext zu entscheiden, welches eingesetzt werden soll. In der Regel wird bei Softwareentwicklungsprojekten eine Kombination aus den im Artikel vorgestellten Testverfahren genutzt. Eine Kombination aus den Verfahren kann dazu beitragen, eine Software zu entwickeln, die einen großen Mehrwert für alle Stakeholder bietet. An dem Testprozess sind in der Regel unterschiedliche Rollen beteiligt, wie beispielsweise Software-Tester:innen (Black Box Testing), Softwareentwickler (White Box Testing) etc.. Wichtig ist hier eine gute Abstimmung zwischen allen am Softwareentwicklungsprozess beteiligten Personen.