Model checking, testing and verification working together
- 1 August 2005
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in Formal Aspects of Computing
- Vol. 17 (2) , 201-221
- https://doi.org/10.1007/s00165-005-0059-8
Abstract
We present a symbolic model checking approach that allows verifying a unit of code, e.g., a single procedure or a collection of procedures that interact with each other. We allow temporal specifications that assert over both theprogram countersand theprogram variables. We decompose the verification into two parts: (1) a search that is based on the temporal behavior of theprogram counters, and (2) the formulation and refutation of a path condition, which inherits conditions constraining theprogram variablesfrom the temporal specification. This verification approach is modular, as we do not require that all the involved procedures are provided. Furthermore, we do not request that the code is based on a finite domain. The presented approach can also be used for automating the generation of test cases for unit testing.Keywords
This publication has 13 references indexed in Scilit:
- Extended static checking for JavaPublished by Association for Computing Machinery (ACM) ,2002
- Verification by Augmented Abstraction: The Automata–Theoretic ViewJournal of Computer and System Sciences, 2001
- Model-checking concurrent systems with unbounded integer variablesACM Transactions on Programming Languages and Systems, 1999
- Functional design and implementation of graphical user interfaces for theorem proversJournal of Functional Programming, 1999
- Subtypes for specifications: predicate subtyping in PVSIEEE Transactions on Software Engineering, 1998
- Going beyond integer programming with the Omega test to eliminate false data dependencesIEEE Transactions on Parallel and Distributed Systems, 1995
- Completing the temporal pictureTheoretical Computer Science, 1991
- Assignment and Procedure Call Proof RulesACM Transactions on Programming Languages and Systems, 1980
- Symbolic execution and program testingCommunications of the ACM, 1976
- Guarded commands, nondeterminacy and formal derivation of programsCommunications of the ACM, 1975