Непрерывное тестирование для .NET
Что такое непрерывное тестирование?

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

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

Идея непрерывного тестирования состоит в том, чтобы сделать процесс выполнения автоматических тестов быстрым и осуществляющимся по мере написания кода, что позволит выпускать программное обеспечение непрерывно и плавно, без необходимости многократного повтора и исправления ошибок. Основные принципы непрерывного тестирования – предотвращение дефектов, (а не обнаружение) и быстрая обратная связь. Тесты должны запускаться автоматически при изменении кода и разработчику не нужно запускать их вручную. Когда нужно реорганизовать или усовершенствовать существующий код, эти тесты будут предотвращать нарушения первоначальной функциональности.

Когда тесты выполняются все время в процессе написания кода, результаты о его текущем состоянии всегда являются актуальными - какие части уже реализованы правильно и какие все еще отсутствуют или в настоящее время повреждены. Это делает разработку более эффективной, потому как любое исправление кода, приводит к почти немедленному изменению результатов теста.

Поддержка непрерывного тестирования в средствах разработки

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

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

Вскоре последовали другие сторонние коммерческие варианты для Visual Studio.

Сегодня доступно три конкурирующих решения:

  • NCrunch от Remco Software
  • DotCover от JetBrains, продается как часть пакета ReSharper Ultimate
  • Smart Runner от Typemock, продаваемый вместе с Typemock Isolator для .NET
Первой попыткой Microsoft в этой области, было добавление функции в Test Explorer-Run Tests After Build switch, что позволило автоматически запускать тесты после каждой сборки.

Хотя эта функция не позволяла проводить постоянное тестирование, тем не менее это был первый шаг в этом направлении. Полное решение для непрерывного тестирования было представлено в Visual Studio 2017 функцией Live Unit Testing.

Примерно в то же время аналогичная функция была добавлена в инструменты командной строки для .NET Core. Можно использовать наблюдатель файлов dotnet-watch, чтобы отслеживать исходный код изменений и запускать ответные тесты. Он не интегрирован в Visual Studio и выводит результаты только в окно консоли, поэтому может использоваться с любым редактором кода и на любой платформе.

Тестирование Live Unit в VS 2017

Функциональность Live Unit Testing доступна только в версии Enterprise Visual Studio 2017.

В финальной версии Visual Studio 2017, выпущенной в марте, поддержка была ограничена проектами, нацеленными на платформу .NET. Если вы хотите использовать его с .NET Core (1.0, 1.1 или предварительным просмотром 2.0), вам потребуется установить обновление 15.3.

С Live Unit Testing можно использовать любой из трех наиболее популярных тестовых фреймворков (MSTest, NUnit и xUnit.net).

В отличие от Live Unit Testing, результаты и охват не отображаются непосредственно в редакторе кода, но мы по-прежнему получаем немедленную обратную связь с каждым изменением.

Для дополнительного удобства можно даже запускать dotnet-watch непосредственно в терминале, который встроен в код Visual Studio.

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

Поддержка непрерывного тестирования становится все более распространенной в системе .NET и в будущем будет только улучшаться. Инструменты командной строки .NET Core могут использоваться с любым редактором и на любой платформе. Visual Studio 2017 представляет функцию тестирования Live Unit, которая включена в корпоративную версию. Для других версий доступны альтернативные сторонние коммерческие расширения.

10 мая / 2018
ул. Шота Руставели 40\10
info@start-it.ua
+380 63 742 50 52
© 2018 StartIT training center

Made on
Tilda