This manual describes a software called CxxTester. A tool which should free the programmer from writing unnecessary testframes for debugging and testing of C++ code.

 

Nearly every software is divided into several units with different responsibilities. There may be a horizontal separation into userinterface, internal handling and io specific units. Larger scaled programes are also divided into vertical parts, according the functional extent of the software.

Only the complete software system offers a straightforward possibility for execution and testing. Normaly the standalone software parts can't be executed without additional effort. But unit tests are indispensable because it is rather difficult to retrieve hidden errors from the external view of a complex system.

The CxxTester is an universal testframe for C++ code. The tool allows tests of complex libraries, of objectfiles with a set of methods or even of a single line of C++ source.
In fact everything which has a C++ interface. The concept of CxxTester is, to offer a simple, interpreter like frontend and an easy integration of the target software handled only with a few lines of code. The interpreter frontend allows to modify and enlarge the tests without recompilation of code.

Another advantage is the suitability from the very first debug attempts until batch driven regression tests during integration.

 

For the first attempt of a unit test, the developer needs a piece of code which offers a execute frontend of any kind and a suitable interface layer to the target unit.

This leads to a often seen practise :
The rapid prototyping of textoriented or graphical frontends containing calls to the target code.
Very soon these custom testframes must be increased and every complex testsession must be interactivly reproduced.At the end of the first debug phase, the amount of time which was spended for development of the testframe might be higher than the time spended for writing the target code. Furthermore such a testenvironment is far away from being useful for future integration or automated regression tests.
In addition, this private testenvironments are often very specialised and not reusable for other target code.

last update: AUG. 21. 2003