Skip to main content

ConcurrentTesting - Advanced Testing for Multi-Threaded Applications

A tool for testing, debugging, and coverage-measuring of concurrent programs.

Date Posted: May 12, 2005

alphaworks tab navigation


 

Update: September 3, 2009
Version 3.5.2.3 provides bug fixes, including instrumentation of classes without line number information.

 

What is ConcurrentTesting - Advanced Testing for Multi-Threaded Applications?

ConTest is a tool that exposes and eliminates 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 rcan be set up in less than one day, in most cases. 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, and detect potential deadlocks.

ConTest is a pure Java application.

How does it work?

ConTest is activated by adding a “java_agent” 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 by your test, ConTest instruments them around places that are likely to be involved in concurrent bugs.

The ConTest run-time engine adds heuristically controlled conditional instructions that force thread switches, thus helping to 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)

Yarden Nir-Buhcbinder holds an M.A. in philosophy from the University of Haifa and a B.Sc. in computer science from the Technion, Israel Institute of Technology. Since 2000 he has worked at the IBM Haifa Research Laboratory where he participates in the development of software lifecycle tools, especially in the areas of concurrency and coverage. He has published several conference papers on these topics. He is also on the development team for FoCuS.

Eitan Farchi, Ph.D. has been with the IBM Haifa Research Laboratory since 1992; there he led a project to improve the performance of operating systems. He is currently involved in software testing and 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.

Rachel Tzoref-Brill holds a B.Sc. and M.Sc in computer science from the Technion, Israel Institute of Technology. Since 2001 she has been working at the IBM Haifa Research Laboratory, where she participates in the development of tools and algorithms for formal verification and multi-threaded programs testing and debugging, and has published several conference papers on these topics. She is the main developer of ConTest Eclipse plugin and FoCuS.

Dr. Shmuel Ur 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. Shmuel is the technical lead of the area of Coverage in IBM and is also an IBM Master Inventor. Shmuel teaches software testing in the Technion and Haifa University.

Shmuel received his PhD. in Algorithms Optimization and Combinatorics in 1994 in Carnegie Mellon University. Shmuel received his Bs.C. and Ms.C. from the Technion, Israel Institute of Technology. Shmuel has published in the fields of hardware testing, artificial intelligence, algorithms, software testing and testing of multi-threaded programs. He is also the chair of PADTAD, a workshop on testing multi-threaded applications. In the area of coverage, Shmuel worked and published on functional coverage, minimizing regression suite size, coverage directed generation, visual code coverage techniques and coverability. He has written more than 50 technical papers and holds 15 patents.

Trademarks