A Data Flow Approach to Testing Object-Oriented Java-Programs - Oster, Norbert; Dorn, Robert-Daniel (Probabilistic Safety Assessment and Managment, 2004)
In this paper we present an approach to an automated support for generating test cases satisfying data flow criteria for testing object-oriented software. We describe our implementation of the source code instrumentation tool needed therefor. After an overview of the main data flow coverage criteria, we motivate why data flow testing should be done in practice pinpointing at some fault scenarios detectable by data flow coverage and reveal some pitfalls of the latter.
UnivIS-Import:2015-04-16:Pub.2004.tech.IMMD.lsinfs_1.adataf

A Hybrid Genetic Algorithm for School Timetabling - Wilke, Peter; Gröbner, Matthias; Oster, Norbert (AI 2002: Advances in Artificial Intelligence - 15th Australian Joint Conference on Artificial Intelligence, 2002)
Hybrid Genetic Algorithms apply so called hybrid or repair operators or include problem specific knowledge about the problem domain in their mutation and crossover operators. These operators use local search to repair or avoid illegal or unsuitable assignments or just to improve the quality of the solutions already found. Those Hybrid Genetic Algorithms have been successfully applied to different constraint satisfaction and timetabling problems such as the travelling salesman problem, scheduling problems, employee timetabling or high school timetabling. In this paper we describe a Genetic Algorithm for solving the German school timetabling problem. The Genetic Algorithm uses direct representation of the problem and applies an adapted mutation operator as well as several specific repair operators. We redecode the computed improvements to the genotype which establishes a kind of Lamarckian evolution. One of the problems utilising these hybrid operators is how and when to apply them, i.e. how to set the parameters right to achieve the best results. Different approaches have been started to adjust these parameters in an optimal way, but in most cases these adjustments require additional computing time and consequently are quite costly. We tackled this problem by an adaptation mechanism for the repair operators which can be applied without additional computing time. These operators are switched on when the normal Genetic Algorithm does not yield any more improvements. When the Genetic Algorithm then converges again, a reconfiguration step for the operator parameters guides the search out of the local optimum.

AuDoscore: Automatic Grading of Java or Scala Homework - Oster, Norbert; Kamp, Marius; Philippsen, Michael (Proceedings of the Third Workshop "Automatische Bewertung von Programmieraufgaben" (ABP 2017), 2017)
Fully automated test-based grading is crucial to cope with large numbers of student homework code. AuDoscore extends JUnit and keeps the task of creating exercises and corresponding grading tests simple. Students have a set of public smoke tests available. Grading also uses additional secret tests that check the submission more intensely. AuDoscore ensures that submissions cannot call libraries if the lecturer explicitly forbids them. Grading is not susceptible to the problem of consecutive faults by partially replacing student code with cleanroom code provided by a lecturer. AuDoscore can be run as a stand-alone application or integrated into our Exercise Submission Tool (EST). This paper briefly describes how both tools interact, depicts AuDoscore from the point of view of the lecturer, and describes some key technical aspects of its implementation.
Keywords: grading; student code submission; Java; Scala

Automated Generation and Evaluation of Dataflow-Based Test Data for Object-Oriented Software - Oster, Norbert (Quality of Software Architectures and Software Quality: First International Conference on the Quality of Software Architectures, QoSA 2005, and Second International Workshop on Software Quality, SOQUA 2005, 2005)
In this research paper, an approach to fully automating the generation of test data for object-oriented programs fulfilling dataflow-based testing criteria and the subsequent evaluation of its fault-detection capability are presented. The underlying aim of the generation is twofold: to achieve a given dataflow coverage measure and to minimize the effort to reach this goal in terms of the number of test cases required. In order to solve the inherent conflict of this task, hybrid self-adaptive and multi-objective evolutionary algorithms are adopted. Our approach comprises the following steps: a preliminary activity provides support for the automatic instrumentation of source code in order to record the relevant dataflow information. Based on the insight gained hereby, test data sets are continuously enhanced towards the goals mentioned above. After-wards, the generated test set is evaluated by means of mutation testing. Progress achieved so far in our ongoing project will be described in this paper. © Springer-Verlag Berlin Heidelberg 2005.
UnivIS-Import:2015-04-16:Pub.2005.tech.IMMD.lsinfs_1.automa
Keywords: Automated test data generation; Dataflow; Evolutionary algorithms; Mutation testing; Object-oriented software; Testing

Automatic Generation of Optimized Integration Test Data by Genetic Algorithms - Pinte, Florin-Avram; Saglietti, Francesca; Oster, Norbert (Software Engineering 2008 - Workshopband, 2008)
The importance of software in nearly all of today’s engineering disciplines demands for development and validation techniques ensuring high dependability of complex software systems. Component-based software development as the ultimate approach for dealing with complexity shifts the focus of verification from unit to integration tests addressing the correctness of component interactions. As the current state-of-the-art does not include a systematic and tool-supported approach to interface testing, this paper presents a procedure for the automatic generation of integration test data based on genetic algorithms.
UnivIS-Import:2015-04-16:Pub.2008.tech.IMMD.lsinfs_1.automa

Automatic Test Data Generation by Multi-Objective Optimisation - Oster, Norbert; Saglietti, Francesca (Computer Safety, Reliability, and Security, 2006)
This paper presents a technique for automated test data generation applicable to both procedural and object-oriented programs. During the generation, the test cases are optimised such as to maximise structural code coverage by minimising at the same time the number of test cases required. To cope with these two inherently conflicting goals, hybrid self-adaptive and multi-objective evolutionary algorithms are applied. Our approach is based on a preliminary activity that provides support for the automatic instrumentation of source code in order to record the relevant data flow information at runtime. By exclusively utilising the insight gained hereby, test data sets are successively enhanced towards the goals mentioned above. Finally, the efficiency of the test set generated is evaluated in terms of its fault detection capability by means of mutation testing. In addition, the actual coverage percentage achieved is determined by taking into account the results of a static data flow analysis of the system under test. Thanks to the dramatic decrease of effort required for generating and verifying test cases, the technique presented here allows to substantially improve the V&V-phase of complex, safety-relevant software. Preliminary experimental results gained so far are reported in the paper.
UnivIS-Import:2015-04-16:Pub.2006.tech.IMMD.lsinfs_1.automa
Keywords: testing; data flow; evolutionary algorithms; automated test data gen- eration; object-oriented software; mutation testing

Automatische Generierung optimaler datenflussorientierter Testdaten mittels evolutionärer Verfahren - Oster, Norbert (Softwaretechnik-Trends, 2004)
Die Komplexität heutiger Softwaresysteme erfordert leistungsfähige Werkzeuge für das Software Engineering in nahezu jedem Schritt des Lebenszyklus dieser Systeme. Eine der kosten- und zeitaufwendigsten Tätigkeiten ist, insbesondere bei sicherheitskritischen Systemen, das Testen. Der Hauptgrund dafür ist, dass ein Großteil der Aufgaben manuell erledigt werden muss. Testautomatisierung bedeutet heute lediglich die automatisierte Ausführung der Testfälle, nicht jedoch die Ermittlung genau derjenigen Testdaten, die die angestrebte Überdeckung zu erzielen vermögen. Einerseits strebt man bei strukturellen Tests eine ausgiebige Abdeckung aller daten- bzw. kontrollflussrelevanten Entitäten an - was im Allgemeinen zu großen Testdatenmengen führt. Andererseits muss der Tester die Ergebnisse der Testausführung meist manuell überprüfen, so dass aus dieser Sicht kleine Testfallmengen wünschenswert wären. Um diese gegensätzlichen Ziele zu vereinbaren, bietet sich der Einsatz multiobjektiver Evolutionärer Verfahren zur automatischen Generierung optimaler Testfallmengen an - wobei optimal nun heißt, eine höchstmögliche Überdeckung mit einer möglichst kleinen Testdatenmenge zu erzielen. Dazu wurde in einem ersten Schritt ein Instrumentierer umgesetzt, der Java-Source-Code um Aufrufe an ein Logging-System erweitert. Während der Ausführung eines Testfalls werden dadurch diejenigen Daten protokolliert, die für die Rekonstruktion des Datenflusses von Belang sind. Die von einem Testdatensatz erzielte Überdeckung wird dann als eines der beiden Fitnessmaße für das multiobjektive Optimierungsverfahren interpretiert, während die zweite Fitness-Dimension durch die Größe der Testfallmenge repräsentiert wird. Das auf diese Weise entstandene Werkzeug generiert automatisch optimale Testdaten, die wahlweise klassische datenflussorientierte Kriterien bzw. die Verzweigungsüberdeckung erfüllen. Zur Verbesserung der Performanz werden die Testfälle parallel auf mehreren Rechnern ausgeführt.
UnivIS-Import:2015-04-16:Pub.2004.tech.IMMD.lsinfs_1.automa

Automatische Generierung optimaler modellbasierter Regressionstests - Pinte, Florin-Avram; Baier, Gerhard; Saglietti, Francesca; Oster, Norbert (INFORMATIK 2008 - Beherrschbare Systeme dank Informatik (Band 1), 2008)
Mit der immer größeren Verbreitung modellgetriebener Softwareentwicklung kommt dem modellbasierten Test eine immer wichtigere Rolle zu. Dieser Artikel präsentiert einen neuen Ansatz zur Optimierung des Regressionstests mittels automatischer Erkennung wieder verwendbarer Testfälle und automatischer Generierung einer minimalen Anzahl zusätzlich zu überprüfender Abläufe.
UnivIS-Import:2015-04-16:Pub.2008.tech.IMMD.lsinfs_1.automa_3

Automatische Generierung optimaler struktureller Testdaten für objekt-orientierte Software mittels multi-objektiver Metaheuristiken - Oster, Norbert (Friedrich-Alexander-Universität Erlangen-Nürnberg, 2007)
In dieser Arbeit wird ein Verfahren zur automatisierten Testdatengenerierung vorgestellt, das sowohl auf prozedurale als auch auf objekt-orientierte Programme anwendbar ist. Dabei werden während der Generierung die Testfälle derart optimiert, dass mit einer minimalen Anzahl von Testfällen eine maximale strukturelle Code-überdeckung erreicht wird. Zur Verfolgung dieser beiden an sich gegenläufigen Ziele werden selbst-adaptive, multi-objektive Metaheuristiken (darunter insbesondere Evolutionäre Algorithmen) eingesetzt. Der Ansatz basiert auf einer vorausgehenden Phase zur automatischen Instrumentierung des Quellcodes, um relevante Informationen über den Kontroll- und Datenfluss während der Laufzeit aufzuzeichnen. Mittels der dadurch gewonnenen Erkenntnisse werden sukzessiv generierte Testdatenmengen schrittweise solange verbessert, bis die vorgegebenen Testziele erreicht sind. Abschließend wird die Effizienz der generierten Testdaten hinsichtlich ihres Fehlererkennungspotenzials durch Mutationstests ermittelt. Darüber hinaus wird der prozentuale Anteil der tatsächlich erzielten überdeckung mittels statischer Kontroll- und Datenflussanalyse festgestellt. Das hier vorgestellte Verfahren erlaubt damit, den Aufwand zur Verifikation und Validierung komplexer, sicherheitskritischer Software deutlich zu verringer

Automatische, modellbasierte Testdatengenerierung durch Einsatz evolutionärer Verfahren - Oster, Norbert; Schieber, Claudia; Saglietti, Francesca; Pinte, Florin-Avram (Informatik 2007 - Informatik trifft Logistik, 2007)
Modellbasierte Testfallgenerierungsansätze sind inzwischen zwar weit verbreitet, meist jedoch auf die Erzeugung von Testszenarien beschränkt. Im Allgemeinen ist allerdings darüber hinaus ein nicht unerheblicher manueller Aufwand zur Ermittlung zugehöriger Eingabedaten notwendig. Dieser Artikel präsentiert ein Verfahren, das die vollautomatische Generierung vollständiger Testfallinformation aus Zustandsmaschinen ermöglicht und auf evolutionären Algorithmen sowie Modellsimulation basiert. Erste experimentelle Erfahrungen bei der Anwendung dieses Verfahrens werden berichtet.
UnivIS-Import:2015-04-16:Pub.2007.tech.IMMD.lsinfs_1.automa_5
Keywords: modellbasiertes Testen; Testdatengenerierung; evolutionäre Verfahren

Automatische Testdatengenerierung mittels multi-objektiver Optimierung - Oster, Norbert; Saglietti, Francesca (Software Engineering 2007 - Beiträge zu den Workshops, 2007)
UnivIS-Import:2015-04-16:Pub.2007.tech.IMMD.lsinfs_1.automa_8

Computer Safety, Reliability, and Security - Saglietti, Francesca; Oster, Norbert (Springer-Verlag, 2007)
UnivIS-Import:2015-07-08:Pub.2007.tech.IMMD.lsinfs_1.comput

Implementierung eines evolutionären Verfahrens zur Risikoabschätzung - Oster, Norbert (Friedrich-Alexander-Universität Erlangen-Nürnberg, 2001)
Auch wenn man nicht an "Murphy’s Law" glaubt, ein unerwünschtes Ereignis kann jederzeit eintreten, und es ist dabei auch nicht ausgeschlossen, daß es eine ganze Reihe unglücklicher Folgen hat. Das Ziel des Risikomanagements ist es, jederzeit einen Überblick über die aktuelle Risikosituation zu haben, insbesondere wenn Entscheidungen anstehen. Einerseits möchte man wissen, wo potentielle Gefahren liegen und ganz besonders wie groß sie sind, andererseits kann man damit auch abschätzen, wie groß eine Chance ist, die man ergreifen möchte - ohne dabei die damit verbundenen Risiken außer Acht zu lassen. Leider sind Risiken im wahrsten Sinne des Wortes nur "schwer kalkulierbar". Je größer ein Unternehmen ist, desto komplexer sind die Zusammenhänge zwischen den Abteilungen, den Projekten und eben auch den Risiken. Auch von außerhalb drohen Gefahren, die noch schwerer abzuschätzen sind. Man denke da nur an die verschiedenen Lieferketten - zum Jahrtausendwechsel wurde simuliert und hochgerechnet, welcher Schaden allein ein Autohersteller hätte, der meist just-in-time von mehreren Tausend Lieferanten beliefert werden muß, wenn wegen Y2K auch nur ein einziger davon Lieferschwierigkeiten bekommt - es geht um Millionen pro Tag. Da Risiken sehr stark miteinander verzahnt sein können, von nichtlinearen Zusammenhängen zwischen den Faktoren bis hin zu zirkulären Abhängigkeiten, kann man mit einfachen algorithmischen Mitteln nicht mehr abschätzen, wie wahrscheinlich ein Schaden ist und welche Kosten er nach sich zieht. Deshalb bedarf es weitaus mächtigerer Such- und Optimierungsverfahren, die Risiken abschätzen, bewerten und vielleicht sogar ideale Gegenmaßnahmen ermitteln können. Wenn man schon keine genauen Daten erwarten kann, so zumindest eine obere und eine untere Grenze für Risikokennzahlen, oder den wahrscheinlichsten Bereich. Evolutionäre Verfahren, darunter insbesondere Genetische Algorithmen, haben sich in vielen verschiedenen Problemfällen dieser Art bewährt, warum also nicht auch in einem softwaregestützten Risikomanagement-System? Um einen Überblick über die Fähigkeiten und Einsatzmöglichkeiten der evolutionären Verfahren zu geben, werden im Kapitel 1 dieser Arbeit die Grundlagen des Risikomanagements skizziert, sofern sie für die Algorithmen relevant sind. Dazu gehört insbesondere die Repräsentation eines Risikos und die Risikoaggregation. Außerdem wird der Einsatz von Optimierungsalgorithmen motiviert und eine kurze Darstellung der verschiedenen Möglichkeiten gegeben. Im Kapitel 2 wird die Klasse der evolutionären Verfahren detailliert geschildert. Da der Genetische Algorithmus (GA) das mit Abstand am häufigsten erforschte und eingesetzte Verfahren ist, widme ich dieser Methode auch einen Großteil des Kapitels. Dazu gehört auch eine Beschreibung der unterschiedlichen Codierungsmöglichkeiten, mit deren Hilfe man ein Optimierungsproblem überhaupt GA-tauglich machen kann. Danach werden die Details der verschiedenen Operatoren (Selektion, Kreuzung und Mutation) ebenso vorgestellt, wie die meistverwendeten, unterschiedlichen Möglichkeiten diese Operatoren zu implementieren. Das Unterkapitel endet mit einer kurzen Empfehlung für die Parametrisierung der Operatoren. Ebenfalls zur Klasse der evolutionären Verfahren gehören natürlich die Evolutionären Strategien, die im Anschluß kurz skizziert und mit den Genetischen Algorithmen verglichen werden. Da die Parametrisierung der evolutionären Verfahren eines der größten Probleme bei der Implementation ist, insbesondere weil der Erfolg und die Performance der Optimierung entscheidend davon abhängen, werden Ansätze präsentiert, wie diese Parameter automatisch an die sich möglicherweise kontinuierlich ändernden Erfordernisse des Problems angepaßt werden können. Weil das Risikomanagement manchmal mit "ungenauen" Angaben auskommen muß, liegt es nahe, auch die Genetischen Algorithmen so zu implementieren, daß sie auf Risiken arbeiten, die mit Hilfe der "Fuzzy Logic" repräsentiert werden - deshalb wird diesem Thema eigens ein Unterkapitel gewidmet. Die letzten zwei Unterkapitel beschäftigen sich mit Varianten der Genetischen Algorithmen, bei denen nicht nur die optimale Lösung gewünscht wird, sondern auch lokale Optima von Interesse sein könnten, wie zum Beispiel für die Ermittlung von Gegenmaßnahmen (man nennt das multimodale Optimierung) sowie die Optimierung hinsichtlich mehrerer verschiedener Kriterien gleichzeitig (multiobjektive Optimierung), was ebenfalls mehrere Lösungen ergibt, die alle für sich genommen optimal sind. Das Kapitel 3 präsentiert eine relativ neue Heuristik, die wie die evolutionären Verfahren von der Natur abgeschaut ist. Sie eignet sich vorwiegend für diskrete Probleme, darunter insbesondere zur Bestimmung einer optimalen Reihenfolge, kann aber auf nahezu jede Aufgabe übertragen werden, die durch Genetische Algorithmen gelöst werden kann. Sie ist deshalb besonders erwähnenswert, da Versuche damit gezeigt haben, daß diese Methode teilweise schneller Ergebnisse liefern kann, als die evolutionären Verfahren. Damit man auch einen Überblick über andere Suchalgorithmen erhält, gehe ich im Kapitel 4 auf ausgewählte Beispiele ein. Da es sehr viele verschiedenen Such- und Optimierungsverfahren gibt, beschränke ich mich hier auf ein paar der Methoden, die ebenfalls aus der Natur (teilweise auch Physik) stammen. Das Kapitel 5 faßt die verschiedenen Einsatzmöglichkeiten der evolutionären Verfahren (oder allgemein der Such- und Optimierungsalgorithmen) im Rahmen eines Risikomanagement-Systems zusammen. Dazu werde ich auch versuchen, eine Anleitung zur Umsetzung zu geben, sofern mir dies auf diesem Stand des Projektes möglich ist. Schließlich präsentiere ich im Kapitel 6 wie zwei ausgewählte Aufgaben des Risikomanagements mit Hilfe von zwei verschiedenen evolutionären Verfahren umgesetzt werden könnten. Ein Vergleich mit anderen Arbeiten ist leider nicht möglich, da ein solcher Ansatz bisher noch in keiner Literaturquelle gefunden werden konnte.
UnivIS-Import:2016-07-26:Pub.2001.tech.IMMD.IMMD2.implem

Interface Coverage Criteria Supporting Model-Based Integration Testing - Saglietti, Francesca; Oster, Norbert; Pinte, Florin-Avram (Proceedings of the 20th International Conference on Architecture of Computing Systems (ARCS 2007), 2007)
Even assuming exhaustive tests at component level, interaction faults can only be avoided by thorough testing of component interfaces during integration testing. In view of the relevance of the integration testing phase for modern component-based systems, this article presents an extensive set of interface coverage criteria, which are not restricted to mere operation call sequences, but include message-based as well as state-based information. In order to support rational decision-making in identifying the best affordable integration coverage criterion for a given industrial system, a tool was implemented providing conservative estimates of the testing effort expected to be required by a given state-based integration testing strategy considered, supporting in addition the automatic visualisation of the interface entities needed to be covered.
UnivIS-Import:2015-04-16:Pub.2007.tech.IMMD.lsinfs_1.interf

MutantDistiller: Using Symbolic Execution for Automatic Detection of Equivalent Mutants and Generation of Mutant Killing Tests - Baer, Michael; Oster, Norbert; Philippsen, Michael (2020 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW), 2020)
Mutation testing can be used to measure the quality of a given test suite. However, it has two flaws that prevent it from being widely used. First, there are equivalent mutants - mutants that are semantically equivalent to the unmodified version and therefore unkillable. Manually identifying those mutants is time-consuming and error-prone. Second, initially there are often too few test cases. Mutation testing detects missing cases. But for productive use it is too time-consuming to manually write all the required test cases. This paper shows how to use symbolic execution to tackle both problems, i.e., to detect equivalent mutants and exclude them from further analysis, and to automatically generate test cases that kill the remaining mutants. Our evaluation uses a set of 252 publicly available mutants for which it is known that they are hard to classify. Despite the fact that detecting equivalent mutants is an undecidable problem, our fully automatic tool MutantDistiller correctly classifies all of them (13 equivalent, 239 non-equivalent). MutantDistiller also generates test cases that kill the non-equivalent mutants.<br

Practical Flaky Test Prediction using Common Code Evolution and Test History Data - Gruber, Martin; Heine, Michael; Oster, Norbert; Philippsen, Michael; Fraser, Gordon (Proceedings - 2023 IEEE 16th International Conference on Software Testing, Verification and Validation, ICST 2023, 2023)
Non-deterministically behaving test cases cause developers to lose trust in their regression test suites and to eventually ignore failures. Detecting flaky tests is therefore a crucial task in maintaining code quality, as it builds the necessary foundation for any form of systematic response to flakiness, such as test quarantining or automated debugging. Previous research has proposed various methods to detect flakiness, but when trying to deploy these in an industrial context, their reliance on instrumentation, test reruns, or language-specific artifacts was inhibitive. In this paper, we therefore investigate the prediction of flaky tests without such requirements on the underlying programming language, CI, build or test execution framework. Instead, we rely only on the most commonly available artifacts, namely the tests' outcomes and durations, as well as basic information about the code evolution to build predictive models capable of detecting flakiness. Furthermore, our approach does not require additional reruns, since it gathers this data from existing test executions. We trained several established classifiers on the suggested features and evaluated their performance on a large-scale industrial software system, from which we collected a data set of 100 flaky and 100 non-flaky test- and code-histories. The best model was able to achieve an F1-score of 95.5% using only 3 features: the tests' flip rates, the number of changes to source files in the last 54 days, as well as the number of changed files in the most recent pull request.
CRIS-Team Scopus Importer:2023-06-30
Keywords: Flaky test prediction; Industry case study

Practical Flaky Test Prediction using Common Code Evolution and Test History Data [replication package] - Gruber, Martin; Heine, Michael; Oster, Norbert; Philippsen, Michael; Fraser, Gordon (2023)
Non-deterministically behaving test cases cause developers to lose trust in their regression test suites and to eventually ignore failures. Detecting flaky tests is therefore a crucial task in maintaining code quality, as it builds the necessary foundation for any form of systematic response to flakiness, such as test quarantining or automated debugging. Previous research has proposed various methods to detect flakiness, but when trying to deploy these in an industrial context, their reliance on instrumentation, test reruns, or language-specific artifacts was inhibitive. In this paper, we therefore investigate the prediction of flaky tests without such requirements on the underlying programming language, CI, build or test execution framework. Instead, we rely only on the most commonly available artifacts, namely the tests’ outcomes and durations, as well as basic information about the code evolution to build predictive models capable of detecting flakiness. Furthermore, our approach does not require additional reruns, since it gathers this data from existing test executions. We trained several established classifiers on the suggested features and evaluated their performance on a large-scale industrial software system, from which we collected a data set of 100 flaky and 100 non-flaky test- and code-histories. The best model was able to achieve an F1-score of 95.5 % using only 3 features: the tests’ flip rates, the number of changes to source files in the last 54 days, as well as the number of changed files in the most recent pull request.
Keywords: Flaky test prediction; Industry case study

Qualität und Zuverlässigkeit im Software Engineering - Saglietti, Francesca; Oster, Norbert; Söhnlein, Sven (Zeitschrift für wirtschaftlichen Fabrikbetrieb, 2008)
Nach einer einführenden Klassifikation wesentlicher Softwarequalitätsmerkmale und zuverlässigkeitserhöhender Maßnahmen plädiert dieser Beitrag für einen intensiven Einsatz struktureller Testverfahren und bietet hierzu neuartige, vollautomatische Unterstützung an. Insbesondere werden zwei Werkzeuge vorgestellt, die mittels multikriterieller Heuristiken sowohl auf Code- als auch auf Modellebene mit möglichst wenigen, automatisch generierten Testfällen (inklusive zugehöriger Daten) eine möglichst hohe Testobjektüberdeckung zu erzielen erlauben. Dadurch können unterschiedliche Testphasen (Komponententest, Integrationstest, Systemtest) weit über den Stand der Technik hinaus automatisch und kosteneffizient unterstützt werden. Abschließend illustriert der Artikel auch den Einsatz neuerer Verfahren zum quantitativen Nachweis erzielter Zuverlässigkeitskenngrößen und empfiehlt, die Auswertung der mit wiederverwendbarer Software bereits gewonnenen Betriebserfahrung beim statistischen Zuverlässigkeitsnachweis mit zu berücksichtigen.
UnivIS-Import:2015-03-09:Pub.2008.tech.IMMD.lsinfs_1.qualit

Structural Equivalence Partition and Boundary Testing - Oster, Norbert; Philippsen, Michael (Lecture Notes in Informatics (LNI), P-183, 2011)
Structural (manual or automated) testing today often overlooks typical programming faults because of inherent flaws in the simple criteria applied (e.g. branch or all-uses). Dedicated testing strategies that address such faults (e.g. mutation testing) are not specifically designed for smart automatic test case generation. In this paper we present a new coverage criterion and its implementation that accomplishes both: it detects more faults and integrates easily into automated test case generation. The criterion is targeted towards unveiling faults that originate from shifts in the equivalence classes that are caused by small coding errors (inspired by mutation testing). On benchmark codes from the Java-API and from an open-source project we improve the fault detection capability by up to 41% compared to branch and all-use coverage.
UnivIS-Import:2015-04-16:Pub.2011.tech.IMMD.IMMD2.struct
Keywords: Equivalence Partition; Boundary; Testing

Stundenplanerstellung für Schulen mit Evolutionären Verfahren - Oster, Norbert (2001)
Vor Beginn eines jeden neuen Schuljahres verbringen Planer mehrere Wochen damit, neue Stundenpläne für jede Schulklasse zu entwickeln. Der enorme Aufwand an Arbeitskraft und Zeit begründet sich in der Vielfalt und Vielzahl der Rahmenbedingungen und Anforderungen, die für die Erstellung eines „guten“ Stundenplanes berücksichtigt werden müssen. Darunter fallen zum Beispiel die Arbeitszeitanforderungen der Lehrer, die Verfügbarkeit und Kapazität der Räume, die Kompaktheit der Stundenpläne und vieles mehr. Aus der Sicht der Informationsverarbeitung handelt es sich bei dieser Tätigkeit um eine kombinatorische Optimierung. Wegen der Größe des potentiellen Suchraumes, bieten sich besonders Evolutionäre Verfahren an. Bereits vorgenommene Forschungsarbeiten beruhen entweder auf sehr kleine Datenbeispiele, oder berücksichtigen nur einen geringen Teil der Anforderungen. Ziel dieser Arbeit war es, Evolutionäre Verfahren auf ihre Einsetzbarkeit im Bereich der automatischen Stundenplanerstellung für Schulen zu untersuchen. Anhand eines großen, realen Beispiels wurde ein erweitertes Hybrides Evolutionäres Verfahren implementiert. Die Ergebnisse beweisen, daß Genetische Algorithmen, die um lokale Suchverfahren (unter Einbeziehung problemspezifischen Wissens) ergänzt wurden, durchaus in der Lage sind, gute Schulstundenpläne zu entwickeln. Dennoch gibt es bis heute keine allgemeingültige Lösung, die ein manuelles Eingreifen des Planers nach der automatischen „Vorarbeit“ überflüssig machen würde.

Techniques and Tools for the Automatic Generation of Optimal Test Data at Code, Model and Interface Level - Pinte, Florin-Avram; Oster, Norbert; Saglietti, Francesca (Companion of the 30th international conference on Software engineering (ICSE Companion '08), 2008)
This article presents two different tools automating the generation of optimized test data for unit, model-based and integration testing by maximizing the coverage and minimizing the number of test cases required. To cope with these conflicting goals, hybrid self-adaptive and multi-objective evolutionary algorithms were applied. The efficiency was demonstrated by evaluating fault detection capability by mutation testing. Thanks to the effort reduction offered, the approach is particularly suitable for the verification of complex, safety-relevant software systems.
UnivIS-Import:2015-04-16:Pub.2008.tech.IMMD.lsinfs_1.techni
Keywords: Genetic Algorithms; Optimal Test Data Generation

White and Grey-Box Verification and Validation Approaches for Safety- and Security-Critical Software Systems - Saglietti, Francesca; Oster, Norbert; Pinte, Florin-Avram (Information Security Technical Report, 2008)
In this article, the problem of assessing software trustworthiness is considered from a holistic perspective addressing both safety- and security-critical application domains. In particular, the importance of achieving high structural coverage during component and integration testing phases is stressed. In view of the immense effort required by manual testing activities, the present article suggests novel automatic test case generation techniques, capable of maximizing test coverage and minimizing test amount. The tools developed on the basis of these approaches were successfully applied to achieve high control flow, data flow and interface coverage by means of a low number of test cases.
UnivIS-Import:2015-03-09:Pub.2008.tech.IMMD.lsinfs_1.whitea
Keywords: Verification; Validation; Software testing; Coverage; Control flow; Data flow; Integration; Interface; Automatic test data generation