Blog

Testen von Werte-Kombinationen

29 May, 2013
Xebia Background Header Wave

Hatten sie auch schon das Problem des Testens von vielen Kombinationen von Parametern bzw. Variablen?

Hatten Sie auch schon Fehlerfälle, welche durch die Kombination von verschiedenen Datenwerten oder Komponenten erzeugt wurden?

Wenn sie eine dieser Fragen mit Ja beantworten können, kann Ihnen dieser Blog Eintrag ev. für die Zukunft etwas Hilfe verschaffen.

Paarweises Testen

Eine Möglichkeit dieses Problem anzugehen ist paarweises Testen. Aus Erfahrung weiss man, dass solche Fehler meist durch die Kombination von genau zwei Parametern ausgelöst werden und nicht die Kombination von mehr als zwei Parametern zum Fehler führt.

Daher ist es aus risikomässiger Betrachtung unnötig alle Kombinationen zu testen.

Nehmen wir an Sie haben die Situation dass drei Parameter mit je drei unterschiedlichen Werten getestet werden müssen. Wenn sie alle möglichen Kombinationen testen wollten, müssten Sie 27 Testfälle durchführen. Tabelle 1 zeigt dies anhand eines Beispiels:

Parameter-1 Tabelle 1: Volle Kombinationen

 

Nachteil

Ein Nachteil hiermit ist, dass eigentlich zu viel Zeit in der Testdurchführung investiert wird. Weiter werden aber basierend auf einer einzigen Kombination, welche zu einer Fehlerwirkung führt, drei Testfälle eine solche Wirkung erzeugen. Dies kann wiederum zu Mehraufwand bei der Beurteilung dieser Fehlerwirkung führen. Als Beispiel: Wenn in Tabelle 1 die Kombination Parameter 1 = 2 und Parameter 2 = 3 zu einem Fehler führt, werden die Testfälle 8, 17 und 26 fehlerhaft sein. Auf den ersten Blick ist u.U. nicht sofort ersichtlich, dass dieselbe Ursache zu dieser Fehlerwirkung geführt hat.

Kombiniertes paarweises Testen

Mittels paarweisen testen können nun diese 27 Testfälle auf neun reduziert werden, da es nur neun Kombinationen gibt, welche jeweils zwei Parameter in allen Kombinationen auftreten:

Parameter-2

Tabelle 2: Paarweises Testen

Tool Unterstützung

Da es nicht einfach ist alle Kombinationen „auf die schnelle“ zu finden gibt es verschiedene Möglichkeiten um das zu vereinfachen.

Pairwise Testing by J. Bach

James Bach hat zur Lösung dieses Problems ein Perl Script entwickelt (ALLPAIRS). Er stellt es auf seiner Homepage unter https://www.satisfice.com/tools.shtml zur Verfügung. Die Bedienung ist sehr einfach. Die zum Download bereitgestellte Zip Datei kann in irgendein Verzeichnis entzippt werden und durch einen Command Line Aufruf (allpairs Input.txt > Output.txt) wird aus der Eingangsdatei Input.txt mit den entsprechenden Parametern und Werten eine Ausgangsdatei Output.txt mit den möglichen Kombinationen und einigen Statistiken erzeugt.

Vorteil:       Einfache Handhabung
Nachteil:    Es sind keine Abhängigkeiten zwischen den Variablen definierbar.

Orthogonale Arrays

Orthogonale Arrays wurden vom Schweizer Mathematiker Leonhard Euler Ende des 18. Jahr-hunderts erforscht. In einem orthogonalen Array sind pro zwei Spalten alle möglichen Kombinationen dieser Spalten vertreten (z.B Parameter 1 – Parameter 2, Parameter 2 – Paramater 3, Parameter 1 – Parameter 3):

Parameter-3

Tabelle 3: orthogonales Array
Somit kann es natürlich auch verwendet werden um das Problem zu lösen. Man muss „nur“ ein geeignetes orthogonales Array finden und es auf seine aktuelle Problematik anwenden, d.h. jeweils die Zahlen pro Parameter durch die benötigten Werte des Problems ersetzen. In obigem Beispiel wären das:

  • Parameter 1: 1 = Windows XP; 2 = Windows 7; 3 = Windows 8
  • Parameter 2: 1 = IE9; 2 = chrome; 3 = Firefox
  • Parameter 3: 1= Brother; 2 = Canon; 3 = Lexmark

Folgende Punkte müssen bei der Suche nach einem geeigneten orthogonalen Array beachtet werden:

  • Das Array muss mindestens so viele Spalten wie Parameter besitzen
  • Es müssen weiter mindestens so viele Nummern in den Spalten des orthogonalen Arrays vorhanden sein, wie die entsprechenden Parameter unterschiedliche Werte enthalten
  • Das zu findende Array muss mind. so viele Zeilen besitzen, wie das Produkt der zwei zahlenmässig grössten Anzahl Werte pro Parameter.

Vorteil: Einfache Handhabung
Nachteil: Es sind keine Abhängigkeiten zwischen den Variablen definierbar.

Eine Liste von orthogonalen Arrays kann hier gefunden werden:                    https://www2.research.att.com/~njas/oadir/

PICT von Microsoft

Auch Microsoft hat sich diesem Thema angenommen und bietet das Tool Kommandozeilen Tool PICT zum kostenlosen Download an: https://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd-8c6f76cc014b/pict33.msi

Auch dieses Tool erwartet als Eingangsdatei eine strukturiert aufgebaute Textdatei und erzeugt genauso eine Textdatei mit den Resultaten. Hier ist es allerdings möglich Abhängigkeiten zwischen den Eingangsparameter oder gar Gruppierungen derselben zu definieren. So können z.B. mit Hilfe von IF Einschränkungen gemacht werden (IF [File system] = „Windows9“ THEN [Browser] = „IE9“). Mit Hilfe der logischen Operatoren NOT, AND und OR können diese sogar kombiniert werden. In der mit dem Tool mitgelieferten Hilfedatei ist dies sehr gut dokumentiert. Das Tool kann also auf einfache Art für sehr vielfältige Problematiken im Bereich des paarweisen Testens eingesetzt werden.

Vorteil: Es sind Gruppenbildung und komplexe Abhängigkeiten zwischen den Variablen definierbar.
Nachteil: Eventuell etwas komplexerer Aufbau der Eingangsdatei.

Weitere Tools

Selbstverständlich gibt es noch weitere Tools welche sich dieses Problems annehmen.
Hier können Sie eine Liste von Tools finden:

https://www.pairwise.org/tools.asp

Welche Tools und Vorgehen kennen Sie und haben sich bei Ihnen bereits bewährt?

Wir freuen uns auf Fragen und Anregungen. Für weitere Fragen und Möglichkeiten wenden Sie sich an uns, wir helfen Ihnen gerne bei diesem Thema.

Questions?

Get in touch with us to learn more about the subject and related solutions