Debugging Parallel Programs with Instant Replay
IEEE Transactions on Computers
Combining Static Concurrency Analysis with Symbolic Execution
IEEE Transactions on Software Engineering
A practical algorithm for static analysis of parallel programs
Journal of Parallel and Distributed Computing
ACM Computing Surveys (CSUR)
SIGMOD '93 Proceedings of the 1993 ACM SIGMOD international conference on Management of data
Quickly generating billion-record synthetic databases
SIGMOD '94 Proceedings of the 1994 ACM SIGMOD international conference on Management of data
A framework for testing database applications
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Mastering SQL
Fundamentals of Database Systems
Fundamentals of Database Systems
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Operating System Concepts
Massive Stochastic Testing of SQL
VLDB '98 Proceedings of the 24rd International Conference on Very Large Data Bases
Reachability Testing of Asynchronous Message-Passing Programs
PDSE '97 Proceedings of the 2nd International Workshop on Software Engineering for Parallel and Distributed Systems
Timestamps for Programs Using Messages and Shared Variables
ICDCS '98 Proceedings of the The 18th International Conference on Distributed Computing Systems
Efficient Reachability Testing of Asynchronous Message-Passing Programs
ICECCS '02 Proceedings of the Eighth International Conference on Engineering of Complex Computer Systems
Correction to Technology for Testing Nondeterministic Client/Server Database Applications'
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Abstract--The execution of a client/server application involving database access requires a sequence of database transaction events (or, T-events), called a transaction sequence (or, T-sequence). A client/server database application may have nondeterministic behavior in that multiple executions thereof with the same input may produce different T-sequences. In this paper, we present a framework for testing all possible T-sequences of a client/server database application. We first show how to define a T-sequence in order to provide sufficient information to detect race conditions between T-events. Second, we design algorithms to change the outcomes of race conditions in order to derive race variants, which are prefixes of other T-sequences. Third, we develop a prefix-based replay technique for race variants derived from T-sequences. We prove that our framework can derive all the possible T-sequences in cases where every execution of the application terminates. A formal proof and an analysis of the proposed framework are given. We describe a prototype implementation of the framework and present experimental results obtained from it.