%% date:: [[2021-02-13]], [[2023-02-22]] parent:: [[Principles of testing]], [[Software Testing]] %% # [[Exhaustive testing is impossible and impractical]] Exhaustive testing is a focus on the thoroughness of testing over other aspects such as expediency, importance, and convenience. It sounds good in theory to want to test until all defects are found, but it doesn't work in practice. There is a tension between finding all the defects and able to release software into production, and it's not always clear where the line lies. ## Exhaustive testing is impossible Because [[Testing shows the presence of defects, not their absence]], testing is limited in that 100% [[Test Coverage]] is unachievable. There can never be a guarantee that an application is "defect-free"; we can only guarantee that one it free from the _known_ defects. ## Exhaustive testing is impractical Even if exhaustive testing were impossible, it's still infeasible because it would take a lot of time for decreasing marginal returns. The cost of software development is great, but the cost of a non-release is even bigger.