Constraint-Based Test Input Generation for Java Bytecode

Constraint-Based Test Input Generation for Java Bytecode
复制标题

Java 字节码基于约束的测试输入生成

DOI:
10.1109/issre.2010.26
复制
发表时间:
2010
期刊:
2010 IEEE 21st International Symposium on Software Reliability Engineering
影响因子:
--
通讯作者:
A. Gotlieb
A. Gotlieb
中科院分区:
--
文献类型:
--
作者:
Florence Charreteur;A. Gotlieb

文献摘要

被引文献

相似文献

在本文中,我们引入了一种基于约束的推理方法,以自动为Java字节码程序生成测试输入。我们面向目标的方法旨在构建Java虚拟机(JVM)的输入状态,该状态可以将程序执行驱动到字节码内的给定位置。该方法的一个创新方面是每个字节码的约束模型的定义,该模型允许向后探索字节码程序,并允许在内存形状上求解复杂的约束(例如,p == p.= p.next执行创建环状的循环。 P)引用的数据结构。我们在称为JAUT的原型工具中实现了这种基于约束的方法,该方法可以生成在JVM中编写的程序的输入状态。实验结果表明,JAUT可以生成用于执行其他基于代码的测试输入发电机(例如Jcute,Jtest和PEX)未达到的位置的测试输入。
In this paper, we introduce a constraint-based reasoning approach to automatically generate test input for Java bytecode programs. Our goal-oriented method aims at building an input state of the Java Virtual Machine (JVM) that can drive program execution towards a given location within the bytecode. An innovative aspect of the method is the definition of a constraint model for each bytecode that allows backward exploration of the bytecode program, and permits to solve complex constraints over the memory shape (e.g., p == p.next enforces the creation of a cyclic data structure referenced by p). We implemented this constraint-based approach in a prototype tool called JAUT, that can generate input states for programs written in a subset of JVM including integers and references, dynamic-allocated structures, objects inheritance and polymorphism by virtual method call, conditional and backward jumps. Experimental results show that JAUT can generate test input for executing locations not reached by other state-of-the-art code-based test input generators such as jCUTE, JTEST and Pex.