A Symbolic Java Virtual Machine for Test Case Generation

Quality management is becoming a more and more important part of the software development process. As software testing is currently understood as the core function of the quality managment, developers start using software testing tools to facilitate their work. However most existing tools just manag...

Verfasser: Müller, Roger A.
Lembeck, Christoph
Kuchen, Herbert
FB/Einrichtung:FB 04: Wirtschaftswissenschaftliche Fakultät
Dokumenttypen:Arbeitspapier
Medientypen:Text
Erscheinungsdatum:2004
Publikation in MIAMI:01.08.2004
Datum der letzten Änderung:22.03.2023
Angaben zur Ausgabe:[Electronic ed.]
Schlagwörter:Software Testing; Structural Testing; Symbolic Virtual Machine; Java
Fachgebiet (DDC):004: Datenverarbeitung; Informatik
Lizenz:InC 1.0
Sprache:English
Format:PDF-Dokument
URN:urn:nbn:de:hbz:6-85659523868
Permalink:https://nbn-resolving.de/urn:nbn:de:hbz:6-85659523868
Onlinezugriff:muleku_iasted2004.pdf

Quality management is becoming a more and more important part of the software development process. As software testing is currently understood as the core function of the quality managment, developers start using software testing tools to facilitate their work. However most existing tools just manage given sets of test cases and check them against pre-defined testing criteria. The necessary test case discovery is usually up to user, who has to generate the test cases in an ad-hoc approach with only minimal support from the software. GlassTT, the tool we present in this paper, faces this problem by creating the needed test cases for a given criterion for a Java class file. It uses a symbolic Java virtual machine to generate constraints representing the conditions for the control flow under consideration. The system can employ a parameterizeable test criterion such as data-flow coverage. The constraint solvers embedded in the tool are capable of solving linear and non-linear constraints, which is sufficient for almost all constraints encountered in the execution of Java programs. They are encapsulated in an incremental constraint solver manager, which dynamically chooses an appropriate constraint solver and enables the efficient communication between constraint solvers and symbolical virtual machine.