У нас есть большой объем устаревшего кода, некоторые части которого запланированы на рефакторинг или замену. Мы хотим оптимизировать части, которые в настоящее время влияют на взаимодействие с пользователем, облегчить повторное использование в новом планируемом продукте и, надеюсь, улучшить ремонтопригодность.
У нас есть неплохие/всесторонние функциональные тесты для существующего продукта. Это смесь автоматических и ручных тестов графического интерфейса, но на их полное выполнение у разработчика может уйти более половины дня. «Низкоуровневая доменная логика» имеет хороший набор модульных тестов (NUnit) с хорошим покрытием. К сожалению, остальная часть кода не имеет модульных тестов (или, по крайней мере, достойных модульных тестов).
Я хотел бы найти инструмент, который автоматически генерирует модульные тесты для конкретных методов/классов и, возможно, конкретных интерфейсов на основе их использования и поведения в функциональных тестах. Эти модульные тесты были бы бесценны для рефакторинга, а также выполнялись бы как часть нашей системы непрерывной интеграции. система для обнаружения регрессий намного раньше, чем это происходит в настоящее время (и для локализации регрессий намного лучше, чем «кнопка X не работает»).
Существуют ли такие инструменты? Есть ли у вас какие-либо рекомендации для меня?
Я наткнулся на Parasoft .TEST, который выглядит так, как будто я хочу, чтобы я хотел. Есть ли у вас какие-либо комментарии по поводу моей ситуации?
Я не думаю, что что-то, что просто генерирует тестовый код из статического анализа, аля NStub, полезно здесь. Я полагаю, что на самом деле важно генерировать репрезентативные тестовые данные.
Пожалуйста, не обращайте внимания на достоинства или недостатки автоматического создания тестов — я обычно не ратую за это. (Не в последнюю очередь потому, что вы получаете тесты, которые проходят для неработающего кода!)