cnc-final - Check n Crash: Combining Static Checking and...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Check n Crash: Combining Static Checking and Testing Christoph Csallner, Yannis Smaragdakis College of Computing Georgia Institute of Technology Atlanta, GA 30332, USA { csallner,yannis } @cc.gatech.edu ABSTRACT We present an automatic error-detection approach that com- bines static checking and concrete test-case generation. Our approach consists of taking the abstract error conditions in- ferred using theorem proving techniques by a static checker (ESC/Java), deriving specific error conditions using a con- straint solver, and producing concrete test cases (with the JCrasher tool) that are executed to determine whether an error truly exists. The combined technique has advantages over both static checking and automatic testing individu- ally. Compared to ESC/Java, we eliminate spurious warn- ings and improve the ease-of-comprehension of error reports through the production of Java counterexamples. Compared to JCrasher, we eliminate the blind search of the input space, thus reducing the testing time and increasing the test qual- ity. Categories and Subject Descriptors D.2.4 [ Software Engineering ]: Software/Program Verifi- cation formal methods, reliability ; D.2.5 [ Software En- gineering ]: Testing and Debugging testing tools ; H.5.2 [ Information Interfaces and Presentation ]: User In- terfaces ergonomics, user-centered design ; I.2.2 [ Artificial Intelligence ]: Automatic Programming program verifica- tion General Terms Human Factors, Reliability, Verification Keywords Automatic testing, dynamic analysis, extended static check- ing, static analysis, test case generation, usability 1. INTRODUCTION The need to combine exhaustive and precise error check- ing approachesi.e., static analysis and testinghas often Permission to make digital or hard copies of all or part 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. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. ICSE05, May 1521, 2005, St. Louis, Missouri, USA. Copyright 2005 ACM 1-58113-963-2/05/0002 ... $ 5.00. been stated in the software engineering community. Test- ing remains the predominant way of discovering errors in real software. Nevertheless, approaches that utilize program analysis and formal reasoning [14, 19, 9, 10, 25, 27, 2, 4, 13] are gaining ground and may soon see widespread adoption. In this paper, we present the combination of a seman- tic checking approach and testing. Specifically, we employ the ESC/Java [9] static checking system that analyzes a program, reasons abstractly about unknown variables, and tries to detect erroneous program operations. By default, ESC/Java checks for violations of implicit preconditions of primitive Java operations, such as accessing an array out- of-bounds, dereferencing null pointers, dividing by zero, etc.of-bounds, dereferencing null pointers, dividing by zero, etc....
View Full Document

Page1 / 10

cnc-final - Check n Crash: Combining Static Checking and...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online