Research

Jazz

(Under the advisement of Dr. Bruce Childers and Dr. Mary Lou Soffa)

My research involved dynamic software testing through the use of fast breakpoints. Applications include structural testing such as branch, node, and def-use coverage. More information can be found in my thesis Efficient Branch and Node Testing.

Publications

Jazz2: A Flexible and Extensible Framework for Structural Testing in a Java VM
Jonathan Misurda, Bruce R. Childers and Mary Lou Soffa
9th International Conference on the Principles and Practice of Programming in Java (PPPJ), Copenhagen, Denmark , August 2011

Abstract

This paper describes a framework for structural testing in a Java Virtual Machine (JVM), called Jazz2. The framework provides instrumentation, memory management, control flow analysis, and callback handling services for structural tests, such as branch and node coverage. Additionally, it has a language for the specification of how and where to test. These facilities allow for the efficient implementation of demand-driven and static testing techniques. Jazz2 supports an extensible test library, where new tests can be easily added. The paper describes the framework, its implementation, and evaluates how the framework interacts with a JVM, the Jikes Research Virtual Machine (RVM). We demonstrate the ease of implementing a structural test in Jazz2, extending the test library, and specifying the use of these tests with our language. Our experimental results show that Jazz2 has low overhead in both time and memory, and has minimal interaction with the RVM's garbage collector.

The paper is available online.

Demand-driven structural testing with dynamic instrumentation
Jonathan Misurda, James Clause, Juliya L. Reed, Bruce R. Childers, Mary Lou Soffa
ACM SIGSOFT Int'l. Conference on Software Engineering (ICSE'05), May 2005

Abstract

Producing reliable and robust software has become one of the most important software development concerns in recent years. Testing is a process by which software quality can be assured through the collection of information about software. While testing can improve software reliability, current tools typically are inflexible and have high overheads, making it challenging to test large software projects. In this paper, we describe a new scalable and flexible framework for testing programs with a novel demand-driven approach based on execution paths to implement testing coverage. This technique uses dynamic instrumentation on the binary code that can be inserted and removed on-the-fly to keep performance and memory overheads low. We describe and evaluate implementations of the framework for branch, node and def-use testing of Java programs. Experimental results for branch testing show that our approach has, on average, a 1.6 speed up over static instrumentation and also uses less memory.

The paper is available online.

 

Instrumentation in Software Dynamic Translators for Self-Managed Systems
Naveen Kumar, Jonathan Misurda, Bruce R. Childers, and Mary Lou Soffa
ACM SIGSOFT Workshop on Self-Managed Systems, during the ACM SIGSOFT 2004 12th Int'l. Symp. on the Foundations of Software Engineering, October 31-November 1, 2004.

Abstract

Self-managed software requires monitoring and code changes to an executing program. One technology that enables such self management is software dynamic translation (SDT), which allows a program's execution to be intercepted and controlled by a separate software layer. SDT has been used to build many useful applications, including software security checkers that check for code vulnerabilities, dynamic code optimizers, and program introspection tools. While these systems use program instrumentation, the instrumentation is usually tailored to a specific application and infrastructure. What is missing is a single scalable and flexible instrumentation framework that can be used in different self-managed SDT infrastructures. In this paper, we describe such a framework, called FIST. that can be used and targeted by different algorithms and tools to enable instrumentation applications that are portable across SDTs and machine platforms. Our interface supports multiple levels of granularity from source level constructs to the instruction and machine level. We describe and evaluate FIST's capabilities in the Strata system for the SPARC and the Jikes Research Virtual Machine for Java on the Intel x86.

The paper is available online.

 

FIST: A framework for instrumentation in software dynamic translators
N. Kumar, J. Misurda, B. Childers, and M. L. Soffa
Department of Computer Science, Technical Report TR-03-106, September 2003.

Abstract

Software dynamic translators (SDT) typically monitor, profile, and affect the execution of a program. Such systems have been used to build many useful applications, including dynamic code optimizers for binary machine code and Java bytecode, software security checkers, binary translators, code profilers and program introspection tools. While all of these systems use program instrumentation, the instrumentation is usually tailored to a specific application and infrastructure. What is missing is a single scalable and flexible instrumentation framework that can be used in different SDT infrastructures. In this paper, we describe such a new framework, called "FIST," that can be used and targeted by different algorithms and tools to enable instrumentation applications that are portable across SDTs and machine platforms. Our interface supports multiple levels of granularity from source level constructs to the instruction and machine level. We demonstrate FIST's flexibility and evaluate it in the Strata SDT system for the SPARC and the Jikes Research Virtual Machine for Java on the Intel x86. To show the framework.s scalability, we describe new instrumentation applications to prototype dynamic optimization techniques and apply software tests to Java programs.

Paper is available online.

 

SoftTest: A framework for software testing of Java programs
B. R. Childers, M. L. Soffa, J. Beaver, L. Ber, K. Cammarata, T. Kane, J. Litman, and J. Misurda
Eclipse Technology Exchange Workshop during the ACM SIGPLAN Conf. on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA'03), Anaheim, California, October 27, 2003.

Abstract

Producing reliable and robust software has become one of the most important software development concerns in recent years. Testing is a process by which software quality can be assured through the collection of information about software. While testing can improve software reliability, current tools typically are inflexible and have high overheads, making it challenging to test large software projects. In this paper, we describe a new scalable and flexible framework, called SoftTest, for testing Java programs with a novel path-based approach to coverage testing. We describe an initial implementation of the framework for branch coverage testing and demonstrate the feasibility of our approach.

Paper is available online.

Miscellaneous Papers

Fragment Cache Management for Dynamic Binary Translators in Embedded Systems with Scratchpad
José Baiocchi, Bruce R. Childers, Jack W. Davidson, Jason Hiser and Jonathan Misurda
International Conference on Compilers, Architecture and Synthesis for Embedded Systems (CASES), Salzburg, Austria , October 2007

Abstract

Dynamic binary translation (DBT) has been used to achieve numerous goals (e.g., better performance) for general-purpose computers. Recently, DBT has also attracted attention for embedded systems. However, a challenge to DBT in this domain is stringent constraints on memory and performance. The translated code buffer used by DBT may occupy too much memory space. This paper proposes novel schemes to manage this buffer with scratchpad memory. We use footprint reduction to minimize the space needed by the translated code, victim compression to reduce the cost of retranslating previously seen code, and fragment pinning to avoid evicting needed code. We comprehensively evaluate our techniques to demonstrate their effectiveness.

Paper is available online.

Cogent

(Under the advisement of Dr. Bruce Childers and Dr. Daniel Mosse)

Links
ACM COPYRIGHT NOTICE.
"Copyright © 1999,2000,2001,2002,2003 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept., ACM, Inc., fax +1 (212) 869-0481, or permissions@acm.org."