DejaGnu grew out of the internal needs of Cygnus Solutions. (then Cygnus Support). Cygnus maintained and enhanced a variety of free programs in many different environments, and we needed a testing tool that:
was useful to developers while fixing bugs.
automated running many tests during a software release process.
was portable among a variety of host computers.
supported cross-development testing.
permited testing interactive programs, like GDB; and
permited testing batch oriented programs, like GCC.
Some of the requirements proved challenging. For example, interactive programs do not lend themselves very well to automated testing. But all the requirements are important: for instance, it is imperative to make sure that GDB works as well when cross-debugging as it does in a native configuration.
Probably the greatest challenge was testing in a cross-development environment (which can be a real nightmare). Most cross-development environments are customized by each developer. Even when buying packaged boards from vendors there are many differences. The communication interfaces vary from a serial line to ethernet. DejaGnu was designed with a modular communication setup, so that each kind of communication can be added as required, and supported thereafter. Once a communication procedure is coded, any test can use it. Currently DejaGnu can use rsh, rlogin, telnet, tip, kermit, and mondfe for remote communications.