HeadlinesBriefing HeadlinesBriefing.com

E2exe: автоматизация Windows-приложений в масштабе

Hacker News •
×

Тестирование настольных приложений Windows уже давно входит в число самых востребованных у клиентов возможностей, поскольку ни у кого не было инфраструктуры, чтобы каждый месяц параллельно запускать тысячи таких тестов. Тестирование веб-приложений проще: безголовый браузер запускается в контейнере Linux за считанные секунды, стоит долю цента и удаляется по окончании теста. Для тестирования настольных приложений Windows аналога нет. Каждому тесту нужна полноценная виртуальная машина, поскольку в контейнерах Windows нет графического рабочего стола. Холодный запуск виртуальной машины Windows занимает от 2 до 3 минут, и в системе должен быть выполнен вход пользователя, так как автоматизация интерфейса Windows работает только в активном сеансе рабочего стола. Кроме того, между запусками машины сохраняют установленные файлы, разделы реестра, профили пользователей и сохранённые учётные данные, а каждое приложение приносит собственные установщики, запросы администратора и диалоги первого запуска. Удалённые машины Windows не предоставляют встроенных трассировок, журналов или скриншотов, а большая часть тестовой инфраструктуры изначально создавалась вокруг Linux.

Ответом команды стало отношение к машинам Windows как к телефонам: устройство, которое один тест занимает, использует один раз и затем выбрасывает. Архитектура заимствует подход из инфраструктуры мобильного тестирования. Пользовательский планировщик устройств в Kubernetes выдаёт виртуальную машину Windows в Google Compute Engine через запрос устройства (Device Claim), а тест управляет ею удалённо с помощью WebdriverIO и Appium. Модель устройств пришлось расширить двумя способами: устройства могут находиться за пределами кластера, а запросы могут возвращать адреса подключения к рабочему столу, включая CDP для браузеров.

Система состоит из трёх частей: контроллера, который поддерживает пул прогретых виртуальных машин Windows, пода-исполнителя на Linux, который выполняет код теста, и самой виртуальной машины Windows, на которой работают тестируемое приложение и небольшой агент рабочего стола. Исполнитель подключается через CDP Playwright к содержимому браузера, через Appium к нативным приложениям и через поток WebRTC, который позволяет наблюдать за тестами в реальном времени и просматривать записи после их завершения.

Каждая виртуальная машина одноразовая. Никто не входит в неё, не устанавливает обновления и не держит её запущенной неделями: после использования её заменяет новая машина.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing