Рекомендации по тестированию пользовательского интерфейса
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
При выполнении автоматических тестов в конвейере CI/CD может потребоваться специальная конфигурация для тестирования пользовательского интерфейса, например с помощью Selenium, Appium или Coded. В этой статье описываются типичные рекомендации по выполнению тестов пользовательского интерфейса.
Предварительные условия
Ознакомьтесь с агентами и развертыванием агента в Windows.
Режим без головы или видимый режим пользовательского интерфейса?
При запуске тестов Selenium для веб-приложения можно запустить браузер двумя способами:
Безэкранный режим. В этом режиме браузер работает как обычный, но без видимых компонентов пользовательского интерфейса. Хотя этот режим не полезен для просмотра в Интернете, он полезен для выполнения автоматических тестов в автоматическом режиме в конвейере CI/CD. Браузеры Chrome и Firefox можно запускать в режиме без головы.
Этот режим обычно потребляет меньше ресурсов на компьютере, так как пользовательский интерфейс не отображается и тесты выполняются быстрее. В результате потенциально больше тестов можно выполнять параллельно на одном компьютере, чтобы сократить общее время выполнения теста.
Снимки экрана можно записать в этом режиме и использовать для устранения неполадок.
Примечание.
Браузер Microsoft Edge в настоящее время не может быть запущен в режиме без головы.
Режим видимого пользовательского интерфейса. В этом режиме браузер работает обычно и компоненты пользовательского интерфейса видны. При выполнении тестов в этом режиме в Windows требуется специальная настройка агентов .
Если вы выполняете тесты пользовательского интерфейса для классического приложения, например тесты Appium с помощью WinAppDriver или закодированных тестов пользовательского интерфейса, требуется специальная конфигурация агентов .
Совет
Комплексные тесты пользовательского интерфейса обычно обычно выполняются долго. При использовании видимого режима пользовательского интерфейса в зависимости от платформы тестирования вы можете не выполнять тесты параллельно на одном компьютере, так как приложение должно находиться в фокусе для получения событий клавиатуры и мыши. В этом сценарии можно ускорить циклы тестирования, выполняя тесты параллельно на разных компьютерах. Просмотрите выполнение тестов в параллельном режиме для любого средства тестирования и выполнение тестов в параллельном режиме с помощью задачи Visual Studio Test.
Тестирование пользовательского интерфейса в видимом режиме пользовательского интерфейса
Для выполнения тестов пользовательского интерфейса в видимом режиме пользовательского интерфейса требуется специальная конфигурация.
Видимое тестирование пользовательского интерфейса с помощью агентов, размещенных майкрософт
Видимое тестирование пользовательского интерфейса не поддерживается в агентах, размещенных корпорацией Майкрософт. Тест завершается сбоем с сообщением об ошибке "элемент недоступен для взаимодействия". Агенты, размещённые на серверах Майкрософт, поддерживают тестирование браузеров без графического интерфейса.
Тестирование UI в безинтерфейсном режиме с помощью агентов, размещенных на платформе Microsoft
Агенты, размещенные корпорацией Майкрософт, предварительно настроены для тестирования пользовательского интерфейса и тестов пользовательского интерфейса для веб-приложений. Агенты, размещенные корпорацией Майкрософт, также предварительно настроены с популярными браузерами и соответствующими версиями веб-драйверов, которые можно использовать для выполнения тестов Selenium. Браузеры и соответствующие веб-драйверы обновляются периодически. Дополнительные сведения о выполнении тестов Selenium см. в разделе "Тест пользовательского интерфейса" с selenium.
Видимое тестирование пользовательского интерфейса с помощью локальных агентов Windows
Агенты, настроенные для запуска от имени службы, могут выполнять тесты Selenium только с помощью браузеров без головы. Если вы не используете безголовый браузер или запускаете тесты пользовательского интерфейса для настольных приложений, агенты Windows должны быть настроены для запуска в качестве интерактивного процесса с включенным автологоном.
При настройке агентов при появлении запроса на запуск от имени службы нажмите кнопку "Нет". Последующие шаги позволяют настроить агент с помощью автоматического входа. При выполнении тестов пользовательского интерфейса приложения и браузеры запускаются в контексте пользователя, указанного в параметрах автолога.
Если вы используете удаленный рабочий стол для доступа к компьютеру, на котором работает агент с автовходом, то, если просто отключить удаленный рабочий стол, компьютер будет заблокирован, и любые тесты пользовательского интерфейса, которые выполняются на этом агенте, могут завершиться ошибкой. Чтобы избежать сбоя, используйте команду tscon на удаленном компьютере, чтобы отключиться от удаленного рабочего стола. Например:
%windir%\System32\tscon.exe 1 /dest:console
В этом примере номер 1 является идентификатором сеанса удаленного рабочего стола. Это число может измениться между удаленными сеансами, но можно просмотреть в диспетчере задач. Кроме того, чтобы автоматизировать поиск текущего идентификатора сеанса, создайте пакетный файл, содержащий следующий код:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Сохраните пакетный файл и создайте ярлык рабочего стола, а затем измените свойства ярлыка на "Запуск от имени администратора". При запуске пакетного файла через этот ярлык происходит отключение от удаленного рабочего стола, но сохраняется сеанс пользовательского интерфейса, и становятся возможны тесты пользовательского интерфейса.
Агенты развертывания в виртуальных машинах Azure для тестирования интерфейса пользователя
Если вы подготавливаете виртуальные машины (VMs) в Azure, конфигурация агента для тестирования пользовательского интерфейса доступна с помощью артефакта агента для DevTest Labs.
Настройка разрешения экрана
Перед выполнением тестов пользовательского интерфейса может потребоваться настроить разрешение экрана, чтобы приложения отображались правильно. Для этого в Marketplace доступна утилита разрешения экрана. Используйте эту задачу в конвейере, чтобы задать разрешение экрана значением, которое поддерживается компьютером агента. По умолчанию эта программа устанавливает разрешение на оптимальное значение, поддерживаемое компьютером агента.
Если возникают сбои при выполнении задачи настройки разрешения экрана, убедитесь, что агент настроен для запуска с включенным автоматическим входом в систему и что все сеансы удаленного рабочего стола безопасно отключены с помощью команды tscon, как описано выше.
Примечание.
Служебная программа разрешения экрана выполняется в едином агенте сборки или выпуска или тестирования и не может использоваться с нерекомендуемой задачей запуска функциональных тестов. Задача разрешения также не работает для виртуальных машин Azure.
Устранение неполадок в тестах пользовательского интерфейса
При выполнении тестов пользовательского интерфейса в автоматическом режиме запись диагностических данных, таких как снимки экрана или видео, полезна для обнаружения состояния приложения при обнаружении сбоя.
Сделать снимки экрана
Большинство платформ тестирования пользовательского интерфейса предоставляют возможность записывать снимки экрана. Собранные снимки экрана доступны в виде вложения к результатам теста при публикации этих результатов на сервере.
Если вы используете задачу тестирования в Visual Studio для запуска тестов, добавьте снятые снимки экрана в качестве файла результата, чтобы они были доступны в тестовом отчёте. Для этого используйте следующий код:
Сначала убедитесь, что TestContext определен в тестовом классе. Например: public TestContext TestContext { get; set; }
Добавление файла снимка экрана с помощью TestContext.AddResultFile(fileName); //Where fileName is the name of the file.
Если вы используете задачу "Опубликовать результаты теста" для публикации результатов, вложения результатов теста можно публиковать только в том случае, если используется формат результатов VSTest (TRX) или формат результатов NUnit 3.0.
Вложения результатов тестов JUnit или xUnit не могут быть опубликованы. Это связано с тем, что эти форматы результатов теста не имеют формального определения для вложений в схеме результатов. Вместо этого можно использовать один из приведенных ниже подходов для публикации тестовых вложений.
При выполнении тестов в конвейере сборки (CI) можно использовать задачу "Копирование и публикация артефактов сборки " для публикации всех файлов, созданных в тестах. Они отображаются на странице Артефакты в сводке сборки.
Используйте REST API для публикации необходимых вложений. Примеры кода можно найти в этом репозитории GitHub.
Запись видео
Если вы используете задачу тестирования Visual Studio для выполнения тестов, видео теста может быть записано и автоматически доступно в виде вложения к результату теста. Для этого необходимо настроить сборщик видеоданных в файле runsettings, а этот файл должен быть указан в параметрах задачи.
Справка и поддержка
- См. нашу страницу по устранению неполадок
- Получите советы по Stack Overflow и получите поддержку через Сообщество разработчиков