| |
About Concutest
Introduction
Concutest-JUnit
Thread Checker
Schedule-Based Execution
Using Concutest
Download
How to Run
License
Resources
Documentation
FAQ
Publications
Concutest Community Project
Give Feedback
Features, Bugs, Support
Contact Us
Developers
SourceForge Project
Developer Docs
Javadocs
Developer Blog
|
|
|
|
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:
- Concutest-JUnit: 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
- Poster (PDF): created for 2006
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts (view embedded).
- Poster (PDF): created for 2005
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts (view embedded).
- Poster (PDF): older version created for 2004
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts (view embedded).
- Poster Abstract (PDF): abstract for 2004
Corporate Affiliates Meeting at the Computer Science Department of
Rice University to summarise our efforts (view embedded).
- MS Defense Presentation (PowerPoint): Mathias
Ricken's presentation from his Master of Science defense, June 14, 2007.
- MS Thesis (PDF): Mathias Ricken's Master of Science thesis (view embedded)
- Presentation (PowerPoint): Mathias
Ricken's presentation for the COMP 600 seminar, August 27, 2007.
- Presentation (PowerPoint): Mathias Ricken's presentation for the Rice Computer Science Club, October 4, 2007.
- Presentation: Java Annotations for Invariant Specification (PowerPoint):
Mathias Ricken's presentation for the COMP 617 seminar, September 22, 2008.
- Presentation: Java Annotations for Types, Expressions and Multi-Stage Programming (PowerPoint):
Mathias Ricken's presentation for the COMP 617 seminar, October 24, 2008.
- Poster: Invariant Specification and Multi-Staging using Java Annotations (PDF): created for 2008
Corporate Affiliates Meeting at the Computer Science Department of
Rice University (view embedded).
- Direct access to the download directory
|