Recently I tried out mutation testing, which is the practice of changing your code to see if tests start failing. And if not, they might not be testing the right things.
Mutation testing is one of the things you can look at besides code coverage.
For .NET https://stryker-mutator.io/ is a very easy to use tool to try this out on a repository.