Beim Softwaretest ist die Gestaltung von Testfällen von grundlegender Bedeutung, um die Zuverlässigkeit und Robustheit von Apps sicherzustellen. Kombinatorische Testentwurfstechniken wie K-Way-Tests und paarweise Tests zielen darauf ab, die Wechselwirkungen zwischen verschiedenen Eingabevariablen zu testen. Es zeigt sich jedoch, dass Herausforderungen und Fallstricke ihre Wirksamkeit bei der Aufdeckung kritischer Fehler beeinträchtigen können.
Dieser kurze Artikel konzentriert sich auf spezifische Probleme, die beim Design kombinatorischer Tests auftreten können, und untersucht die Nuancen, die eine sorgfältige Abwägung erfordern. Lassen Sie uns uns mit Fällen falscher Eingabewerte, der Bedeutung robuster Orakel, der Bedeutung oft übersehener Variablenkombinationen und dem entscheidenden Verständnis der Interaktion von Variablen befassen.
Ein k-Wege-Testsatz umfasst alle möglichen Wertekombinationen für k Variablen. Beispielsweise führt die Anwendung des Allpairs-Algorithmus zu einem 2-Wege-Testsatz, der alle möglichen Kombinationen von Paaren von Variablenwerten umfasst. Folglich bezieht sich ein k-Wege-Fehler auf einen Fehler, der aus der Interaktion von Werten von k Variablen resultiert. Bei der Untersuchung zweier Systeme, SYS1 und SYS2, wurden nach der Produktionsfreigabe Fehler festgestellt. Beide Systeme wurden einem K-Way-Test mit k-Werten von 2, 3, 4 und 5+ unterzogen.
Die Tabelle zeigt die Ergebnisse der K-Way-Tests für die beiden Systeme.
Fehlertyp | SYS1 | SYS2 |
---|---|---|
2-Wege | 30 | 29 |
3-Wege | 4 | 12 |
4-Wege | 7 | 1 |
> 4-Wege | 7 | 3 |
Nicht gefunden | 34 | 43 |
Für jeden K-Wege-Satz wurden sequentielle Kontrollen durchgeführt. Abbildung 2.1 zeigt, dass Fehler, die aus der Interaktion von zwei oder weniger Eingabevariablen resultieren 29 in SYS1
und 30 in SYS2
betrugen. Fehler aus der Interaktion von drei Variablen betrugen 4*(30+4) in SYS2
und 12*(29+12) in SYS1
. Bei Interaktionen mit vier Variablen betrugen die Fehler 7*(30+4+7) in SYS2
und 1*(29+12+1) in SYS1
. Fehler aus Interaktionen mit mehr als vier Variablen betrugen 3*(29+12+1+3) in SYS1
und 7*(30+4+7+7) in SYS2
. Insbesondere wurden 43 Fehler in SYS1 und 34 Fehler in SYS2 nicht gefunden.
In diesem Beispiel gehörten die schwerwiegendsten Fehler zur Kategorie „Nicht gefunden“ . Weitere Untersuchungen ergaben, dass es sich bei den meisten unentdeckten Fehlern um einseitige Fehler handelte, d. h. ein bestimmter Wert einer Variablen führte unabhängig von anderen Variablenwerten zu dem Fehler. Paarweise Tests hätten diese Fehler erkennen sollen, aber aus irgendeinem Grund blieben sie unentdeckt. Bei diesen „Nicht gefunden“ -Fehlern handelt es sich in erster Linie um einseitige Fehler, die unbemerkt blieben, weil bestimmte Eingabewerte entweder nicht oder falsch ausgewählt wurden.
Der Kern des Problems liegt darin, dass alle Fehler, die vor der Anwendung des Allpairs-Algorithmus gemacht wurden, bestehen bleiben. Dies bedeutet, dass Fehler in der Anwendung bestehen bleiben, wenn frühere Testentwurfstechniken falsch angewendet wurden oder Eingabewerte falsch waren, unabhängig von der Verwendung des Allpairs-Algorithmus oder des Orthogonal-Array-Tests.
Betrachten wir als Beispiel ein Anwendungsmodul mit zahlreichen Optionen (etwas, das wie diese Form aussieht) und folglich einer großen Anzahl von Eingabedatenkombinationen.
Nehmen wir an, dass es im Modul 2^12 * 3
mögliche Kombinationen gibt. Hier besteht die Herausforderung nicht darin, falsche Eingabewerte auszuwählen, da alle möglichen Variablenwerte mit dem Allpairs-Algorithmus umfassend getestet werden können. Werden dadurch jedoch alle kritischen Fehler aufgedeckt? Aufgrund von Problemen mit den erwarteten Ergebnissen wahrscheinlich nicht. Nach der Manipulation jeder Kombination von Optionen in einem solchen Softwaremodul müsste man das System einige Zeit lang verwenden, um zu überprüfen, ob die Optionen ordnungsgemäß funktionieren und nach der Anwendung der ausgewählten Optionen nichts anderes kaputt geht. In diesem Fall gibt es keine Garantie dafür, dass kein subtiles, nicht offensichtliches Problem vorliegt, das leicht übersehen werden kann.
Nach jedem Test müssen möglicherweise die Kernfunktionen des Systems gründlich bewertet werden. Der Punkt hier ist, dass schwerwiegende Mängel oft nicht so offensichtlich sind, wie man es gerne hätte, und es praktisch unmöglich wird, alles in den erwarteten Ergebnissen zu berücksichtigen.
Von den 2^12 * 3
Kombinationen (wie wir im obigen Beispiel vorgeschlagen haben) gibt es wahrscheinlich eine Kombination von Moduloptionen, die viel häufiger vorkommt als alle anderen – die Standardeinstellung . Wenn 95 % der Benutzer die Optionen der Standardeinstellungen für dieses Modul niemals ändern, sollte eine gute Abdeckung der fast/nahezu standardmäßigen Optionen vorhanden sein. Das Testen aller Varianten mit einer Abweichung von der Standardkonfiguration in einer Option würde zu einer zweistelligen Anzahl an Tests führen. Würde man alle Kombinationen von Optionen mit einer möglichen Abweichung in zwei Einstellungen vom Standard testen, wären es etwa hundert Testfälle. Das Testen mit diesen Testfällen und Testfällen mit allen Paaren kann zu besseren Ergebnissen führen, als wenn man die Existenz der Standardoption ignoriert. Der Allpairs-Algorithmus zwingt den Tester jedoch dazu, die wahrscheinlichsten und am häufigsten verwendeten Variablenkombinationen zu übersehen.
Der Schlüsselfaktor für den Erfolg oder Misserfolg des paarweisen Testens liegt im Verständnis, wie sich die Kombination von Eingabevariablen auf die Ausgabedaten auswirkt. Die Anwendung paarweiser Tests auf zwei verschiedene getestete Anwendungen kann zu erheblich unterschiedlichen Ergebnissen führen. Einige Anwendungen verwenden weniger Eingabedaten, um Ausgabedaten zu erzeugen, während andere mehr verwenden.
Betrachten Sie als Beispiel das Programm, das drei Eingabevariablen (X, Y, Z) und drei mögliche Ausgabedaten (1, 2, 3) hat. Die Pfeile zeigen an, welche Variablen interagieren sollten, um ein bestimmtes Ergebnis zu erzielen. Um ein Ergebnis von 1 zu erhalten, müssen die Variablen Y und X interagieren; Um ein Ergebnis von 2 zu erhalten, müssen die Variablen Z und X interagieren. Für diese Anwendung wäre die Anwendung paarweiser Tests eine geeignete Wahl, und positive Ergebnisse sind wahrscheinlich. In Fällen, in denen es jedoch Szenarien gibt, in denen Ausgabedaten aus der Interaktion von mehr als zwei Eingabevariablen resultieren, besteht eine hohe Wahrscheinlichkeit, dass paarweise Tests keine Fehler identifizieren können. Die einfache Anwendung paarweiser Tests erhöht das Risiko, kritische Fehler in der getesteten Anwendung zu übersehen.
Als QS-Experte ist es wichtig, diese Nuancen zu verstehen. Obwohl diese Erkenntnisse in manchen Fällen theoretisch sind, unterstreichen sie die Notwendigkeit eines ganzheitlichen Testansatzes, der über die Oberfläche hinausgeht und die Zuverlässigkeit und Robustheit Ihrer Apps gewährleistet. Das Verständnis der Komplexität des kombinatorischen Testdesigns ermöglicht es QA-Experten, die komplizierte Geschäftslogik von Apps effektiv zu testen und ihren Benutzern qualitativ hochwertige Software bereitzustellen.