The increasing complexity of digital systems over the past decade has been accompanied by a growing awareness of the need for efficient fault diagnosis, as proved by the ever increasing literature published on the subject. The paper is based on 86 referenced sources and its main function is to review the published methods of deriving diagnostic test sequences, indicating the advantages and disadvantages of each technique. In so doing, it traces the interaction between the diagnostic techniques that have evolved and their influence on the design philosophy of digital systems at all levels. It is apparent from the review that there exists a requirement for a unified theory of diagnosis compatible with, and complementary to current design techniques based on switching theory and ways are suggested in which this might be achieved.