Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

SELECT—a formal system for testing and debugging programs by symbolic execution

Published: 01 April 1975 Publication History
  • Get Citation Alerts
  • Abstract

    SELECT is an experimental system for assisting in the formal systematic debugging of programs. It is intended to be a compromise between an automated program proving system and the current ad hoc debugging practice, and is similar to a system being developed by King et al. of IBM. SELECT systematically handles the paths of programs written in a LISP subset that includes arrays. For each execution path SELECT returns simplified conditions on input variables that cause the path to be executed, and simplified symbolic values for program variables at the path output. For conditions which form a system of linear equalities and inequalities SELECT will return input variable values that can serve as sample test data. The user can insert constraint conditions, at any point in the program including the output, in the form of symbolically executable assertions. These conditions can induce the system to select test data in user-specified regions. SELECT can also determine if the path is correct with respect to an output assertion. We present four examples demonstrating the various modes of system operation and their effectiveness in finding bugs. In some examples, SELECT was successful in automatically finding useful test data. In others, user interaction was required in the form of output assertions. SELECT appears to be a useful tool for rapidly revealing program errors, but for the future there is a need to expand its expressive and deductive power.

    References

    [1]
    J. F. Benders, "Partitioning Procedures for Solving Mixed-Variables Programming Problems," Numerische Mathematik 4, pp. 238-252 (1962).
    [2]
    J. R. Brown, A. J. deSalvio, D. E. Heine, and J. G. Purdy, "Automated Software Quality Assurance," in Program Test Methods (W. C. Hetzel, ed.), Prentice-Hall, Inc., Englewood Cliffs, N. J.; pp. 181-203 (1973).
    [3]
    L. P. Deutsch, "An Interactive Program Verifier," Ph.D. dissertation, University of California, Berkeley, California (June 1973).
    [4]
    B. Elspas, M. W. Green, K. N. Levitt, and R. J. Waldinger, "Research in Interactive Program Proving Techniques," SRI Report 8398-II, Stanford Research Institute, Menlo Park, California (1972).
    [5]
    B. Elspas, K. N. Levitt, and R. J. Waldinger, "An Interactive System for the Verification of Computer Programs," Final Report, SRI Project 1891, Stanford Research Institute, Menlo Park, California (1973).
    [6]
    B. Elspas, "The Semiautomatic Generation of Inductive Assertions for Proving Program Correctness," Interim Report, SRI Project 2686, Stanford Research Institute, Menlo Park, California (July 1974).
    [7]
    R. E. Gomory, "An Algorithm for Integer Solutions to Linear Programs," in Recent Advances in mathematical Programming, R. L. Graves and P. Wolfe (eds .), McGraw-Hill, New York (1963).
    [8]
    W. C. Hetzel, "A Definitional Framework," in Program Test Methods (Hetzel 1973b); pp. 7-10.
    [9]
    W. C. Hetzel, "Principles of Computer Program Testing," in Program Test Methods (Hetzel 1973b); pp. 17-28.
    [10]
    W. C. Hetzel, Program Test Methods, A collection of papers based on the Proceedings of the Computer Program Test Methods Symposium held at the University of North Carolina, Chapel Hill, 1972, and edited by W. C. Hetzel, Prentice-Hall, Inc., Englewood Cliffs, N. J. (1973).
    [11]
    C. A. R. Hoare, "Algorithm 65, FIND," Comm. ACM, Vol. 4, No. 7, p. 321 (1961).
    [12]
    C. A. R. Hoare, "Proof of a Program: FIND," Comm. ACM, Vol. 14, No. 1, p. 39 (1971).
    [13]
    W. Howden, "Methodology for the Automatic Generation of Program Test Data," Technical Report No. 41, Dept. of Information and Computer Science, University of California, Irvine (15 February 1974).
    [14]
    S. Igarashi, R. London, and D. Luckham, "Automatic Verification of Programs I: A Logical Basis and Implementation," Memo AIM-200, Stanford Artificial Intelligence. Lab., Stanford, California (May 1973).
    [15]
    S. M. Katz and Z. Manna, "A Heuristic Approach to Program Verification," Proc. IFCAI-73 (August 1973).
    [16]
    J. C. King, "A Program Verifier," Ph.D. dissertation, Carnegie-Mellon University, Pittsburgh, Pennsylvania (September 1969).
    [17]
    J. C. King, "A New Approach to Program Testing," 1975 International Conference on Reliable Software.
    [18]
    E. F. Miller, Jr., et al., "Structurally Based Automatic Program Testing," paper presented at EASCON ' 74, Washington, D.C., October 7-9, 1974, available from General Research Corporation, Santa Barbara, California, August 12, 1974.
    [19]
    F. F, Miller, Jr., #"Overview and Status-Program Validation Project,"3 Report dated 1 October 1974, General Research Corporation, Santa Barbara, California.
    [20]
    R. Sites, "Clean Termination of Computer Programs," Ph.D. dissertation, Stanford University, Stanford, California (June 1974).
    [21]
    W. Teitelman, D. G. Bobrow, A. K. Hartley, and D. L. Murphy, BBN-LISP, Tenex Reference Manual (Bolt, Beranek, and Newman, Inc., Cambridge, Massachusetts (1972).
    [22]
    B. Wegbreit, "The Synthesis of Loop Predicates," Comm. ACM, Vol. 16, No. 2, pp. 102-112 (February 1974).
    [23]
    J. H. Wensley, "A Class of Non-Analytic Iterative Processes," Computer Journal, Vol. 1, No. 4, pp. 163-167 (1958).

    Cited By

    View all
    • (2024)Rethinking DNS Configuration Verification with a Distributed ArchitectureProceedings of the 8th Asia-Pacific Workshop on Networking10.1145/3663408.3663412(23-30)Online publication date: 3-Aug-2024
    • (2024)A Survey of Software Dynamic Analysis MethodsProgramming and Computing Software10.1134/S036176882401007950:1(90-114)Online publication date: 1-Feb-2024
    • (2023)An Approach of Improving the Efficiency of Software Fault Localization based on Feedback Ranking InformationApplied Sciences10.3390/app13181035113:18(10351)Online publication date: 15-Sep-2023
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 10, Issue 6
    International Conference on Reliable Software
    June 1975
    563 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/390016
    Issue’s Table of Contents
    • cover image ACM Conferences
      Proceedings of the international conference on Reliable software
      April 1975
      567 pages
      ISBN:9781450373852
      DOI:10.1145/800027

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 April 1975
    Published in SIGPLAN Volume 10, Issue 6

    Check for updates

    Author Tags

    1. Program debugging
    2. Program testing
    3. Program verification
    4. Solution of systems of inequalities
    5. Symbolic execution
    6. Test data generation

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)183
    • Downloads (Last 6 weeks)24

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Rethinking DNS Configuration Verification with a Distributed ArchitectureProceedings of the 8th Asia-Pacific Workshop on Networking10.1145/3663408.3663412(23-30)Online publication date: 3-Aug-2024
    • (2024)A Survey of Software Dynamic Analysis MethodsProgramming and Computing Software10.1134/S036176882401007950:1(90-114)Online publication date: 1-Feb-2024
    • (2023)An Approach of Improving the Efficiency of Software Fault Localization based on Feedback Ranking InformationApplied Sciences10.3390/app13181035113:18(10351)Online publication date: 15-Sep-2023
    • (2023)Analyzing a Semantics-Aware Bug Seeding Tool's Efficacy: A qualitative study with the SemSeed toolProceedings of the XXXVII Brazilian Symposium on Software Engineering10.1145/3613372.3613412(246-256)Online publication date: 25-Sep-2023
    • (2023)Learning Program Semantics for Vulnerability Detection via Vulnerability-Specific Inter-procedural SlicingProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616351(1371-1383)Online publication date: 30-Nov-2023
    • (2023)JMLKelinci+: Detecting Semantic Bugs and Covering Branches with Valid Inputs Using Coverage-guided Fuzzing and Runtime Assertion CheckingFormal Aspects of Computing10.1145/360753836:1(1-24)Online publication date: 5-Aug-2023
    • (2023)Symbolic Execution of Hadamard-Toffoli Quantum CircuitsProceedings of the 2023 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation10.1145/3571786.3573018(14-26)Online publication date: 15-Jan-2023
    • (2023)AutoExploit: Automatic Exploit Generation with Security Mitigation2023 8th International Conference on Signal and Image Processing (ICSIP)10.1109/ICSIP57908.2023.10271009(645-649)Online publication date: 8-Jul-2023
    • (2023)Research on the Quality of Automotive Electronic Software Based on Code Checking2023 5th International Conference on Artificial Intelligence and Computer Applications (ICAICA)10.1109/ICAICA58456.2023.10405475(210-214)Online publication date: 28-Nov-2023
    • (2023)Low-Level Reachability Analysis Based on Formal LogicTests and Proofs10.1007/978-3-031-38828-6_2(21-39)Online publication date: 18-Jul-2023
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media