This document discusses software testing and bug management. It defines testing as verifying that a system satisfies requirements through manual or automated means. Testing is necessary because software will have faults, to learn reliability, and avoid expensive failures. Bugs are faults that cause unintended behavior. Bugs go through a lifecycle of being logged, analyzed, assigned, corrected, retested, and closed or accepted. Bug severity ranges from cosmetic to fatal. Bug status tracks whether a bug is error, assigned, pending, tested, or accepted. Bugs are also classified by type such as requirements, structural, data, coding, interface, or test bugs. Bug tracking tools can manage the bug lifecycle.