Генерация тестов из анализа времени выполнения - PullRequest
3 голосов
/ 06 мая 2009

У нас большой массив устаревшего кода, некоторые части которого запланированы для рефакторинга или замены. Мы хотим оптимизировать детали, которые в настоящее время влияют на пользовательский опыт, облегчают повторное использование в планируемом новом продукте и, надеюсь, также улучшают ремонтопригодность.

У нас есть довольно хорошие / всесторонние функциональные тесты для существующего продукта. Это смесь автоматизированных и управляемых вручную тестов графического интерфейса, но они могут занять разработчика более полдня, чтобы выполнить полностью. «Низкоуровневая логика домена» имеет хороший набор модульных тестов (NUnit) с хорошим охватом. К сожалению, в оставшейся части кода нет юнит-тестов (или, по крайней мере, нет достойных юнит-тестов).

Я хотел бы найти инструмент, который автоматически генерирует модульные тесты для определенных методов / классов и, возможно, определенных интерфейсов на основе их использования и поведения в функциональных тестах. Эти модульные тесты будут иметь неоценимое значение для рефакторинга, а также будут выполняться как часть нашего C.I. система для обнаружения регрессий намного раньше, чем происходит в настоящее время (и для локализации регрессий гораздо лучше, чем «кнопка X не работает»).

Существуют ли такие инструменты? Есть ли у вас какие-либо рекомендации для меня?

Я сталкивался с Parasoft .TEST , который выглядит так, как если бы я действительно хотел этого. Есть ли у вас какие-либо комментарии по поводу моей ситуации?

Я не думаю, что что-то, что просто генерирует тестовый код из статического анализа, ala NStub , здесь полезно. Я полагаю, что действительно важно создать репрезентативные тестовые данные.

Пожалуйста, не обращайте внимания на достоинства или недостаток автоматического создания тестов - я бы не рекомендовал это делать. (Не в последнюю очередь потому, что вы получаете тесты, которые проходят для неработающего кода!)

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

Попробуйте Pex :

Прямо из редактора кода Visual Studio Pex находит интересные значения ввода-вывода ваших методов, которые вы можете сохранить в виде небольшого набора тестов с высоким охватом кода. Pex выполняет систематический анализ, выискивая граничные условия, исключения и ошибки подтверждений, которые можно сразу же отладить. Pex включает параметризованное модульное тестирование, расширение модульного тестирования, которое снижает затраты на обслуживание теста.

0 голосов
/ 06 мая 2009

Ну, вы можете посмотреть на PEX - но я считаю, что он изобретает свои собственные данные (он не смотрит ваши существующие тесты, AFAIK).

...