Виртуальные мобильные устройства - это проект Vente-privee инновационной лаборатории EITECH. Его разработали шесть наших студентов во время стажировки в лаборатории: Клара ЖИРАР, Николя Менеттриер, Джонатан БИБАС, Клеман КАРЕСМА, Бенджамин ГУАРИЛЬЯ и Гийом ВЕРНЕРЕ; и их наставник Джимми РАМОС!

Но сначала, что такое виртуальные мобильные устройства и почему?

Вы когда-нибудь тратили много времени, пытаясь одолжить телефон для тестирования приложения? Мол, вам нужна конкретная модель, но… очень жаль, что у вашей компании ее нет. Вы когда-нибудь просили телефон, но кто-то одолжил его и потерял телефон?

Virtual Mobile Devices - это новый мобильный центр vente-privee, который решит все ваши проблемы: он позволит сотрудникам vente-privee использовать смартфоны, сенсорные панели и т. Д. Без необходимости брать их физически и, возможно, сломать или потерять. Это оптимизирует использование этих устройств, а также снизит стоимость покупки тех же устройств для каждой команды.

Проект представляет собой веб-приложение, доступное, в первую очередь, авторизованным сотрудникам с их учетной записью в Active Directory, что позволяет им легко управлять устройствами. Они смогут загружать приложение, которое будет установлено непосредственно на устройстве для тестирования своих приложений, предварительного просмотра и т. Д.… Это несколько устройств, доступных для одновременного доступа нескольких пользователей.

Архитектура

Архитектура проекта состоит из 3 основных частей: клиента, менеджера сервера и серверов (или коннекторов). Эти 3 части взаимодействуют вместе благодаря socket.io

Клиент

Клиент создан на ReactJS и в основном состоит из двух частей: главной страницы (визуализация устройства) и левой панели, которая содержит «Инструменты» для взаимодействия с устройством.
Для доступа к проекту веб-сайт, пользователь должен быть зарегистрирован в базе данных MySQL, которая отвечает за ссылки на всех авторизованных пользователей и администраторов.

Диспетчер серверов

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

Серверы (коннекторы)

Серверы сделаны с помощью NodeJS с Express, все устройства подключены к серверу (Mac OS для устройств iOS и Ubuntu для устройств Android). Каждый сервер подключен к диспетчеру серверов, который перенаправляет клиента на запрошенное устройство.

Мы использовали проект Minicap и Appium для управления различными устройствами, Minicap - это проект с открытым исходным кодом на C ++, созданный sorccu.

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

С другой стороны, мы используем Minicap для получения видеопотока с устройства оптимизированным способом.

Эмулятор

Virtual Mobile Devices также позволяет пользователю создавать эмуляторы всевозможных моделей телефона и тачпада.

Эта функция позволяет избежать получения всех потенциальных конфигураций и моделей устройств. Мы использовали avdmanager для работы с эмуляторами, когда администратор создает эмулятор, информация (снова) отправляется через сокет на первый доступный сервер, который создаст запрошенный эмулятор на себе и обновит список устройств клиента, чтобы позволить клиенту использовать вновь созданный эмулятор.

Эмулятор работает так же, как и любое другое устройство с Appium и Minicap, поэтому мы можем нормально взаимодействовать с ним.
Эти виртуальные образы могут быть созданы только администраторами, чтобы избежать их множества: для эмуляторов требуется много RAM, поэтому администраторы будут нести ответственность за ограничение перегрузки RAM.

Как разные части взаимодействуют друг с другом?

Как видно из этой истории, мы используем розетки! Благодаря socket.io все эти разные части могут обмениваться данными.

Давайте рассмотрим базовый пример события касания: во-первых, когда клиент обнаруживает щелчок мыши, он отправляет информацию с выбранным событием устройства (здесь событие касания с правильными значениями x и y). Эта информация поступит прямо в диспетчер серверов, который направит этот сигнал на правильный сервер.

На сервере информация обрабатывается, и библиотека Appium будет использоваться для преобразования этого события в действие, выполняемое непосредственно на телефоне. Мы используем этот шаблон для каждого события устройства.

Виртуальные мобильные устройства в двух словах

Виртуальные мобильные устройства - это новый мобильный центр, который будет использоваться сотрудниками Vente-privee, чтобы избежать различных проблем с реальными устройствами (необходимость брать их, возможно, потерять, сломать и т. Д.). Он будет отображаться как веб-сайт, который позволяет вам удаленно управлять телефоном и тестировать все возможные приложения, которые вы хотите. Это также дает вам возможность использовать эмулятор в случае, если телефон недоступен как реальное устройство.

Мы планируем установить инструменты тестирования по умолчанию, чтобы упростить тестирование приложений со сценариями Gherkin.