Unit Testing for Multi-Threaded Java Programs

  • Tagung:

    Konferenzartikel 

  • Autoren:

    Gábor Szeder 

  • Summary

    Unit testing focuses on testing the smallest units that comprise a software system and allows developers to detect bugs early in the development process. However, unit testing is unsuitable for detecting concurrency bugs in multi-threaded programs. Most concurrency bug detection tools work only with full programs. Hence, they can only be used at a later phase of development, thus postponing the detection of concurrency bugs. This paper presents a unit testing framework for detecting concurrency bugs in multi-threaded Java programs. Concurrency bugs are uncovered by applying model checking techniques to explore all possible execution paths of concurrent unit tests. We have implemented our approach based on the JUnit unit testing framework and the Java PathFinder software model checker. Concurrent unit tests can be integrated seamlessly into existing unit test suites. Our approach does not report false positives.

    DOI: http://dx.doi.org/10.1145/1639622.1639626

  • Jahr:

    2009 

Beteiligte Mitarbeiter (zufällige Reihenfolge)
Titel Vorname Nachname

Bibtex

@inproceedings{,
author={Gábor Szeder},
title={Unit Testing for Multi-Threaded Java Programs},
year=2009,
month=Jul,
booktitle={PADTAD '09: Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging},
publisher={ACM},
howpublished={http://dx.doi.org/10.1145/1639622.1639626},
abstract={Unit testing focuses on testing the smallest units that comprise a software system and allows developers to detect bugs early in the development process. However, unit testing is unsuitable for detecting concurrency bugs in multi-threaded programs. Most concurrency bug detection tools work only with full programs. Hence, they can only be used at a later phase of development, thus postponing the detection of concurrency bugs. This paper presents a unit testing framework for detecting concurrency bugs in multi-threaded Java programs. Concurrency bugs are uncovered by applying model checking techniques to explore all possible execution paths of concurrent unit tests. We have implemented our approach based on the JUnit unit testing framework and the Java PathFinder software model checker. Concurrent unit tests can be integrated seamlessly into existing unit test suites. Our approach does not report false positives.},
pages={27--34},
note={DOI: http://dx.doi.org/10.1145/1639622.1639626},