To make a statement on software quality, a methodical approach on software testing is absolutely necessary. One common approach is the classification tree method introduced in 1993. All relevant test aspects of a system under test and their characteristics are divided into disjoint subsets. Test cases are then generated by combining specific characteristics of each aspect. Depending on the size (cardinality) and number of different aspects, the number of possible combinations grows exponentially. Therefore tools for applying the classification tree method offer coverage criteria for automated test case generation. Typically current coverage criteria are minimal or complete combination. Additionally, test case generation needs to consider specific dependencies between characteristics of test aspects. Existing approaches do not offer a prioritization of certain test aspects during test case generation. However, prioritization of test aspects is important for a number of different reasons: Test resources may be limited, testing can be expensive, as it may be destructive, or it may be desirable to only use a subset of test cases as an initial test. Current approaches can be divided into deterministic and non-deterministic techniques. The current classification tree editor uses a non-deterministic technique to generate test cases. Resulting test suites vary in size and composition. During test case generation, dependencies and the classification tree itself are stored in different data structures. Therefore, test cases additionally need to be validated against the dependency rules during test case generation. Up to now, no approach supports the automated generation of test sequences from classification trees. Test sequences can however be defined manually by the user. This work presents a new approach for qualifying the classification tree with test aspects of importance (e.g. test costs, test duration, probabilites etc.). These numbers can be used for prioritized test case generation and to optimize test suites and, therefore, to reduce their size. For dependency handling, we use an integrated data structure holding both the classification tree and its dependency rules. The data structure is also used for a new deterministic test case generation, which handles dependencies directly during the process of test case generation. The resulting test suite should be equal or smaller in size while generation should be as fast as or even faster than current generation approaches. Finally, a new approach for automatic test sequence generation from classification trees is presented as well. We identify parameters for test sequence generation and develop new dependency rules and new generation rules. Results are then compared using common algorithms and standard benchmarks.
Um eine Aussage über die Qualität von Software machen zu können, sind methodische Ansätze für den Softwaretest dringend erforderlich. Ein typischer Ansatz ist die 1993 vorgestellte Klassifikationsbaum-Methode. Bei ihr werden alle testrelevanten Aspekte eines Testsystems und seine Eigenschaften in disjunkte Teilmengen zerlegt. Testfälle werden dann aus der Kombination von spezifischen Charakteristika aller Testaspekte gebildet. Je nach Anzahl der Testaspekte und der Menge der enthaltenen Elemente wächst die Anzahl der möglichen Kombination exponentiell. Werkzeuge zur Unterstützung der Klassifikationsbaum-Methode bieten daher Abdeckungskriterien für die automatische Testfallgenerierung an. Typische Abdeckungskriterien sind die Minimalkombination oder die vollständige Kombination. Darüber hinaus werden Abhängigkeiten zwischen Testaspekten berücksichtigt. Priorisierung von Testaspekten während der Testfallgenerierung bietet bislang keiner der bestehenden Ansätze, dabei wäre diese aus einer Reihe von Gründen sehr wichtig: Testressourcen sind in der Regel begrenzt und Testen ist kostenintensiv, insbesondere beim destruktiven Testen. Auch kann es gewünscht sein, nur eine Untermenge aller Testfälle als Eingangstest zu nutzen. Bestehende Ansätze zur Testfallgenerierung lassen sich in zwei Gruppen unterteilen, deterministische und nicht-deterministische Techniken. Der aktuelle Klassifikationsbaum- Editor generiert Testfälle nicht- deterministisch, so dass resultierende Testsuiten aus verschiedenen Durchläufen in Größe und Zusammenstellung variieren. Außerdem werden Klassifikationsbaum und Abhängigkeitsregeln in unterschiedlichen Datenstrukturen gespeichert, so dass Testfälle umständlich auf Gültigkeit gegen die Abhängigkeitsregeln geprüft werden müssen. Keiner der bestehenden Ansätze unterstützt die automatische Generierung von Testsequenzen aus Klassifikationsbäumen. Testsequenzen können bislang nur manuell definiert werden. In dieser Arbeit präsentieren wir einen neuen Ansatz um Klassifikationsbäume mit Gewichten (Testkosten, Testdauer, Wahrscheinlichkeiten, usw.) zu qualifizieren. Die Gewichte werden von der priorisierenden Testfallgenerierung genutzt. So kann die resultierende Testsuite optimiert und ihr Umfang reduziert werden. Abhängigkeitsregeln werden zusammen mit dem Klassifikationsbaum in einer Datenstruktur gespeichert. Diese wird auch für die deterministische Testfallgenerierung genutzt, welche die Abhängigkeitsregeln direkt während der Erzeugung von Testfällen berücksichtigt. Im Vergleich zur bisherigen Testfallgenerierung darf die hierbei entstehende Testsuite weder größer sein noch darf ihre Erzeugung länger dauern. Schließlich präsentieren wir einen neuen Ansatz zur automatischen Generierung von Testsequenzen aus Klassifikationsbäumen. Wir identifizieren Parameter für die Generierung und neue Abhängigkeitsregeln. Alle Ergebnisse werden in standardisierten Benchmarks mit anderen Algorithmen verglichen.