This document discusses tools and techniques for code coverage testing. It begins by defining code coverage testing as a method of designing and executing test cases to determine the percentage of source code covered by testing. It then describes various types of structural code coverage, including statement coverage, path coverage, condition coverage, and function coverage. For each type of coverage, it provides details on how to design test cases to achieve high coverage based on that criteria. The document also introduces some commonly used code coverage analysis tools and how they can help with coverage testing based on different criteria.