ну т.е. я никак не пойму, где формальная та граница между тестами и верификацией, чтобы точно сказать, что тут выгоднее тесты, а тут верификацию.
так как сам не пишу ни тесты, ни уж тем более верификацию!
Тесты и верификация в некотором смысле дуальны: тесты выявляют наличие ошибок, верификация доказывает отсутствие ошибок в заданных рамках.
Тесты обычно могут выразить больший спектр свойств (в особенности, нефункциональных) и их как правило проще написать. Но, соответственно, меньше гарантий.
С обратной стороны на cost-benefit curve влияет сложность кода. Простой код проще верифицировать, чем исчерпывающе протестировать. Сложный код хрен специфицируешь, не говоря уже про верификацию.