Exhaustive testing involves verifying all functionality in a software program. You do this by using valid and invalid inputs. For good measure, you also have to cover every pre-condition.