Proofs of program correctness, testing tools, and tests may have bugs, but this doesn't mean that they're useless. In the case of tools and libraries (used to implement and run tests, or perform machine-assisted proofs), presumably any time a bug is discovered by any of the users of the tool, it's fixed for everyone.
Further, even if some tool bugs always remain, it just means that you get some false positives and negatives. As long as the benefit from finding the true positives (defects detected that are really bugs) exceeds the cost of investigating the false positives and creating the tests/proofs for the tool, you profit by it. False negatives are hardly a reason to drop the tool; they cost you nothing.
Not testing is equivalent to using a crappy test that always reports "no bugs here!", i.e. you have many false negatives and no true positives :)
It's true that you can't prove the absence of bugs by testing.