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