This document discusses mutation testing as a way to test code and test quality. Mutation testing involves intentionally breaking code in small ways (e.g. changing + to *) and ensuring tests catch these "mutant" versions. While code coverage measures how much code is executed, mutation testing checks that tests are thorough by breaking the code in multiple ways. The document provides examples of mutation testing and operators as well as a brief history of the technique. It notes that while time consuming, mutation testing can help identify faults that may cascade and ensure tests are comprehensive.