skip to main content
10.1145/1390630.1390634acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Proofs from tests

Published: 20 July 2008 Publication History

Abstract

We present an algorithm DASH to check if a program P satisfies a safety property phi. The unique feature of the algorithm is that it uses only test generation operations, and it refines and maintains a sound program abstraction as a consequence of failed test generation operations. Thus, each iteration of the algorithm is inexpensive, and can be implemented without any global may-alias information. In particular, we introduce a new refinement operator WP_alpha that uses only the alias information obtained by executing a test to refine abstractions in a sound manner. We present a full exposition of the Dash algorithm, its theoretical properties, and its implementation.

References

[1]
http://research.microsoft.com/fsharp/fsharp.aspx.
[2]
T. Ball, R. Majumdar, T. Millstein, and S. K. Rajamani. Automatic predicate abstraction of C programs. In PLDI '01: Programming Language Design and Implementation, pages 203--213. ACM Press, 2001.
[3]
T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In SPIN '01: SPIN workshop on Model checking of Software, pages 103--122. Springer-Verlag New York, Inc., 2001.
[4]
M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. "Boogie: A modular reusable verifier for object-oriented programs". In FMCO '05: Formal Methods for Components and Objects, LNCS 4111, pages 364--387. Springer--Verlag.
[5]
N. E. Beckman, A. V. Nori, S. K. Rajamani, and R. J. Simmons. Proofs from tests. Technical Report MSR-TR-2008-17, http://research.microsoft.com, Microsoft Research, 2008.
[6]
E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In CAV '00: Computer Aided Verification, pages 154--169. Springer-Verlag, 2000.
[7]
B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In PLDI '06: Programming Language Design and Implementation, pages 415--426. ACM, 2006.
[8]
L. de Moura and N. Bjorner. Z3: An efficient smt solver. In TACAS '08: Tools and Algorithms for the Construction and Analysis of Systems, 2008.
[9]
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Technical Report Research Report 159, Compaq Systems Research Center, December 1998.
[10]
E. W. Dijkstra. The humble programmer. Commun. ACM, 15(10):859--866, 1972.
[11]
E. W. Dijkstra. A Discipline of Programming. Prentice Hall, 1997.
[12]
P. Godefroid. Compositional dynamic test generation. In POPL '07: Principles of Programming Languages, pages 47--54. ACM Press, 2007.
[13]
P. Godefroid and N. Klarlund. Software model checking: Searching for computations in the abstract or the concrete. In IFM '05: Integrated Formal Methods, pages 20--32, 2005.
[14]
P. Godefroid, N. Klarlund, and K. Sen. dart: Directed automated random testing. In PLDI '05: Programming Language Design and Implementation, pages 213--223. ACM Press, 2005.
[15]
B. S. Gulavani, T. A. Henzinger, Y. Kannan, A. V. Nori, and S. K. Rajamani. synergy: A new algorithm for property checking. In FSE '06: Foundations of Software Engineering, pages 117--127. ACM Press, 2006.
[16]
E. Gunter and D. Peled. Model checking, testing and verification working together. Form. Asp. Comput., 17(2):201--221, 2005.
[17]
T. A. Henzinger, R. Jhala, R. Majumdar, and K. L. McMillan. Abstractions from proofs. In POPL '04: Principles of Programming Languages, pages 232--244. ACM Press, 2004.
[18]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL '02: Principles of Programming Languages, pages 58--70. ACM Press, 2002.
[19]
D. Kroening, A. Groce, and E. M. Clarke. Counterexample guided abstraction refinement via program execution. In ICFEM '04: International Conference on Formal Engineering Methods, Lecture Notes in Computer Science, pages 224--238, 2004.
[20]
R. Majumdar and K. Sen. Latest : Lazy dynamic test input generation. Technical Report UCB/EECS-2007-36, EECS Department, University of California, Berkeley, March 2007.
[21]
K. S. Namjoshi and R. P. Kurshan. Syntactic program transformations for automatic abstraction. In CAV '00: Computer Aided Verification, pages 435--449. Springer-Verlag, 2000.
[22]
G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC '02: International Conference on Compiler Construction, pages 213--228. Springer-Verlag, 2002.
[23]
S. Qadeer and D. Wu. KISS: Keep it simple and sequential. In PLDI '04: Programming Language Design and Implementation, pages 14--24. ACM, 2004.
[24]
K. Sen, D. Marinov, and G. Agha. cute: A concolic unit testing engine for C. In FSE '05: Foundations of Software Engineering, pages 263--272. ACM Press, 2005.
[25]
T.Ball. Personal communication.
[26]
G. Yorsh, T. Ball, and M. Sagiv. Testing, abstraction, theorem proving: better together! In ISSTA '06: International Symposium on Software Testing and Analysis, pages 145--156. ACM Press, 2006.

Cited By

View all

Recommendations

Reviews

Ramesh S

Based in the area of software verification that uses model-checking methods, this paper builds on the recent verification methods that employ the technique of counterexample guided abstraction refinement (CEGAR) for proving a program's correctness. In order to check whether a program satisfies a safety property, CEGAR-based techniques build a series of finite-state abstractions of the program until one of the following is found: a counterexample that demonstrates that the property is violated, or a finite-state abstraction of the program, which is an over approximation of the program satisfying the property. CEGAR-based verification methods differ from one another based on the kind of abstractions employed and the particular methods used for refinement. This paper proposes an algorithm, called DASH, that is based on an algorithm called Synergy, proposed earlier by the authors. Like Synergy, DASH performs testing and abstraction simultaneously, guiding the test process to select the right abstraction. DASH extends Synergy in three significant respects: it can handle programs with pointers; it can handle programs with procedure calls; and, for proving the soundness of the abstraction, it makes less theorem-proving calls, a costly step in the CEGAR techniques. The simple idea of template-based refinement reduces the number of theorem-prover calls. Variable aliasing information is important for handling pointers, and accurate computation of this is not always possible. A novel strategy of using the aliasing local to a given test improves the performance and accuracy of the algorithm. The entire algorithm is implemented and evaluated successfully on a number of device driver benchmarks. The paper is very well written, with good illustrations and explanations. It is a must-read for people working with software verification, and will interest people working in program testing too. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ISSTA '08: Proceedings of the 2008 international symposium on Software testing and analysis
July 2008
324 pages
ISBN:9781605580500
DOI:10.1145/1390630
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. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 July 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. abstraction refinemen
  2. directed testing
  3. software model checking

Qualifiers

  • Research-article

Conference

ISSTA '08
Sponsor:

Acceptance Rates

Overall Acceptance Rate 58 of 213 submissions, 27%

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)13
  • Downloads (Last 6 weeks)1
Reflects downloads up to 09 Feb 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media