Автоматизация настольных приложений Windows и непрерывная интеграция Jenkins

контрольная работа

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

Автоматизация настольных приложений обычно относится к приложениям Windows, включая собственные приложения, гибридные приложения, .NET, WPF и т. д., а также к приложениям Java. Этого можно достичь с помощью Jenkins с CukeTest. В дополнение к графическому интерфейсу CukeTest также предоставляет инструменты для запуска из командной строки, поэтому он подходит для автоматизации рабочего стола с помощью Jenkins. Ниже эти два используются для реализации автоматизированного тестирования настольных приложений.

полагаться

окрестности

  • Java8 и выше
  • Windows7 или выше

Подготовка файлов

  • jenkins.war: файл Jenkins WebApplicationARchive (WAR), который можно установить в различных операционных системах с помощью Java. Рекомендуется использовать2.107и выше.

Выполнение

проблема вызывает

Традиционный метод установки регистрирует Jenkins как системную службу, в то время как системная служба Windows будет запущена до входа пользователя в систему, что не совпадает с сеансом рабочего стола после входа пользователя, что приведет к сбою службы Jenkins. управлять рабочим столом после входа в систему.Это также причина, по которой Jenkins в состоянии службы Windows не может напрямую выполнять автоматизацию рабочего стола.

Таким образом, ключ к решению проблемы заключается в том, чтобы позволить Jenkins выполнять боковую операцию и операцию рабочего стола в одном и том же сеансе, что можно сделать двумя способами:

  1. Избегайте регистрации Jenkins в качестве службы: вместо этого используйте командную строку для установки и запуска Jenkins;
  2. Использовать режим Jenkinsmaster/slave: мастер работает как служба Windows, а Jenkinsslave запускается автоматически после входа в систему с использованием запланированных задач Windows.

Установите Дженкинс из командной строки

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

java -jar jenkins.war --httpPort=8090

Чтобы избежать конфликтов портов с экземпляром Jenkins по умолчанию, используйте--httpPortопция устанавливает другой порт прослушивания. Затем откройте браузер и посетите http://localhost:8090, чтобы войти в интерфейс управления Jenkins.Если это первый раз, он войдет в работающий мастер и будет следовать инструкциям для завершения настроек.

Путь к Jenkins, установленному из командной строки:%USERPROFILE%\.jenkins\.

Обратите внимание, что этот метод запускает мастер Jenkins, который является консольной частью.Если это среда исполнителя, подчиненный (называемый агентом в более поздних версиях) должен быть установлен с использованием распределенной среды Jenkins.

Развернуть Jenkins Slave (агент)

Описание ДженкинсаАктуаторТермин в старой документации былslave, который в новом документеagent, все относятся к одному и тому же, что мы вместе называем нижеslave.

В других сценариях мы будем запускать планировщик Jenkins (мастер) на локальном компьютере и запускать определенные тестовые проекты на сервере, что требует развертывания исполнителя Jenkins (подчиненного/агента) способом, аналогичным описанному выше. ). Конкретные шаги см. в «Jenkins: установка главного и подчиненного» [1].

Запустите Jenkins после входа в систему через запланированное задание

Windows предоставляет возможность планировать задачи, вы можете создать запланированную задачу, которая запускается при входе в систему. запускать задачу при ее запуске.batкомандный файл со следующим содержимым:

  • Беги Дженкинсмастер
cd \JenkinsFilePath\
java -jar jenkins.war

  • Запустите Дженкинсраб:
cd \JenkinsFilePath\
java -jar {Slave or Agent .jar File} -jnlpUrl http://{Your Jenkins Server}:{Your Jenkins Port}/computer/{Your Jenkins Node}/slave-agent.jnlp [-secret {Your JenkinsSecret Character}]

Например:

java -jar agent.jar -jnlpUrl http://localhost:8080/computer/Slave1/slave-agent.jnlp -secret e3637f4dfeb6c1bf8298aee7cb56cc4b79f4add79dd19fcd3fdf34fe21772b2f -workDir ""

В приведенном выше примере используется более новая версия Jenkins и, следовательно, используетсяagent.jarЗапустите программу, имя узлаSlave1, а с момента добавленияГлобальная безопасность, поэтому требуется логин для аутентификации в виде строки пароля.

Даже если вы забудете команду запуска Slave, вы можете перейти кManage Nodeстраница для конкретных команд.

использовать

Создайте образец автоматизации рабочего стола

Создайте проект автоматизации рабочего стола, пропустите этот шаг, если у вас есть подходящий проект. Откройте CukeTest, вы можете создатьwindows_controlsпример.

Настроить команды запуска

CukeTest предоставляет интерфейс конфигурации для запуска команд, который помогает генерировать необходимые операторы командной строки. После открытия проекта нажмите кнопку «Запустить проект» в правом нижнем углу панели инструментов.Отредактируйте конфигурацию запуска. Новая конфигурация запускаRunInJenkins,следующее:

  • Название проекта: имя работающей конфигурации;

  • Формат отчета, файл отчета, выходной каталог: параметры, относящиеся к запуску отчета о результатах.

    • Формат отчета: формат файла отчета, выбранный по умолчанию.html,так какCucumberreportsтребуется для создания отчетов.jsonфайл, поэтомуjsonопция отмечена;
    • файл отчета: как называется отчет,使用相同的文件名приведет к перезаписыванию старых файлов отчетов;每次新建文件名Все предыдущие файлы отчетов будут сохранены. Здесь мы выбираембывшийЭто связано с тем, что jenkins поставляется с управлением историей, а один файл отчета полезен для плагина Cucumberreports для создания страниц;
    • выходной каталог: каталог хранения отчета, по умолчанию — корневой каталог проекта.reportsпапка, поэтому модификация не требуется;
  • Фильтр тегов: фильтрует содержимое на основе тегов. Если проект слишком большой, рекомендуется пометить каждую сцену и пропустить через фильтры по отдельности. Чтобы узнать больше о тегах, нажмите «Теги и фильтрация»[2].

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

Пример объекта фристайл

Перед выполнением следующей операциипредположениеУстановить первымCucumber reportsПлагин для разбора и отображения отчетов о прогонах.

Чтобы создать новый проект Freestyle Object в Jenkins, мы добавляем два шага командной строки к ссылке Build и выполняем следующие два шага:

  1. Скопируйте файл проекта в рабочую область Jenkins;
  2. использоватьcukeкоманда для запуска проекта;

Таким образом, содержание двух шагов командной строки:

xcopy C:\Program File\cuke\windows_controls /S /Y

chcp 65001 && cuke --run --format html --format json --overwrite --no-color

Благодаря ДженкинсуConsole OutputФормат отображения — обычный текст, а стиль вывода командной строки не может быть отображен, что приведет к искажению идентификатора стиля, поэтому добавьте команду cuke после команды--no-colorопции.

Конфигурация выглядит следующим образом:

Добавьте визуальный отчет о прогоне

На этапе Post Build можно добавить шаг отчетов Cucumber для создания визуального текущего отчета.

В «Расширенной» конфигурации отчетов Cucumber установите шаблон включения файлов, который используется для создания отчета..jsonПуть к файлу, здесь указываем как*/reports/*.json, чтобы избежать совпадения сpackage.jsonПроизошла ошибка в файле.

Пример конвейерного проекта

Использование проекта Pipeline аналогично, просто используйте синтаксис конвейера, чтобы включить шаги из предыдущего раздела, а именно:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                bat 'xcopy C:\Program File\cuke\windows_controls /S /Y'
            }
        }
        stage('Test'){
            steps {
                bat 'chcp 65001 && cuke --run --format html --format json --overwrite --no-color'
            }
        }
        stage('Cucumber Report'){
            steps {
                cucumber buildStatus: "UNSTABLE",
                    fileIncludePattern: "**/reports/*.json",
                    jsonReportDirectory: "reports"
            }
        }

    }
}

бегать

Нажмите «Создать сейчас», чтобы запустить и заметить настольное приложение.Simple Style.exeНачните плавно и начните выполнять автоматизацию, вы можете просмотреть ее в левой части Jenkins после завершения.Cucumber reports, интерфейс отчета выглядит следующим образом:

О стилях отчетов: возвращен результат запуска CukeTest.jsonфайл, поэтому вы можете использовать пользовательские стили для удовлетворения потребностей в отчетах на основе результатов выполнения.

Суммировать

Для двух методов Jenkins, описанных выше, рекомендуется выбирать ведущий/подчиненный. Мастер может работать на любой платформе, даже на Linux. Ведомый может работать в Window в соответствии с потребностями автоматизации. Но CukeTest работает не только в Windows, он также может выполнять автоматические тесты в Linux или Mac. Таким образом, вы можете настроить подчиненные Jenkins на нескольких платформах по мере необходимости и выполнять автоматические тесты на разных платформах по мере необходимости.Если ваш проект еще не автоматизирован, попробуйте!

использованная литература

[1] «Дженкинс: установить ведущий и подчиненный»:В/Страх/…
[2] Маркировка и фильтрация:*Woohoo. Уксус может test.com/this-talent/feat U…