This book is written for both the student and the practicing engineer. It assumes an understanding of logic design, sequential machine theory, and computer architecture. Although definitions are provided along the way, this is done primarily to insure that we share a common understanding of the use of the terms. Algorithms used to develop tests for digital circuits are explained and design practices which cause circuits to become untestable are examined. Therefore, the book should be useful to logic designers as well as to test engineers.