Ein Angebot von

Keine Angst vor Software-Varianten – Wiederverwendung und Vererbung von Testfällen

| Autor / Redakteur: Michael Wittner* / Sebastian Gerstl

Richtiger Umgang mit Software-Varianten: Ein Lösungsansatz

Anhand eines Beispiels wird im Folgenden eine Methode zur Erstellung und Pflege von Variantentests vorgestellt. Das Beispiel behandelt eine Funktion zur Statusanzeige des Tankinhalts verschiedener Fahrzeugvarianten (PKW und LKW). Erschwerend kommt hinzu, dass die Fahrzeugvarianten „LKW“ mit einem Zusatztank ausgestattet sein können, dessen Pegelstand ebenfalls berücksichtigt werden soll.

Eine Beispielfunktion

Als Beispiel soll eine Funktion dienen, die bezogen auf den Füllstand des Tanks eines Fahrzeugs einen Status zurückliefert. Die Spezifikation ist in Bild 3 in grafischer Form gegeben: Die Funktion soll eine Warnung oder einen Alarm zurückgeben, wenn jeweils ein definierter Pegelstand unterschritten wird. Ansonsten liefert die Funktion den Wert „Normal“.

Eine einfache Implementierung dieser Funktion könnte wie in Bild 4 dargestellt aussehen. Über die Varianten-Konfiguration (#define TRUCK) wird der Pegelstand eines Zusatztanks ggf. in die Berechnung mit einbezogen.

Analyse der Software-Hierarchie

Die Menge der zu testenden Software-Varianten ergibt sich automatisch aus allen möglichen Konfigurationen einer Software. Für den Test ist dabei zu berücksichtigen, ob eine Variante (beispielsweise die Basis-Konfiguration) tatsächlich getestet werden kann: Ob es sich also um eine ausführbare Software handelt oder nur um eine Basis-Konfiguration, die alleine für sich noch keine funktionale Einheit bildet. Für solche abstrakten Varianten können unter Umständen auch schon abstrakte Tests definiert werden. Allerdings entstehen erst durch die weitere Implementierung solcher Tests für eine bestimmte funktionale Variante tatsächlich ausführbare Tests.

Auf der anderen Seite dient die Definition einer Varianten-Hierarchie vor allem der besseren Übersichtlichkeit bei sehr verschachtelten Software-Varianten. In der vorgestellten Methode werden die Varianten in einem Variantenbaum angelegt, der durchaus mehrstufig sein kann und die Variantenstruktur der Software abbildet. Dieser Baum dient der Orientierung, welche Tests auf welchem Varianten-Level erstellt werden sollen.

Das Beispiel in Bild 5 zeigt eine Variantenhierarchie verschiedener Fahrzeuge, wobei es für LKW die Varianten mit fest verbundenem oder optional zuschaltbarem Zusatztank gibt. Die Variante „Truck“ könnte in diesem Fall eine abstrakte Konfiguration oder auch eine konkrete Ausprägung eines Fahrzeugs sein.

Definition von Varianten-Tests

Tests können in zwei unterschiedliche Arten unterteilt werden:

  • Basistests
  • Variantentests

Die Basistests beziehen sich auf abstrakte Funktionalitäten, also beispielsweise auf die Grundkonfiguration eines Software-Moduls. Auf dieser Ebene können bereits alle potentiellen Testfälle der aus diesem Basismodul abgeleiteten Varianten definiert werden. Auch erste Testdaten können für Basistests bereits festgelegt werden, sie müssen aber nicht vollständig sein (weil man sie sowieso noch nicht ausführen möchte). Auf der obersten Ebene eines Variantenbaums lassen sich die möglichen Testfälle beispielsweise mit Hilfe eines Klassifikationsbaums definieren. Die untenstehende Testspezifikation berücksichtigt alle möglichen Variantenkonfigurationen unseres Beispiels.

Die Testspezifikation beschreibt die notwendigen Tests, die nun im Variantenbaum weitervererbt werden: Die geerbten Tests können in jeder Variante geändert, ausgeblendet oder mit spezifischen Tests ergänzt werden. In Bild 7 sind beispielsweise alle Tests ausgeblendet, die sich nicht auf die Variante „PKW“ beziehen. Jeder übergeordnete Variantentest muss somit nur einmalig angelegt werden und bei einer neuen Anforderung und Änderung der Applikation nur an einer Stelle gepflegt werden.

Regeln zur Vererbung von Testfällen

In unserem Beispiel wurden auf oberster Ebene sämtliche möglichen Testfälle definiert. Für manche Varianten (beispielweise „PKW“) sind aber nur einige dieser Testfälle sinnvoll: Die übrigen Testfälle müssen für diese Variante ausgeblendet werden. Zusätzlich könnte es sinnvoll sein, weitere Tests auf der Ebene einer untergeordneten Variante hinzuzufügen. Folgende Operationen sind daher für die Vererbung von Testfällen notwendig:

  • Ändern von geerbten Testdaten
  • Löschen bzw. Ausblenden von geerbten Testfällen
  • Hinzufügen zusätzlicher Testfälle

Auf der Ebene der Testdaten muss ebenfalls unterschieden werden, ob ein Wert geerbt oder nur lokal definiert wurde. Bei der Synchronisation der Varianten werden alle geerbten Werte aktualisiert. Für den Wert einer Variablen in einem Variantentest ergeben sich damit folgende Zustände:

  • Wert wurde geerbt
  • Wert wurde geerbt und überschrieben
  • Wert wurde lokal für diesen Variantentest definiert

Über eine Farbcodierung lassen sich diese Werte wie in Bild 8 gezeigt leicht unterscheiden: Die hellblauen Werte wurden geerbt, der lilafarbene Wert wurde in der Variante „Truck“ überschrieben.

Bei den Basistests wurden die meisten Werte bereits in der Testfallspezifikation im Klassifikationsbaum zugeordnet, daher erscheinen sie grau unterlegt. In Testfall 2.1 wurde für die Basistests bereits ein Wert von „40“ eingetragen, der für einen angenommenen 80 Liter Tank einen normalen Füllstand ergibt. Dieser Wert muss in der Variante „Truck“ deutlich erhöht werden, wenn man von einem 1000 Liter Tank ausgeht. Daher wurde der Wert von „level“ in der Variante mit „500“ überschrieben.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45622805 / Test & Qualität)