Что такое непрерывное тестирование?
Начать, пожалуй, стоит с того, что очень важным фактором в разработке ПО является то, насколько быстро разработчик увидит результаты тестов. Чем меньше времени проходит между написание кода и тестированием, тем эффективнее и быстрее можно устранить баги и тем самым ускорить релиз проекта.
Минус выполнения тестов только после сборки заключается в том, что к тому времени разработчик может забыть некоторые подробности о коде, особенно если параллельно он работает над чем-то другим. Запуск тестов на сервере сразу после изменения кода в основном позволяет избежать этой проблемы, поскольку сразу же видны результаты.
Идея непрерывного тестирования состоит в том, чтобы сделать процесс выполнения автоматических тестов быстрым и осуществляющимся по мере написания кода, что позволит выпускать программное обеспечение непрерывно и плавно, без необходимости многократного повтора и исправления ошибок. Основные принципы непрерывного тестирования – предотвращение дефектов, (а не обнаружение) и быстрая обратная связь. Тесты должны запускаться автоматически при изменении кода и разработчику не нужно запускать их вручную. Когда нужно реорганизовать или усовершенствовать существующий код, эти тесты будут предотвращать нарушения первоначальной функциональности.
Когда тесты выполняются все время в процессе написания кода, результаты о его текущем состоянии всегда являются актуальными - какие части уже реализованы правильно и какие все еще отсутствуют или в настоящее время повреждены. Это делает разработку более эффективной, потому как любое исправление кода, приводит к почти немедленному изменению результатов теста.
Поддержка непрерывного тестирования в средствах разработки
Стоит сказать о том, что непрерывное тестирование невозможно, если инструменты разработки его не поддерживают.
Первым инструментом, позволяющим проводить непрерывное тестирование в системе .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 и выводит результаты только в окно консоли, поэтому может использоваться с любым редактором кода и на любой платформе.
Сегодня доступно три конкурирующих решения:
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
Comentarios