Автоматизация тестирования в рамках CI/CD

Автоматизация тестирования — ключевой элемент любого CI/CD-пайплайна и важнейший шаг к повышению частоты релизов. TeamCity предлагает широкий спектр возможностей, чтобы автоматизированные тесты были максимально эффективными, в том числе изменение порядка тестов, их параллелизацию, «умный» анализ сбоев, задание критериев качества и многое другое. Благодаря встроенной поддержке популярных фреймворков тестирования для .NET, Java, Python, JavaScript и других языков программирования TeamCity помогает создавать более качественный код и повышает надежность релизных процессов для всего стека ПО.

Настройка под любые рабочие процессы

Рабочие процессы тестирования столь же разнообразны, как и само ПО. Управление контейнерами Docker, конфигурирование тестовых окружений, изменение области тестирования с учетом различных параметров и определение критериев качества — вот лишь некоторые из наиболее частых действий, которые выполняются с помощью CI/CD-инструментов. TeamCity поддерживает все эти сценарии, позволяя вам легко настраивать автоматизированные пайплайны под конкретные процессы тестирования.

Интеграция с популярными инструментами сборки и тестирования

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

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

Если вам когда-нибудь приходилось менять CI/CD-инструмент на другой, вы знаете, что на это могут уйти долгие месяцы напряженной работы. Если вы начнете использовать TeamCity, вам больше не придется переходить на другую систему сборки из-за того, что старая перестала справляться с объемом работы. Наше решение способно обрабатывать проекты любого размера и сложности. Например, в JetBrains одной копией TeamCity пользуются более 1000 разработчиков, запускающие параллельно более 5000 сборок.

Повышение продуктивности с помощью подробных отчетов о тестировании

Автоматизация и регулярное выполнение тестов позволяют вам и вашей команде быстро получать обратную связь по изменениям в коде. В результате удается быстрее выявить новые ошибки и устранить их, пока вы хорошо помните, как и какие изменения вносили.

С помощью TeamCity можно настроить автоматическое тестирование в рамках CI/CD-пайплайнов. Результаты тестирования публикуются в реальном времени, гарантируя быструю обратную связь. В случае неудачи TeamCity дает подробную информацию о соответствующих изменениях в коде, предоставляет трассировку стека, логи и артефакты сборки, чтобы можно было сразу начать отладку. Кроме того, решение выделяет неустойчивые тесты и те, которые закончились неудачей в ходе последней сборки. Если какие-то ошибки, найденные при тестировании, были исправлены в более поздних сборках, на страницу результатов тестов автоматически добавляется соответствующая информация.

Результаты тестов можно посмотреть в веб-интерфейсе, получить по электронной почте или в Slack и других мессенджерах, а также настроить их отображение прямо в IDE. Все это позволяет сразу же получить обратную связь по новым изменениям в коде, даже не дожидаясь завершения этапа сборки.

Основные функции автоматизации тестов

Анализ сбоев и покрытия кода

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

Бывает, что преобразовывать сценарий тестирования в шаги сборки TeamCity неэффективно, проще воспользоваться стандартным билд-раннером из командной строки. В этом случае можно добавить к результатам выполнения этого сценария служебные сообщения, информирующие TeamCity о ходе тестирования и позволяющие воспользоваться всеми функциями решения. Например, если TeamCity получит информацию о названиях тестов и продолжительности их выполнения, то сможет рассчитать возможности их параллелизации. Подробнее о служебных сообщениях читайте в документации.

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

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

Мы разрабатываем билд-раннеры для всех распространенных инструментов и языков программирования, включая:

  • Gradle
  • Kotlin
  • Maven
  • .NET
  • Node.js
  • Python
  • и многие другие

Помимо билд-раннеров, которые поддерживает JetBrains, существует больше 100 бесплатных плагинов и многофункциональный API, который позволяет интегрировать TeamCity с вашими собственными инструментами и сценариями.

Параллельное тестирование

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

Подробнее о параллельном тестировании читайте в документации.

Мониторинг производительности

Зачастую сложно понять, насколько аппаратное обеспечение или облачные инстансы, на которых выполняются тесты, подходят для ваших проектов. Функция TeamCity Performance Monitor автоматически собирает статистику производительности ЦП, памяти и жестких дисков и помогает понять, какие узкие места мешают работе пайплайнов.

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

Тестирование кода без коммита в систему контроля версий

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

Самый простой способ протестировать изменения без коммита — использовать функцию Remote Run, которую предлагает плагин TeamCity для IDE на базе IntelliJ и для Visual Studio. Если команда хранит код в Git, можно также создать Git-патч, загрузить его в TeamCity и запустить персональную сборку в интерфейсе TeamCity.

Гибкие настройки автоматизированных пайплайнов

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

Другие возможности TeamCity, которые дополняют процесс тестирования

Автоматическое масштабирование CI/CD-инфраструктуры

При наличии обширной CI/CD-системы, включающей в себя много проектов, может быть сложно рассчитать, сколько билд-агентов необходимо для выполнения сборок и тестов. TeamCity поможет настроить масштабирование CI/CD путем автоматического запуска новых билд-агентов в облаке. Тем самым производительность пайплайнов динамически увеличивается. Поддерживаемые облачные платформы: Amazon EC2, Microsoft Azure, Google Cloud, VMWare vSphere, Kubernetes и другие.

Интеграция с Docker

TeamCity поддерживает и позволяет ускорить все процессы разработки ПО, в которых используюется Docker. Например, решение может запускать тестирование в определенной версии окружения, обеспечивая точные и воспроизводимые результаты, или выполнять интеграционные тесты, требующие управления несколькими Docker-контейнерами. В любых сценариях использования Docker в CI/CD-пайплайнах TeamCity может отслеживать все события, происходящие во время сборки, и готовить отчеты в реальном времени, анализ тестов и другую информацию.

Автоматическое слияние изменений

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

Вопросы и ответы: автоматизация тестирования с помощью TeamCity

Функции параллелизации тестов предоставляются бесплатно?

Да, параллелизация тестов доступна бесплатно во всех версиях TeamCity, включая бесплатную локальную версию. В TeamCity On-Premises можно разделить тесты между тем количеством билд-агентов, которое покрывается приобретенной лицензией.

Какие операционные системы поддерживает TeamCity?

TeamCity поддерживает Windows, Linux и macOS, а также может запускаться в виде Docker-контейнера на любой платформе, поддерживающей среду выполнения Docker. Кроме того, можно использовать управляемый сервис TeamCity Cloud. В этом случае вам не нужно будет его устанавливать и самостоятельно поддерживать.

Может ли TeamCity автоматически перезапускать неудачные тесты?

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

Поддерживает ли TeamCity фреймворки UI-тестирования?

TeamCity — универсальное CI/CD-решение, которое можно использовать с самыми разными инструментами и фреймворками, в том числе и с теми, что предназначаются для тестирования интерфейса. Подробнее об использовании TeamCity для UI-тестирования читайте в нашем блоге.