Автоматическое создание случаев модульного тестирования для .NET и Java [закрыто]

StackOverflow https://stackoverflow.com/questions/689087

Вопрос

Есть ли хороший инструмент для создания случаев модульного тестирования, например, для проекта .NET или Java, он генерирует случаи модульного тестирования, которые охватывают почти 100% покрытие кода.Количество тестовых примеров может быть прямо пропорционально цикломатической сложности кода (чем выше вложенность циклов и условий, тем выше цикломатическая сложность), где чем выше цикломатическая сложность, тем больше генерируется набор тестовых примеров.Я не ожидаю, что он будет полностью функциональным (скажем, я собираюсь создать модульные тесты и запустить их после того, как они будут сгенерированы), но я бы сказал, что он может иметь стиль шаблона в тестовом примере, который вы должны изменить. чехол, который соответствует вашим предполагаемым потребностям.Но он также должен иметь правильный метод настройки и демонтажа и достаточно хорош, чтобы определить, следует ли использовать макетные объекты для модульного тестирования, если есть какие-либо зависимости.Итак, существует ли такой инструмент?

Это было полезно?

Решение

Для .NET у Microsoft есть Пекс который, мы надеемся, станет массовым для .NET 4.0 вместе с Кодовые контракты.Очень рекомендую посмотреть видео 9 канала.

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

Другие советы

Для С# (или .NET в целом) ПЕКС может быть этот инструмент.Он работает на уровне IL и пытается проникнуть в каждую ветку.Он успешно обнаружил широкий спектр ошибок (в BCL и т. д.).

Хотя это кажется нелогичным, вас также могут заинтересовать фреймворки для генерации случайных тестов.Исследования доказали, что они могут быть столь же эффективными в поиске ошибок, как и систематические подходы, основанные на охвате, как вы предлагаете.

Проверить Рандуп как для .NET, так и для Java.Он работает, генерируя более или менее случайную последовательность вызовов методов и проверяя контракты, сбои и т. д.Это полностью автоматический процесс.

Также вы можете попробовать некоторые другие инструменты случайного тестирования, основанные на Быстрая проверка, напримердля Java, Scala, F#.которые больше похожи на Pex, т.е.вы даете спецификацию или параметризованный модульный тест, и инструмент проверяет ее на наличие ряда сгенерированных входных аргументов.

Я обнаружил, что этот «параметризованный» способ написания модульных тестов на самом деле гораздо более естественен, по крайней мере, в 60% случаев и позволяет обнаружить гораздо больше ошибок.

Для Java вы можете проверить ЭвоСюит, который имеет открытый исходный код и в настоящее время активен (отказ от ответственности: я являюсь одним из его участников).Также смотрите связанные вопрос для получения списка дополнительных инструментов.

Для Java попробуйте JUnit-Инструменты.У него есть собственный плагин eclipse и хорошая документация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top