Testarten

In der Theorie zum Softwaretest existieren viele unterschiedliche Ansätze anhand derer Testarten klassifiziert werden können. Diese Seite soll einen Überblick über die wichtigsten Testarten aufzeigen.

Eine erste Unterscheidung kann im Hinblick auf die anzuwendende Prüftechnik getroffen werden. Statische Prüftechniken (Statische Tests) analysieren das Testobjekt u.a. durch intensive Betrachtung von Personen. Eine tatsächliche Ausführung des Programmcodes inkl. Belieferung mit Testdaten findet nicht statt.[1] Ein praktisches Beispiel für eine solche Prüftechnik ist ein Review des Quellcodes einer Software.

Bei dynamischen Prüftechniken hingegen wird die Software mit konkreten Testdaten (Eingabewerten) versorgt, um sie anschließend auszuführen.[2] Mittels einer dynamischen Prüftechnik kann somit explizit auf das Qualitätsmerkmal der Funktionalität geprüft werden. In der Praxis würde beispielsweise ein Tester verifizieren, ob ein Produkt aus einem Online-Shop dem Warenkorb hinzugefügt werden kann.

Oliver Lampert - Meine Leistungen - Qualitätssicherung für Internet-Präsenzen / Webseiten

Testfallentwurf

Eine weitere Möglichkeit besteht darin einen Test hinsichtlich des Testfallentwurfs zu untergliedern.[3] Die Kenntnis über das Testobjekt bestimmt hierbei die Art, wie der Testfall spezifiziert wird. In diesem Zusammenhang wird vorrangig zwischen Whitebox- und Blackbox-Test unterschieden.

Der Blackbox-Test hat zum Ziel, Abweichung im Hinblick auf die Spezifikation anhand des Zustands oder des Verhaltens der Software aufzudecken, ohne das Wissen über die Implementierung genutzt wird. Hingegen wird beim Whitebox-Test die Kenntnis über die Programmlogik (interne Struktur) der Software explizit verwendet, um Fehlerursachen auf den Grund zu gehen.

Als einfaches Beispiel soll die Verifikation einer Fehlermeldung für ein Pflichtfeld in einem Kontaktformular dienen (Negativtest). Jene Meldung soll erscheinen, wenn der Benutzer seine E-Mail Adresse nicht angibt und das Formular absendet. Der Code zur Validierung der Eingabefelder wurde vom Entwickler mittels JavaScript umgesetzt.

Bei Anwendung des Blackbox-Tests würde der Tester einen einfachen manuellen Test durchführen und alle Formularfelder – bis auf die E-Mail Adresse – befüllen und die Daten absenden. Seine Erwartung (Spezifikation) zum Verhalten wäre das Erscheinen der Fehlermeldung, welche bei Ausführung auch tatsächlich auftaucht. Der Tester hat somit ausschließlich die Software benutzt ohne dessen Implementierung zu kennen. Beim White-Box Test hingegen könnte der Entwickler oder Tester einen Modultest schreiben, welcher das Fehlen des Wertes zur E-Mail Adresse bei Ausführung des Validierungs-Codes prüft.

Zusätzlich zu den beiden vorgestellten Möglichkeiten existiert die Begrifflichkeit des Greybox-Tests. Dieser lässt sich als Blackbox-Test unter Verwendung von partiellen Kentnissen zur Implementierung beschreiben.

Teststufe

Auch die Sichtweise, auf welcher Ebene oder Stufe ein Test stattfindet, kann zur Einteilung eines Tests genutzt werden. Die Teststufe beschreibt hierbei insbesondere wie stark eine Software bereits integriert ist.

Bzgl. der Teststufe lassen sich die nachfolgenden Tests unterscheiden:

  • Modul- oder Funktionstest
  • Integrationstest
  • Systemtest

Der Modultest dient der Verifikation von möglichst kleinen Code-Bündeln, die sich autark von anderen Komponenten der Software testen lassen.[4] In der Praxis handelt es sich hierbei z.B. um JUnit Tests, welche beispielsweise Programmlogik wie Entscheidungspfade innerhalb eines Code-Moduls testen.

Der Integrationstest an zweiter Stelle möchte bereits die Integration von mind. 2 Softwarekomponenten prüfen. Ein Beispiel wäre die Verifikation eines PHP Service Clients, der auf die korrekte Funktionalität im Zusammenspiel mit einem Java SOAP Service geprüft wird, während die graphische Oberfläche (GUI) und die Datenbank (DB) nicht einbezogen werden.

Schlussendlich betrachtet der Systemtest einen Test über das gesamte System hinweg. Hierbei könnte eine gesamte Webapplikation (z.B. eCommerce-Plattform) im Hinblick auf dessen Funktionalität verifiziert werden. Mögliche Bestandteile eines solchen Systems könnten sein:

  • Frontend-Schicht (HTML, CSS, Javascript, PHP)
  • Middleware-Schicht (Java, SOAP)
  • Backend (Oracle DB)

Der Systemtest würde Maßnahmen ergreifen, so dass an geeigneten Prüfpunkten das Verhalten bzw. der Zustand verifiziert wird. Das könnte auf der Weboberfläche bei Anzeigelementen anfangen und auf Datenbankebene bei persistierten Datensätzen enden.

Weitere Testarten

Abschließend soll noch eine Unterscheidung von Softwaretests anhand relevanter Begrifflichkeiten in der Praxis getroffen werden. Folgende Definitionen von Testarten sind im Rahmen einer Qualitätssicherung für Software unerlässlich:

  • Manueller Test
  • Automatischer Test (Testautomatisierung)
  • Regressionstest

Beim manuellen Test werden sämtliche Testaktivitäten einschließlich der Dokumentation der Testschritte per Hand durchgeführt.

Der automatische Softwaretest hingegen erfolgt Tool-gestützt, wobei auch die Dokumentation der Testergebnisse idealerweise voll automatisiert abgewickelt wird.

In der Praxis gibt es im Hinblick auf den Automatisierungsgrad eines Tests beliebig viele Abstufungen. Zu erwähnen ist, dass die Bewertung der Testergebnisse meist nicht vollautomatisch erfolgt.

Abschließend sei der Regressionstest erwähnt, welcher idealerweise automatisiert durchgeführt wird. Dieser soll sicherstellen, dass nach Anpassung von Codebestandteilen kein von der Spezifikation abweichender Zustand bzw. ein unerwünschtes Verhalten in bereits positiv getesteten Fällen entstanden ist.

[1]     Vgl. Spillner, Linz 04 /Softwaretest/ S.71

[2]     Vgl. Liggesmeyer 02 /Software-Qualität/ S.36

[3]     Vgl. Myers 01 /Methodisches Testen/ S.6ff.; Vgl. Spillner, Linz 04 /Softwaretest/ S.96

[4]     Vgl. Spillner, Linz 04 /Softwaretest/ S.40ff.

Quality Assurance E-Learning