Одной из важнейших составляющих конвейера непрерывной интеграции и непрерывного развертывания (CI/CD) является непрерывное тестирование, которое очень сложно автоматизировать. Jenkins — это популярный инструмент с открытым исходным кодом для непрерывной интеграции (CI), который используется для автоматического тестирования и развертывания вашего кода.
Одним из преимуществ Jenkins является его гибкость. Однако это также может быть и его недостатком. Решение о том, какие методологии, плагины и инструменты использовать в паре с Jenkins, может оказаться непростым. Из этой статьи вы узнаете о том, как лучше всего использовать Jenkins и как его настроить.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Что собой представляет Jenkins?
Jenkins – это сервер автоматизации, который можно использовать для управления всеми этапами CI/CD. Благодаря поддержке множества тестовых фреймворков, плагинов и инструментов автоматизации, Jenkins также можно использовать для разработки и запуска автоматизированных тестов. Он выполняет тесты, а затем собирает информацию о найденных сбоях и ошибках.
У Jenkins полностью открытый исходный код, и он очень легко настраивается. У него есть удобный графический интерфейс для управления всеми процессами. Кроме того, его можно интегрировать с современными программами для совместной работы, такими как Microsoft Teams, Asana и Slack.
С помощью Jenkins вы можете планировать тесты (по времени) или запускать их по какому-либо условию, например, при успешном завершении сборки. Он также совместим со множеством инструментов управления исходным кодом и контроля версий, таких как Git, GitHub, и Azure DevOps Team Foundation.
Это лишь некоторые из возможностей автоматизации тестирования с помощью Jenkins.
Внедрение автоматизации тестирования с помощью Jenkins
Первым дело вам необходимо установить Jenkins. Для этого у вас должно быть:
- Достаточно места на жестком диске и не менее 256 МБ оперативной памяти
- установленный и настроенный Maven в вашей локальной системе
- OpenJDK JDK 17 (64 бит)
- Git, установленный локально
- Репозиторий GitHub с хотя бы одним проектом
В этом туториале вы будете использовать плагин Sauce Labs для внедрения автоматизации тестирования в ваш CI/CD-конвейер на базе Jenkins. Этот плагин упрощает настройку тестов, размещенных в Sauce Lab.
Чтобы интегрировать Sauce Labs с Jenkins, вам понадобится следующее:
- Аккаунт в Sauce Labs
- Имя пользователя аккаунта в Sauce Labs, ключ доступа и OnDemand URL
Настройка Java для Jenkins
Мы рассмотрим, как настроить Jenkins для компьютеров с операционной системой Windows, но эти концепции в некоторой степени применимы и к другим операционным системам.
Сперва вам необходимо загрузить и установить Java Development Kit (JDK). Jenkins совместим только с 64-битными версиями JDK 11 и 17.
Затем нужно установить необходимые переменные окружения.
Настройка и установка Jenkins для Windows
Перейдите на страницу загрузки и скачайте Jenkins для Windows:
Затем воспользуйтесь официальной документацией Jenkins, чтобы настроить и установить его на вашем компьютере с Windows.
Запуск и использование Jenkins
Чтобы использовать Jenkins, запустите ваш браузер и перейдите по адресу http://localhost:8080/.
Прочитайте инструкции на экране, чтобы найти свой пароль администратора. Введите его и нажмите Continue (Продолжить).
Загрузка Jenkins займет несколько минут. Убедитесь, что вы подключены к интернету, а ваш брандмауэр не блокирует загрузку.
После успешной загрузки вы попадете на экран настройки, где сможете добавить плагины. Если вы впервые используете Jenkins, нажмите на Install suggested plugins. Вы можете заметить, что среди предложенных плагинов есть Git. Он понадобится вам позже для управления версиями.
После завершения установки Jenkins попросит вас создать первого пользователя-администратора. После заполнения формы нажмите кнопку Save and Continue (Сохранить и продолжить).
Вам будет предложено настроить URL-адрес Jenkins, но оставьте его как есть и выберите Save and finish (Сохранить и завершить). После нажатия на кнопку Start using Jenkins вы сможете настроить и интегрировать Git с Jenkins.
Добавление плагина Sauce Labs OnDemand в Jenkins
После того, как Jenkins будет готов к использованию в первый раз, он перенаправит вас на панель управления на главной странице.
Выберите Manage Jenkins на панели слева:
Далее выберите Manage Plugins:
Далее нажмите на Available plugins на левой боковой панели и введите “Sauce OnDemand” в строку поиска. В списке результатов установите флажок напротив Sauce OnDemand и выберите Install without restart (Установить с без перезагрузки).
Перезапустите Jenkins после установки всех плагинов.
Создание учетных данных Sauce Labs
Чтобы найти свои учетные данные Sauce Labs, нажмите на значок учетной записи, расположенный на верхней панели инструментов, и выберите User Settings из выпадающего меню:
Обязательно сохраните имя пользователя (username), ключ доступа (access key) и OnDemand URL.
Чтобы полностью интегрировать Jenkins с плагином Sauce Labs OnDemand, вам нужно создать учетную запись Jenkins Sauce Labs. А поскольку вы только что перезапустили Jenkins, вам может потребоваться снова войти в систему.
После повторного входа в систему выберите Manage Jenkins на левой боковой панели. Затем прокрутите страницу вниз до раздела Security и нажмите на Manage Credentials:
Выберите System под Stores scoped to Jenkins:
И нажмите на ссылку Global credentials:
Затем нажмите на Add Credentials и выберите “Sauce Labs”.
Оставьте параметр Scope как есть и введите имя пользователя и ключ доступа из вашей учетной записи Sauce Labs.
Выберите Sauce Data Center и оставьте ID пустым (Jenkins создаст его за вас). Поле Description также можно оставить пустым. Далее нажмите на Create:
Если вы вернетесь к экрану Credentials Management, то увидите, что Jenkins создал учетную запись Sauce Labs.
Создание теста
Это руководство содержит образец репозитория с простым примером на Java. Он использует Sauce Labs для перехода на сайт https://www.saucedemo.com и проверки его названия. Два наиболее важных файла в репозитории – это pom.xml и test class.
Так как тест выполняется с использованием Maven, в файле pom.xml
содержится список всех необходимых зависимостей Sauce Labs и Selenium для правильной работы теста.
Склонируйте репозиторий и добавьте ваш URL OnDemand в эту часть кода:
/* * OnDemand URL found under User Settings in Account Settings * The following is just an example, add your own URL */ // URL url = new URL("<SAUCE_USERNAME>:<SAUCE_ACCESSKEY>@ondemand.eu-central-1.saucelabs.com:443/wd/hub"); URL url = new URL(ON_DEMAND); //Replace ON_DEMAND with your onDemand URL here or the test will not work
Интеграция Git с Jenkins
После того, как вы создали свою учетную запись, вернитесь на панель управления и выберите Create a job в разделе Start building your software project:
Введите название вашего проекта в поле Item name field и выберите Freestyle Project. Затем нажмите на кнопку OK в нижней части экрана:
Jenkins потребует от вас ввести некоторые подробности о вашем проекте. Введите простое описание, например “Простой тестовый проект”. Затем перейдите на вкладку Source Code Management на левой панели:
Нажмите на кнопку Git, в результате чего откроется новая форма, в которой вам будет предложено добавить информацию о вашем Git-репозитории. Вставьте ссылку на ваш репозиторий GitHub в поле Repository URL. Затем нажмите на кнопку + Add, после чего откроется небольшое всплывающее окно Jenkins:
Оставьте поля Domain, Kind и Scope как есть, и введите имя пользователя GitHub и пароль в соответствующие поля. Затем прокрутите страницу вниз и нажмите на Add:
После этого вы попадете на экран настройки, где вам нужно развернуть выпадающее поле в разделе Credentials и выбрать свои учетные данные GitHub.
Прокрутите вниз до раздела Branches to build. Там вы увидите, что в настоящее время значением по умолчанию является /master
. Удалите это значение, и тогда Jenkins будет вынужден сканировать все ветки в репозитории. Если вы хотите, чтобы Jenkins отслеживал только определенную ветку, вы можете добавить сюда ее относительный путь (например, /main
).
Далее прокрутите страницу вниз до раздела Build Environment и установите флажок на Sauce Labs Support, в результате чего откроется новая форма. Оставьте поле Enable Sauce Connect неотмеченным и щёлкните по выпадающему списку Credentials, выбрав ваши учетные данные Sauce Labs из списка:
Далее щелкните на поле WebDriver. Появится выпадающее меню со списком различных браузеров. Выберите браузеры, которые вы планируете использовать для тестирования. В этом примере используется последняя версия Microsoft Edge для Windows 10:
Затем установите флажок на Use latest version of selected browsers.
Оставьте все остальное как есть и прокрутите страницу вниз, пока не увидите раздел Build Steps.
Щелкните на Add build step и в выпадающем меню выберите Execute Windows batch command:
Должна появиться новая форма с текстовой областью и несколькими элементами управления. Сначала убедитесь, что все необходимые зависимости загружены и добавлены для теста. Затем введите в текстовую область команду mvn dependency:resolve
.
Добавьте еще один шаг Execute Windows batch command, который будет использоваться для проверки правильности добавления ссылок. Для этого введите в текстовую область шага сборки команду mvn test-compile
.
В последнем шаге мы запустим тест. Как и в предыдущих шагах, добавьте еще одну команду Windows batch execution и добавьте в текстовую область mvn test
.
Раздел с шагами сборки должен выглядеть примерно так:
Теперь прокрутите страницу вниз и нажмите на Save. Это перенаправит вас на экран информации о конвейерах, где вы сможете запустить свой конвейер Jenkins, выполнить сборку и активировать тест. Нажмите на Build Now, чтобы запустить конвейер.
Щелкнув на сборку в разделе Build History, вы перейдете на экран свойств сборки.
На этом экране можно просмотреть все детали сборки. Лучший способ просмотреть детали каждого шага сборки – это выбрать вкладку Console Output:
Отсюда можно просмотреть вывод консоли в виде обычного текста и скачать его. Затем вы можете использовать текстовый редактор, чтобы просмотреть информацию.
Вы также можете просмотреть более подробную информацию о сборках и тестах на панели инструментов вашего аккаунта Sauce Labs. На панели слева в разделе Automated нажмите на Test Results. На главной странице появится список всех запущенных вами тестов. Если вы нажмете на последний из них, вы увидите примерно следующее:
На этом экране вы можете увидеть все команды, которые выполнял ваш тест. Вы также можете просмотреть видео, как тест проходит на сервере Sauce Labs. Кроме того, вы можете ознакомиться с логами:
Что касается Jenkins, то вы можете добавить особые действия после сборки, такие как создание отчетов или сборка мусора. Кроме того, можно добавить триггеры сборки, которые будут автоматически запускать конвейер за вас, позволяя выполнять более сложные автоматизированные тесты.
Заключение
Благодаря Jenkins, автоматизировать процесс тестирования и сборки приложения стало проще простого. Но не каждый инструмент, который вы интегрируете с Jenkins, так же прост в работе. Организация эффективного тестирования может быть сложной задачей, особенно если вы пытаетесь использовать инструмент, который не имеет встроенной поддержки Jenkins (в виде плагина).
Перевод статьи «How to Use Jenkins For Test Automation».