ConcurrentTesting - Advanced Testing for Multi-Threaded Applications
A tool for testing, debugging, and coverage-measuring of concurrent programs.
Date Posted: May 12, 2005
|
|
 |
 |
|
Update: March 13, 2008
Version 3.0.0.2: Instrumentation at classload. Users of older versions, please re-read the main pages of the readme file.
What is ConcurrentTesting - Advanced Testing for Multi-Threaded Applications (ConTest)?
The main use of ConTest is to expose and eliminate concurrency-related bugs in parallel and distributed Java™ programs. ConTest systematically and transparently schedules the execution of program threads such that program scenarios that are likely to contain race conditions, deadlocks, and other intermittent bugs (collectively called synchronization problems) are forced to appear with high frequency. Because bugs are found earlier in the testing process, ConTest dramatically improves the quality of testing and reduces development expense.
ConTest's impact on the testing effort is minimal. Testers can rerun existing test suites without recompilation of the software under test (but with a greater probability of uncovering synchronization problems). ConTest is easy to use and requires, typically, less then one day to set up. This tool has been used successfully on industrial-sized applications (such as IBM® WebSphere®) and is, in general, a scalable testing solution. ConTest can also be used to measure test coverage, aid in debugging, enable replay, and present deadlock information.
ConTest is a pure Java application.
How does it work?
ConTest is activated by adding a javaagent argument to your existing test command and specifying in the ConTest preferences file which of your classes should be targeted. When these classes are loaded, ConTest instruments them around places that are likely to be involved in concurrent bugs. Then you can run the existing tests. The ConTest run-time engine adds heuristically-controlled conditional sleep and yield instructions, which help reveal concurrent bugs. Each existing test can be run many times: ConTest causes different things to happen every time, and new bugs may surface. ConTest also collects run-time information for coverage and debugging.
This process requires Java 5 and above. ConTest can work with Java 1.4 as well, but the process is slightly different; please consult the "readme" file.
|
|
 |

|  | About the technology author(s): Eitan Farchi, Ph.D., has been with the IBM Haifa Research Laboratory since 1992; he there led a project of improving the performance of operating systems. He is currently involved in software testing and in developing coverage-directed tools for testing concurrent and distributed programs. Dr. Farchi is a frequent speaker at software testing conferences, is the author of a tutorial on the testing of distributed components, and teaches software engineering at the University of Haifa.
Shmuel Ur, Ph.D., is a research scientist in IBM research lab in Haifa, Israel. He works in the field of software testing and concentrates on coverage and testing of multi-threaded programs. Dr. Ur is the technical lead of the area of Coverage in IBM and is also an IBM Master Inventor. In addition, he teaches software testing in the Technion and Haifa University. Dr. Ur has published papers in the fields of hardware testing, artificial intelligence, algorithms, software testing, and testing of multi-threaded programs; he is also the co-chair of PADTAD, a workshop on testing multi-threaded applications. In the area of coverage, he worked and published papers on functional coverage, minimizing regression suite size, coverage-directed generation, visual code coverage techniques, and coverability.
Yarden Nir-Buhcbinder has been working since 2000 at the IBM Haifa Research Laboratory, where he participates in the development of software testing tools.
Orit Edelstein joined the IBM Haifa Scientific Center, which later evolved into the IBM Haifa Research Lab. She worked for several years in the area of programming languages and development environments and is currently managing the Verification and Testing Solutions group. Ms. Edelstein's areas of interest are software testing tools, formal verification, programming languages, AD environments, and distributed environments.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
IBM and WebSphere are trademarks of IBM Corporation in the United States, other countries, or both.
Other company, product, or service names may be trademarks or service marks of others.
| |
|
| |