Непрерывное тестирование с Mighty Moose

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

Обычный цикл разработки с помощью ТDD подразумевает использование подхода Red-Green-Refactor, который конечно же работает хорошо и при одного теста и знании горячих клавиш достаточно производителен. Однако, если затрагивается сложный функционал, то при рефакторинге кода могу затрагиваться самые разные тесты и тогда приходится вручную запускать все тесты, дабы убедится что ничто не сломано и все работает как планировалось. Вот это действие уже накладное и может вызывать большие потери времени разработчиков при запуске всех тестов и ожидании результатов, даже если предположить, что все тесты написаны качественно и проходят очень быстро.

В этой ситуации на помощь приходит Mighty Moose с подходом continuous testing (непрерывное тестирование). Мне логичным появление такой системы, с учетом того, что до этого набрали популярность и оправдали свое существование техники непрерывной интеграции и непрерывной доставки. Mighty Moose действительно оправдывает инсталляцию и занимаемую оперативную память.

Mighty Moose позволяет осуществлять непрерывное тестирование приложения для следующих платформ тестирования:

  • NUnit
  • XUnit
  • MBUnit

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

Сборка проектов с помощью Mighty Moose осуществляется быстрее, за счет анализа только изменившихся компонентов. Невероятно, но факт. Хотя сама студия тоже не лыком шита и анализирует изменения в сборках. Вы так же можете вспомнить, что в студии с 2010 версии есть анализ тестов, которые необходимо перезапустить, но данный механизм в студии работал очень долго и был оооочень ресурсоемким. В 2012 это изменилось в лучшую сторону, но все равно механизм недостаточно быстрый и требуется ручной запуск тестов.

Авторами Mighty Moose являются Грег Янг (Greg Young) и Свен Акенхаузен (Svein Arne Ackenhausen). Очень умные люди и, например, Грега вы можете знать как евангелиста CQRS и Event Sourcing. Так же он себя называет «упрощателем приложений», так что продукт направлен на максимальную производительность и максимальное удобство использования в реальной разработке.

Я думаю уже достаточно вас заинтересовал, чтобы перейти к рассказу о том, как работать в стиле continuous testing.

Основным рабочим экраном является ContinuousTest – Run Output Window в котором отображается вся актуальная информация по сборке проекта и прохождению тестов.

При просмотре исходного кода, можно увидеть круги (в данном случае зеленые) и цифру в них. Они указывают о степени риска изменения методов и количество тестов покрывающих метод.

При изменении теста и сохранении файла автоматом запускается выполнение тестов. На скриншоте выше указан измененный тест и то, как выглядит окно вывода информации после прогона теста. Так же видны зеленые галки, которые говорят о том, что тесты успешно пройдены.

При заваленном тесте вы сразу же увидите сообщение о том, какой тест не прошел, а так же сможете быстро к нему перейти по двойному клику из окна результатов.

Другими полезными свойствами является анализ зависимостей и анализ вызовов. Начнем с анализа зависимостей. Благодаря этому свойству вы можете быстро увидеть какие тесты покрывают метод. По двойному клику на ноду можно быстро перейти к интересующему тесту или же методу.

На скриншоте представлен небольшой экземпляр для настройки тестов, но данная диаграмма может быть гораздо более ветвистой.

Второй не менее полезной фичей для анализа проекта является анализ вызовов. Эта диаграмма показывает вызовы в виде swim pool с указанием времени выполнения методов.

Опытные разработчики должны оценить данную возможность по достоинству. По двойному клику на заголовок можно перейти к интересующему классу.

Так же хочется добавить, что построение этих диаграмм в норме занимает считанные миллисекунды. В очень редких случаях диаграмма строится секунду, две. Если случай совсем запущенный, то Mighty Moose честно признается в том, что диаграмма слишком велика и вы вряд ли хотите ее видеть и разбираться в ней.

Детальные обзоры в действии смотрите в следующих постах в формате видео.

 

Я пользуюсь данным инструментом уже на протяжении года и мне он очень нравится, реально экономит много времени и сил. Хотя с моей любовью к PostSharp эти два инструмента иногда дают сбой и проект не собирается, приходится прибивать MSBuild.exe. В последних версиях однако данный баг починили и MM корректно освобождает ресурсы и отцепляется от MSBuild.

Конечно же, любой инструмент требует свою цену и в данном случае это оперативная память. Однако на моем боевом ноуте с 8 гигами я не замечаю проседания в производительности между режимами FullAuto и выключенным ММ.

Мой вердикт по данному продукту – must have для разработчиков, которые проповедуют разработку через тестирование.

 

P.S.

Похожей функциональностью обладает NCrunch, однако я его не использовал и были бы интересны комментарии тех, кто его использует в реальной работе.

 

Hard’n’Heavy!

 

8 комментариев на “Непрерывное тестирование с Mighty Moose

    • А этот инструмент недавно стал бесплатным )) Хотя платную версию я как-то не застал, и там странная была тема с оплатой. В общем главное что сейчас все бесплатно.

  1. NCrunch отличная штука, использовал пол года, пока NCrunch не стал платным, остался доволен.
    Проблем при работе не наблюдал, возникали только технические проблемы. Например со статическими данными для тестов, например в формате xml. NCrunch тестирует проекты в отдельном временном каталоге.

    • Тут вроде бы таких проблем со статическими вещами быть не должно. Хотя конечно тут такая тема, что всегда можно поставить в ступор анализатор кода и что-то может не отследиться в автоматическом режиме. Но в целом очень хорошо себя ведет инструмент. Главное, что стал бесплатным! Т.е. тенденция хорошая. Ко всему прочему инструмент развивается и не забрасывается разработчиками.

      • // Главное, что стал бесплатным!

        Я думаю что более важно то, что бы цена была адекватная. В текущий момент NCrunch по его нынешней цене я приобрести не могу. У меня на год вперёд бюджет расписан. И уж очень не понравилась бесплатность в начале, без явной информации о том что в последующем продукт станет полностью платным. Даже лайт версии не сделали.(

        Вдобавок, NCrunch не тот продукт, без которого я не смогу. Хотя если будут «лишние» деньги, то NCrunch приобрету, так как очень удобно.)

        С Mighty Moose не сложилось. Вчера поставил, система чистая, стабильная, лицензионная, нигде никаких кряков и т.д. и т.п.. В итоге, обе визуалочки (2010 и 2012) слегли во время установки Mighty Moose, вылетели с исключениями, настройки все слетели. Благо что хранил их резервные копии. Снёс. Во время деинсталляции Mighty Moose обе визуалочки опять вылетели. Соответственно деинсталляция прошла некорректно и пришлось опять восстанавливать настройки и чистить ручками оставшуюся хрень.

        • Ого! Они совсем недавно писали, примерно неделю назад, что исправили ошибки при инсталляции. Хотя у меня таких проблем не возникало с Лосяшем ни дома, ни на работе. Надо будет провести эксперимент на коллегах =)
          Зато возникла странная проблема с R#, все работает кроме навигации по Ctrl+Click. Но это можно решить и другими средствами )

          • Может от системы зависит. У меня Windows Server 2012 AMD.

          • Вышло обновление для MM, в котором говорится, что они починили установки и некоторые еще баги связанные с хрупкостью студии )

Оставить комментарий