Если ваш основной способ измерения качества теста - это какой-то автоматический показатель, вы уже потерпели неудачу.
Метрики могут вводить в заблуждение, и они могут быть обмануты. И если метрика является основным (или, что еще хуже, единственным) средством оценки качества, они будут разыграны (возможно, непреднамеренно).
Например, покрытие кода глубоко вводит в заблуждение, потому что покрытие кода на 100% далеко от полного покрытия теста. Кроме того, цифра типа «80% покрытия кода» также вводит в заблуждение без контекста. Если это покрытие находится в самых сложных битах кода и просто пропускает код, который настолько прост, что это легко проверить на глаз, тогда это значительно лучше, чем если бы это покрытие было смещено в обратном направлении.
Кроме того, важно различать тестовую область теста (по сути, его набор функций) и его качество. Качество теста не определяется тем, насколько оно тестируется, так же как качество кода не определяется перечнем функций. Качество теста определяется тем, насколько хорошо тест выполняет свою работу в тестировании. Это на самом деле очень сложно подвести итог в автоматизированном метрике.
В следующий раз, когда вы отправитесь писать модульный тест, попробуйте этот эксперимент. Посмотрите, сколько разных способов вы можете написать его так, чтобы он имел одинаковое покрытие кода и тестировал один и тот же код. Посмотрите, возможно ли написать очень плохой тест, который отвечает этим критериям, а также очень хороший тест. Я думаю, что вы можете быть удивлены результатами.
В конечном итоге ничто не заменит опыт и суждение. Человеческий глаз, надеюсь несколько глаз, должен взглянуть на тестовый код и решить, хорош он или нет.