There are numerous systems for developing and building large software systems. In high energy physics, these include SRT, CMT, SCRAM and the GNU tools autoconf and automake. Each requires users to learn complex means to specify their software configuration and there are no means to translate this description to any of the other frameworks.
CTEST attempts to define a relatively simple interface that can be translated for use in any of the above and other systems.
The name CTEST comes from the notion of component testing introduced in a book by J. Lakos in 1996. The interface requires that each software component, typically a class, be provided with a main program that is used to test the functionality of that component.
The most recent implementation of ctest is ctest_gnu As the name suggests, is is based on the GNU software development tools, specifically autoconf, automake and libtool. It is used to build DIAL. There are differences between the interface of ctest_gnu and that in earlier versions of CTEST.
In 2001, requirements were generated with ATLAS in mind.
The ctest interface was adopted by D0 when it moved to C++ in the mid-1990's. D0 uses the SRT build system and an implementation called ctbuild that enables SRT to build software packages described by a CTEST interface.
The original CTEST interface was described in a paper by D. Adams at CHEP 98. An improved interface is describe in the CTEST 2.00 specification (ps, pdf)