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