Я работаю в большой компании и отвечаю за большое Java-приложение с тысячами тестов Junit. С тех пор, как я перешел на эту роль, было 200-300 сломанных тестов (вероятно, сломанных в течение многих лет). Тесты старые и хрупкие, и они представляют собой кучу спагетти-зависимостей, которые обычно заканчиваются живыми данными песочницы.
Моя цель - 100% пройти тесты, чтобы мы могли сломать сборку при сбоях модульных тестов, но я не смогу это сделать, пока не решу проблемы с тестами. У меня очень маленький бюджет, потому что бюджет на техническое обслуживание в основном предназначен для поддержки, но моя команда выявила и исправила тесты с минимальными результатами (в основном проблемы с конфигурацией / локальными ресурсами), и мы сократили до 30-40 действительно уродливых тестов.
Какие мнения о наилучшей практике? Я не думаю, что тесты полезны, но я также не знаю, что они тестируют или почему они не работают, не копаясь, что требует времени и денег, которых у нас, вероятно, нет.
Я думаю, что мы должны задокументировать статусы неработающих тестов с помощью всего, что мы знаем, а затем либо полностью удалить, либо проигнорировать неработающие тесты, и ввести элемент с ошибкой / работой с более низким приоритетом, чтобы исследовать и исправить их. Затем мы достигнем 100% и начнем извлекать реальную выгоду из других тестов, и если у нас будет непредвиденный случай обслуживания / рефакторинга, мы сможем снова их забрать.
Какой будет лучший подход?
Редактировать: я думаю, что это другой вопрос, чем этот вопрос, потому что у меня есть четкое направление для тестов, которые мы должны писать в будущем, но я унаследовал устаревшие тесты, которые нужно решить до того, как большой текущий набор тестов станет значимым.