This document discusses principles of software testing. It covers why testing is necessary due to faults occurring in software from human errors. It describes the fundamental test process which includes test planning, specification, execution, recording, checking completion criteria. It discusses prioritizing tests to focus on important conditions first. Exhaustive testing is not possible due to the large number of combinations. The document also defines key terms like errors, faults, failures and reliability.