This document discusses techniques for finding defects in software testing. It begins by defining software testing and explaining the goal is to find bugs or errors. Then it discusses the full bug lifecycle from when a bug is first found and reported until it is fixed. It provides different classifications of defects such as invalid, duplicate, not reproducible, can't fix, etc. It also provides templates for test plans, test cases, and bug reports. Finally, it discusses the black box testing technique of equivalence partitioning, boundary value analysis, and decision tables which are used to design test cases to efficiently discover software defects.