Hardware failures occur especially due to external influences, component aging, or faulty interoperability. By testing, faulty components can be localized, allowing for fault isolation or repair. The contract testing strategy from software specifies component interoperability conditions, and systematically creates correspondent tests ensuring the operability of the system. We adapt contract testing to hardware, providing component specification, and monitoring thereof. Contract specification has to be specialized with requirements on the physical environment and component input signals. Contract testing is then executed through the monitoring of the contract parameters. Furthermore, to reason about the external cause of errors, signal faults are categorized. As a case study, we present an communication system. For this system, a contract is defined, and circuits implemented to perform contract testing and fault categorization. Communication faults, related to hardware errors and to sporadic environment disturbance, are injected in the developed system. These faults are completely detected, but can be only partially categorized by the monitoring approach.