Programs such as operating systems, database management systems, and
messaging programs support a variety of hardware configurations, including
various types and numbers of I/O devices and communications lines,
or different memory sizes. Often, the number of possible configurations is
too large to test each one, but at the least, you should test the program with
each type of hardware device and with the minimum and maximum con-
figuration. If the program itself can be configured to omit program components,
or if the program can run on different computers, each possible
configuration of the program should be tested.