This Article 
 Bibliographic References 
 Add to: 
Technology for Testing Nondeterministic Client/Server Database Applications
January 2004 (vol. 30 no. 1)
pp. 59-77

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.

[1] C.E. Mcdowell and D.P. Helmold, Debugging Concurrent Programs ACM Computing Surveys, vol. 21, no. 4, Dec. 1989.
[2] K.C. Tai and R.H. Carver, Testing of Distributed Programs Parallel and Distributed Computing Handbook, A.Y. Zomaya, ed., chapter 33, McGraw-Hill, 1996.
[3] A. Dinning, "A Survey of Synchronization Methods for Parallel Computers," Computer, pp. 66-76, July 1989.
[4] A. Silberschatz, P. Baer Galvin, and G. Gagne, Operating System Concepts, sixth ed. John Wiley&Sons, June 2001.
[5] Int'l Organization for Standardization, Information Technology Database Languages-SQL-Part 1: Framework (SQL/Framework), ISO/IEC 9075-1: 1999 and Information Technology Database Languages-SQL-Part 2: Foundation (SQL/Foundation), ISO/IEC 9075-2: 1999,http:/, 1999.
[6] R.A. Elmasri and S.B. Navathe, Fundamentals of Database Systems, third ed. Addison-Wesley, Jan. 2000.
[7] G.-H. Hwang, K.C. Tai, and T.L. Huang, Reachability Testing: An Approach To Testing Concurrent Software Int'l J. Software Eng. and Knowledge Eng., vol. 5, no. 4, pp. 493-510, Dec. 1995.
[8] K.C. Tai, "Reachability Testing of Asynchronous Message-Passing Programs," Proc. IEEE Int'l Workshop Software Eng. for Parallel and Distributed Systems, pp. 50-61, May 1997.
[9] A. Bechini and K.-C. Tai, Timestamps for Programs Using Messages and Shared Variables Proc. Int'l Conf. Distributed Computing Systems, pp. 266-273, May 1998.
[10] Y. Lei and K.-C. Tai, Efficient Reachability Testing of Asynchronous Message-Passing Programs Proc. Eighth IEEE Int'l Conf. Eng. for Complex Computer Systems, pp. 35-44, Dec. 2002.
[11] T.J. LeBlanc and J.M. Mellor-Crummey, Debugging Parallel Programs with Instant Replay IEEE Trans. Computers, vol. 36, no. 4, pp. 471-482, Apr. 1987.
[12] R.A. Davies, R.J.A. Beynon, and B.F. Jones, Automating the Testing of Databases Proc. First Int'l Workshop Automated Program Analysis, Testing and Verification, June 2000.
[13] D. Chays, S. Dan, P.G. Frankl, F.I. Vokolos, and E.J. Weyuker, A Framework for Testing Database Applications Proc. ACM Int'l Symp. Software Testing and Analysis, 2000.
[14] M.J. Carey, D.J. DeWitt, and J.F. Naughton, The 007 Benchmark Proc. 1993 ACM SIGMOD Int'l Conf. Management of Data, pp. 12-21, May 1993.
[15] J. Gray, P. Sundaresan, S. Englert, K. Baclawski, and P.J. Weinberger, Quickly Generating Billion-Record Synthetic Databases SIGMOD Record (ACM Special Interest Group on Management of Data), vol. 23, no. 2, pp. 243-252, June 1994.
[16] D. Slutz, Massive Stochastic Testing of SQL Proc. Conf. Very Large Databases, pp. 618-622, Aug. 1998.
[17] Trans. Processing Performance Council, TPC-Benchmark C, 1998.
[18] H. Chu and J. Dobson, Towards Quality Programming in the Automated Testing of Client/Server Application Proc. Pacific Northwest Software Quality Conf. '98 and Proc. Int'l Conf. Software Quality '98, Oct. 1998.
[19] D. Helmbold and D. Luckham, Debugging ADA Tasking Programs IEEE Software, vol. 2, no. 2, pp. 66-74, 1985.
[20] R.N. Taylor, A General-Purpose Algorithm for Analyzing Concurrent Programs Comm. ACM, vol. 21, no. 7, July 1978.
[21] M. Young and R.N. Taylor, Combining Static Concurrency Analysis with Symbolic Execution IEEE Trans. Software Eng., vol. 14, no. 10, Oct. 1988.
[22] C.E. McDowell, A Practical Algorithm for Static Analysis of Parallel Programs J. Parallel and Distributed Computing, vol. 6, pp. 515-536, 1989.
[23] L. Lamport, Time, Clocks, and the Ordering of Events in a Distributed System Comm. ACM, vol. 21, no. 7, pp. 558-565, July 1978.
[24] M. Gruber, Mastering SQL Sybex, Jan. 2000.
[25] G. Steele, J. Gosling, and G. Bracha, Java(TM) Language Specification, second ed. B. Joy, ed., Addison-Wesley, June 2000.
[26] S. Bjeletich, G. Mable, and D.W. Solomon, Microsoft SQL Server 7.0 Unleashed Sams, first ed., May 1999.
[27] Sun Microsystem, The Source for Java(TM) Technology,http:/, 2002.

Index Terms:
Concurrent programming, reachability testing, client/server, database management system.
Gwan-Hwan Hwang, Sheng-Jen Chang, Huey-Der Chu, "Technology for Testing Nondeterministic Client/Server Database Applications," IEEE Transactions on Software Engineering, vol. 30, no. 1, pp. 59-77, Jan. 2004, doi:10.1109/TSE.2004.1265736
Usage of this product signifies your acceptance of the Terms of Use.