Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1882291.1882332acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Representation dependence testing using program inversion

Published: 07 November 2010 Publication History

Abstract

The definition of a data structure may permit many different concrete representations of the same logical content. A (client) program that accepts such a data structure as input is said to have a representation dependence if its behavior differs for logically equivalent input values. In this paper, we present a methodology and tool for automated testing of clients of a data structure for representation dependence. In the proposed methodology, the developer expresses the logical equivalence by writing a normalization program f that maps each concrete representation to a canonical one. Our solution relies on automatically synthesizing the one-to-many inverse function of f: given an input value x, we can generate multiple test inputs logically equivalent to x by executing the inverse with the canonical value f(x) as input repeatedly. We present an inversion algorithm for restricted classes of normalization programs including programs mapping arrays to arrays in a typical iterative manner. We present a prototype implementation of the algorithm, and demonstrate how our methodology reveals bugs due to representation dependence in open source software such as Open Office and Picasa using the widely used image format TIFF. TIFF is a challenging case study for our approach.

References

[1]
http://mail.python.org/pipermail/image-sig/1999-may/000730.html.
[2]
http://www.asmail.be/msg0055369928.html.
[3]
http://www.zan1011.com/tiff.htm.
[4]
www.gamedev.net/reference/articles/article538.asp.
[5]
Adobe Dev. Assoc.TIFF Revision 6.0, June 1992.
[6]
A. Banerjee and D. Naumann. Ownership confinement ensures representation independence for object-oriented programs. J. ACM, 52:894--960, 2005.
[7]
A. Birka and M. D. Ernst. A practical type system and language for reference immutability. OOPSLA, pages 35--49, 2004.
[8]
C. Boyapati, S. Khurshid, and D. Marinov. Korat: automated testing based on java predicates. In ISSTA, pages 123--133, 2002.
[9]
C. Boyapati, B. Liskov, and L. Shrira. Ownership types for object encapsulation. In POPL, pages 213--223, 2003.
[10]
J. Boyland. Why we should not add readonly to Java (yet). J. of Object Tech., 5(5):5--29, June 2006.
[11]
T. Y. Chen, S. C. Cheung, and S. M. Yiu. Metamorphic testing: a new approach for generating next test cases. Technical report, Hong Kong University of Science and Technology, 1998.
[12]
D. G. Clarke, J. Noble, and J. Potter. Overcoming representation exposure. In Proc. of the Work. on Object-Oriented Tech., pages 149--151, 1999.
[13]
D. G. Clarke, J. Potter, and J. Noble. Ownership types for flexible alias protection. In OOPSLA, pages 48--64, 1998.
[14]
D. Detlefs, G. Nelson, and J. B. Saxe. Simplify: a theorem prover for program checking. J. ACM, 52(3):365--473, 2005.
[15]
E. W. Dijkstra. Program inversion. In Program Construction, volume 69 of LNCS, pages 54--57, 1978.
[16]
B. Dutertre and L. De Moura. The Yices SMT solver. Technical report, SRI, 2006.
[17]
Y. Ge, C. W. Barrett, and C. Tinelli. Solving quantified verification conditions using satisfiability modulo theories. Ann. Math. Artif. Intell., pages 55(1--2):101--122, 2009.
[18]
A. Gotlieb and B. Botella. Automated metamorphic testing. In COMPSAC, page 34, 2003.
[19]
D. Gries and J. L. van de Snepscheut. Inorder traversal of a binary tree and its inversion. Formal Development of Programs and Proofs, pages 37--42, 1990.
[20]
J. Hogg, D. Lea, A. Wills, D. deChampeaux, and R. Holt. The Geneva convention on the treatment of object aliasing. OOPS Mess., 3(2):11--16, 1992.
[21]
http://www.libtiff.org.
[22]
P. M. Maurer. Generating test data with enhanced context-free grammars. IEEE Soft., 7(4):50--55, 1990.
[23]
C. Murphy, K. Shen, and G. Kaiser. Automatic system testing of programs without test oracles. In ISSTA, pages 189--200, 2009.
[24]
B. J. Ross. Running programs backwards: The logical inversion of imperative computation. Formal Asp. Comput., 9(3):331--348, 1997.
[25]
B. Schoenmakers. Inorder traversal of a binary heap and its inversion in optimal time and space. In MPC, volume 669 of LNCS, pages 291--301, 1992.
[26]
M. Sutton, A. Greene, and P. Amini. Fuzzing: Brute force vulnerability testing. Addison-Wesley, 2007.
[27]
M. Trauth. MATLAB Recipes For Earth Sciences. Springer, 2006.

Cited By

View all
  • (2021)The Art, Science, and Engineering of Fuzzing: A SurveyIEEE Transactions on Software Engineering10.1109/TSE.2019.294656347:11(2312-2331)Online publication date: 1-Nov-2021
  • (2020)Harnessing Static Analysis to Help Learn Pseudo-Inverses of String Manipulating Procedures for Automatic Test GenerationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-39322-9_9(180-201)Online publication date: 16-Jan-2020
  • (2017)Automatic program inversion using symbolic transducersACM SIGPLAN Notices10.1145/3140587.306234552:6(376-389)Online publication date: 14-Jun-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
FSE '10: Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
November 2010
302 pages
ISBN:9781605587912
DOI:10.1145/1882291
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: 07 November 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. data structures
  2. program inversion
  3. testing

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'10
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)0
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)The Art, Science, and Engineering of Fuzzing: A SurveyIEEE Transactions on Software Engineering10.1109/TSE.2019.294656347:11(2312-2331)Online publication date: 1-Nov-2021
  • (2020)Harnessing Static Analysis to Help Learn Pseudo-Inverses of String Manipulating Procedures for Automatic Test GenerationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-39322-9_9(180-201)Online publication date: 16-Jan-2020
  • (2017)Automatic program inversion using symbolic transducersACM SIGPLAN Notices10.1145/3140587.306234552:6(376-389)Online publication date: 14-Jun-2017
  • (2017)Automatic program inversion using symbolic transducersProceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3062341.3062345(376-389)Online publication date: 14-Jun-2017
  • (2015)Programming with enumerable sets of structuresACM SIGPLAN Notices10.1145/2858965.281432350:10(37-56)Online publication date: 23-Oct-2015
  • (2015)Programming with enumerable sets of structuresProceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications10.1145/2814270.2814323(37-56)Online publication date: 23-Oct-2015
  • (2011)Path-based inductive synthesis for program inversionProceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/1993498.1993557(492-503)Online publication date: 4-Jun-2011
  • (2011)Path-based inductive synthesis for program inversionACM SIGPLAN Notices10.1145/1993316.199355746:6(492-503)Online publication date: 4-Jun-2011

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media