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

Multithreaded java program test generation

Published: 01 January 2002 Publication History

Abstract

We describe ConTest, a tool for detecting synchronization faults in multithreaded Java™ programs. The program under test is seeded with a sleep(), yield(), or priority() primitive at shared memory accesses and synchronization events. At run time, ConTest makes random or coverage-based decisions as to whether the seeded primitive is to be executed. Thus, the probability of finding concurrent faults is increased. A replay algorithm facilitates debugging by saving the order of shared memory accesses and synchronization events.

References

[1]
S. K. Damodaran-Kamal and J. M. Francioni, "Nondeterminacy: Testing and Debugging in Message Passing Parallel Programs," Proceedings of the 3rd ACM/ONR Workshop on Parallel and Distributed Debugging, ACM, New York (1993), pp. 118-128.
[2]
S. K. Damodaran-Kamal and J. M. Francioni, "Testing Races in Parallel Programs with an OtOt Strategy," Proceedings of the 1994 International Symposium on Software Testing and Analysis, ACM, New York (1994), pp. 216-227.
[3]
B. Richards and J. R. Larus, "Protocol-Based Data-Race Detection," Proceedings of the 2nd SIGMETRICS Symposium on Parallel and Distributed Tools, ACM, New York (1998), pp. 40-47.
[4]
S. Savage, "Eraser: A Dynamic Race Detector for Multithreaded Programs," ACM Transactions on Computer Systems 15, No. 4, 391-411 (1997).
[5]
E. Itzkovitz, A. Schuster, and O. Zeev-Ben-Mordehai, "Towards Integration of Data-Race Detection in DSM Systems," Journal of Parallel and Distributed Computing 59, No. 2, 180-203 (1999).
[6]
B. Lewis and D. J. Berg, Threads Primer, Prentice Hall, Englewood Cliffs, NJ (1996).
[7]
J.-D. Choi and H. Srinivasan, "Deterministic Replay of Java Multithreaded Applications," Proceedings of the SIGMETRICS Symposium on Parallel and Distributed Tools, ACM, New York (1998).
[8]
J. M. Stone, "Debugging Concurrent Processes: A Case Study," Proceedings of the ACM SIGPLAN Conference on Programming Language and Implementation (PLDI), ACM, New York (1988), pp. 145-153.
[9]
E. Farchi, M. Factor, and Y. Talmor, "Testing for Timing-Dependent and Concurrency Faults," Proceedings of Software Testing Analysis and Review, Software Quality Engineering (1998).
[10]
S. D. Stoller, "Model-Checking Multi-Threaded Distributed Java Programs," Proceedings of the 7th International SPIN Workshop on Model Checking of Software, Springer-Verlag, New York (2000).
[11]
G. J. Holzmann, Design and Validation of Computer Protocols, Prentice Hall, Englewood Cliffs, NJ (1991). See section 11.3.
[12]
L. Lamport, "Time, Clocks, and the Ordering of Events in a Distributed System," Communications of the ACM 21, No. 7, 558-565 (1978).
[13]
N. A. Lynch, Distributed Algorithms, Morgan Kaufmann, San Francisco, CA (1996).
[14]
A. Y. H. Zomaya, K. C. Tai, and R. H. Carver, "Testing of Distributed Programs," Parallel and Distributed Computing Handbook, A. Y. H. Zomaya, Editor, McGraw-Hill, Inc., New York (1996).
[15]
R. N. Taylor, D. L. Levine, and C. D. Kelly, "Structural Testing of Concurrent Programs," IEEE Transactions on Software Engineering 18, No. 3, 206-215 (1992).
[16]
C.-S. Yang, A. Souter, and L. Pollock, "All-du-path Coverage for Parallel Programs," ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'98), ACM, New York (1998), pp. 153-162.
[17]
B. Marick, A Tutorial Introduction to GCT, http://www. testingcraft.com/gct-tutorial.pdf.
[18]
J. Offutt and R. Untch, "Mutation 2000: Uniting the Orthogonal," Proceedings of Mutation 2000: Mutation Testing in the Twentieth and the Twenty First Centuries, IEEE, New York (2000), pp. 45-55.
[19]
D. Lea, Concurrent Programming in Java, Second Edition, Addison-Wesley Publishing Co., Reading, MA (2000).
[20]
R. Konuru, H. Srinivasan, and J.-D. Choi, "Deterministic Replay of Distributed Java Applications," Proceedings of the 14th International Parallel and Distributed Processing Symposium (IPDPS'00) (2000). See http://www.ipdps.org/.
[21]
R. N. Taylor, "A General-Purpose Algorithm for Analyzing Concurrent Programs," Communications of the ACM 26, 362- 376 (May 1983).
[22]
S. Weiss, "A Formal Framework for the Study of Concurrent Program Testing," Proceedings of the 2nd Workshop on Software Testing, Analysis and Verification, IEEE, New York (1988), pp. 106-113.
[23]
S. Morasca and M. Pezze, "Using High Level Petri Nets for Testing Concurrent and Real Time Systems," in Real-Time Systems: Theory and Applications, H. Zedan, Editor, Elsevier Science Publishers, Amsterdam, Holland (1989), pp. 119- 131.

Cited By

View all
  • (2023)Evolutionary Approach for Concurrency Testing of Ripple Blockchain Consensus AlgorithmProceedings of the 45th International Conference on Software Engineering: Software Engineering in Practice10.1109/ICSE-SEIP58684.2023.00009(36-47)Online publication date: 17-May-2023
  • (2021)Concurrent behavioral coverage criteria for sequence diagramsInnovations in Systems and Software Engineering10.1007/s11334-021-00413-719:2(157-176)Online publication date: 25-Nov-2021
  • (2019)Automatic Software RepairIEEE Transactions on Software Engineering10.1109/TSE.2017.275501345:1(34-67)Online publication date: 1-Jan-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image IBM Systems Journal
IBM Systems Journal  Volume 41, Issue 1
January 2002
164 pages

Publisher

IBM Corp.

United States

Publication History

Published: 01 January 2002
Accepted: 23 September 2001

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (2023)Evolutionary Approach for Concurrency Testing of Ripple Blockchain Consensus AlgorithmProceedings of the 45th International Conference on Software Engineering: Software Engineering in Practice10.1109/ICSE-SEIP58684.2023.00009(36-47)Online publication date: 17-May-2023
  • (2021)Concurrent behavioral coverage criteria for sequence diagramsInnovations in Systems and Software Engineering10.1007/s11334-021-00413-719:2(157-176)Online publication date: 25-Nov-2021
  • (2019)Automatic Software RepairIEEE Transactions on Software Engineering10.1109/TSE.2017.275501345:1(34-67)Online publication date: 1-Jan-2019
  • (2018)Is this class thread-safe? inferring documentation using graph-based learningProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238212(41-52)Online publication date: 3-Sep-2018
  • (2017)Promoting secondary orders of event pairs in randomized scheduling using a randomized strideProceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering10.5555/3155562.3155655(741-752)Online publication date: 30-Oct-2017
  • (2017)Node.fzProceedings of the Twelfth European Conference on Computer Systems10.1145/3064176.3064188(145-160)Online publication date: 23-Apr-2017
  • (2017)Efficient detection of thread safety violations via coverage-guided generation of concurrent testsProceedings of the 39th International Conference on Software Engineering10.1109/ICSE.2017.32(266-277)Online publication date: 20-May-2017
  • (2016)Generating test cases to expose concurrency bugs in Android applicationsProceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering10.1145/2970276.2970320(648-653)Online publication date: 25-Aug-2016
  • (2016)Concurrency Testing Using Controlled SchedulersACM Transactions on Parallel Computing10.1145/28586512:4(1-37)Online publication date: 9-Feb-2016
  • (2016)A Lightweight System for Detecting and Tolerating Concurrency BugsIEEE Transactions on Software Engineering10.1109/TSE.2016.253166642:10(899-917)Online publication date: 1-Oct-2016
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media