How to check the testbench correctness

In reply to peter:

You testbench is essentially a behavioral model of your DUT. If the same person writes the testbench and behavioral DUT, they will have the same bugs.

The key to improving the quality of your tests is having a clear set of requirements that are used to write the RTL and the tests, and have a test plan that maps out how you will test each requirement. Then using a combination of functional and formal coverage to track your progress.