Я присоединился к команде, которая работает над продуктом. Этот продукт существует уже около 5 лет и использует ASP.NET WebForms. Его оригинальная архитектура со временем исчезла, и во всем решении все стало относительно неорганизованным. Это ни в коем случае не ужасно, но определенно может использовать некоторую работу; Вы все знаете, что я имею в виду.
Я провел несколько рефакторингов с тех пор, как пришел в проектную команду около 6 месяцев назад. Некоторые из этих рефакторингов являются простыми: метод извлечения, метод подтягивания вверх и т. Д. Некоторые из рефакторингов являются более структурными. Последние изменения заставляют меня нервничать, так как нет комплексного набора юнит-тестов для сопровождения каждого компонента.
Вся команда готова внести структурные изменения посредством рефакторинга, но наш менеджер проекта выразил некоторые опасения, что у нас нет адекватных тестов для проведения рефакторинга с уверенностью, что мы не вводим ошибки регрессии в система. Он хотел бы, чтобы мы сначала написали больше тестов (против существующей архитектуры), а затем провели рефакторинг. Мой аргумент заключается в том, что структура классов системы слишком тесно связана для написания адекватных тестов, и что лучше использовать подход, основанный на тестировании, пока мы выполняем наши рефакторинги. Под этим я подразумеваю не написание тестов для существующих компонентов, а написание тестов для конкретных функциональных требований, а затем рефакторинг существующего кода для удовлетворения этих требований. Это позволит нам писать тесты, которые, вероятно, будут иметь больший срок службы в системе, чем писать кучу «выброшенных» тестов.
Есть ли у кого-нибудь опыт относительно того, как лучше всего действовать? У меня есть свои мысли, но я хотел бы услышать мнение сообщества.