1. A method for testing a software controlled telecommunications device, comprising: emulating a plurality of external test signals from external devices; manipulating physically or virtually a plurality of buttons associated with the telecommunications device, in order to emulate internal test signals; determining a compound observable state of the telecommunications device from the internal test signals and the external test signals; comparing a current compound observable state of the telecommunications device to a stored version of the correct current compound observable state of the telecommunications device; and generating an error report when the current compound observable state of the telecommunications device differs from the stored version of the correct current compound observable state of the telecommunications device.