|
About Concutest
Introduction
ConcJUnit
Thread Checker
Schedule-Based Execution
Using Concutest
Download
How to Run
License
Resources
Documentation
FAQ
Publications
Give Feedback
Features, Bugs, Support
Contact Us
Developers
SourceForge Project
Developer Docs
Javadocs
Developer Blog
Mathias Ricken's Homepage
|
|
|
|
A Framework for Testing Concurrent Programs
Incremental, test-driven development is sweeping the software industry, supplanting
more monolithic approaches to software development. Test-driven approaches to
software development like Extreme Programming elevate testing from an ancillary
activity to an integral part of the programming process. Tests for a program
unit are written before the code, driving the design of the program and catching
bugs early in its development. These tests form an integral part of the program
code base, facilitating program reliability, continual integration, and refactoring.
In our recent experience developing production programs in Java, unit testing
has proven effective in assuring the reliability of code with a single thread
of control. Open source testing frameworks like JUnit work well in this context.
Unfortunately, we have found unit testing is much less effective at assuring
the reliabilty of code with multiple threads of control, often simply because
the the testing framework
silently ignores failures in auxiliary threads. Since thread scheduling is non-deterministic,
a unit test can succeed on one run and fail on the next. Moreover, the scheduling
characteristics of the test platform can skew test results, hiding synchronization
bugs until the program is run on a different platform.
Java libraries and user programs furthermore frequently make assumptions about
the threading context in which they execute, but these assumptions are rarely
enforced by the actual code and typically only appear in program documentation
or white papers, if at all.
To make development of concurrent programs easier, we are developing:
- ConcJUnit: An extension of the JUnit framework,
actively supporting the developer by treating tests that could silently ignore
failures in auxiliary threads as test errors;
- Thread Checker: A lightweight annotation language, which
can be used to specify and check the threading invariants of both existing
and new code;
- Schedule-Based Execution: A testing framework that
can execute unit tests according to a specified set of recorded or generated
schedules, elevating the unit testing of concurrent programs to a rigorous,
deterministic process.
There is more information available about the components on their respective
pages:
Supplemental material
- A Framework for Testing Concurrent Programs (PhD Thesis, view embedded):
Mathias
Ricken's PhD thesis, April 19, 2011.
- A Framework for Testing Concurrent Programs (PhD Thesis Defense Presentation, PowerPoint, PDF, view embedded):
Mathias
Ricken's presentation from his PhD thesis defense, January 10, 2011.
- A Framework for Testing Concurrent Programs (PhD Thesis Proposal Presentation, PowerPoint, PDF, view embedded):
Mathias
Ricken's presentation from his PhD thesis proposal, December 2, 2010.
- Testing Concurrent Programs, A 7-Minute Jargon-Free Introduction (Presentation, PowerPoint, view embedded):
Mathias Ricken's presentation to the Thesis Writing Seminar of the School of Engineering at Rice University, February 25, 2010.
- Test-First Java Concurrency for the Classroom (Presentation, PowerPoint, view embedded):
Mathias Ricken's presentation at SIGCSE 2010, March 12, 2010.).
- Test-First Java Concurrency for the Classroom (Paper, PDF, view embedded, assignment):
Paper to be published in the proceedings of the 41st Technical Symposium on Computer Science Education (SIGCSE 2010).
- ConcJUnit: Unit Testing for Concurrent Programs (Presentation, PowerPoint, view embedded):
Mathias Ricken's presentation at the 7th International Conference on the Principles and Practice of Programming in Java (PPPJ 2009), August 24, 2009.
- ConcJUnit: Unit Testing for Concurrent Programs (Presentation, PowerPoint, view embedded):
Mathias Ricken's presentation for the COMP 600 seminar, August 24, 2009.
- ConcJUnit: Unit Testing for Concurrent Programs (Paper, PDF, view embedded):
Paper published in the proceedings of the 7th International Conference on the Principles and Practice of Programming in Java (PPPJ 2009).
- Practical Tools for Testing Concurrent Programs (Poster, PDF, view embedded):
created for 2006
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts.
- Unit Testing for Concurrent Programs (Poster, PDF, view embedded):
created for 2005
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts.
- Unit Testing for Concurrent Programs (Poster, PDF, view embedded): older version created for 2004
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts.
- Unit Testing for Concurrent Programs (Poster Abstract, PDF, view embedded):
abstract for 2004
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts.
- A Framework for Testing Concurrent Programs (MS Defense Presentation, PowerPoint, view embedded):
Mathias
Ricken's presentation from his Master of Science defense, June 14, 2007.
- A Framework for Testing Concurrent Programs (MS Thesis, PDF, view embedded):
Mathias Ricken's Master of Science thesis
- A Framework for Testing Concurrent Programs (Presentation, PowerPoint, view embedded):
Mathias
Ricken's presentation for the COMP 600 seminar, August 27, 2007.
- Testing Concurrent Programs (Presentation, PowerPoint, view embedded):
Mathias Ricken's presentation for the Rice Computer Science Club, October 4, 2007.
- Java Annotations for Invariant Specification (Presentation, PowerPoint):
Mathias Ricken's presentation for the COMP 617 seminar, September 22, 2008.
- Invariant Specification and Multi-Staging using Java Annotations (Poster, PDF, view embedded):
created for 2008
Corporate Affiliates Meeting at the Computer Science Department of
Rice University.
- Direct access to the download directory
|