Android in Virtual Box


(Alexander Zhovnuvaty) #1

Привет, у нас на проекте есть автоматизация - тестируем веб сайт продукта и его мобильную веб версию (тесты для мобильного сайта запускаются на ФФ со специфическим User-Agent Header). Используем python + Selenium Grid + PageObjectPattern. В общем обычный набор.

От заказчика поступила команда выполнения автоматизации под Андроид (проверка мобильной версии). Думаем использовать Андроид ОС на виртуальных машинах (Virtual Box). Пока не ясно сможет ли это работать вместе, стабильно и удобно. Исходя из этого есть несколько вопросов:

  • Можно ли запускать селениум тесты на Андроид ВМ? (Попробовал, пока не получилось. Запускается на эмуляторе селендроидом. И то как-то не стабильно).
  • На сколько сложно мейнтейнить набор Андроид ВМн, и на сколько это реально? (На первый взгляд кажется что с этим больше проблем чем пользы. И запуск тестов на ФФ со специфичным хидером будет проще и стабильнее).
  • На сколько может отличатся время выполнения одного и того же теста на Андроид ВМе по сравнению с Линукс ВМой через Grid/RemoteWebDriver с использованием ФФ.
  • Есть ли разница в скорости работы Google Android Distro и кастомной сборки Андроид ОС?
  • Есть ли технические требования к серверу на которой работает Андроид ВМ - которые могут ускорить работу этой ВМ?
  • На сколько результаты тестов могут разнится если мы их запускаем на а) Линукс ВМ с ФФ со специфичным хидером и б) Андроид ВМ.

То есть стоит насущный вопрос "купатся или не купатся..." smile

Заранее спасибо!


(Максим Таран) #2

А не проще под эмулятором?


(Alexander Zhovnuvaty) #3

Вполне возможно что под эмулятором будет проще. Но просто так предложить заказчику идти таким путем не совсем правильно. Мы же професионалы и не можем сказать "Эй чувак, то что ты предлагаешь не прокатит, давай сделаем по другому..." 8). Нам надо объяснить почему другой вариант лучше. Например:
- мы попробовали - не получилось;
- нет людей с соотв. опытом с которыми можно прокансультироватся;
- более природный вариант использовать эмулятор.
- и т.д.

Но в таком случае вопросы остаются те же только про эмулятор:

  • Можно ли запускать селениум тесты на Андроид Эмулятор? (Можно. Лучше всего юзать в связке с Селендроид?).
  • На сколько сложно мейнтейнить набор Андроид Эмуляторов, и на сколько это реально? (Не могу ответить - опыта такого нет).
  • На сколько может отличатся время выполнения одного и того же теста на Андроид Эмуляторе по сравнению с Линукс ВМой через Grid/RemoteWebDriver с использованием ФФ? (То же самое)
  • Есть ли разница в скорости работы Google Android Distro и кастомной сборки Андроид ОС? (Не уверен актуален ли этот вопрос в таком изложении)
  • Есть ли технические требования к серверу на которой работает Андроид Эмулятор - которые могут ускорить работу этой ВМ? (Поддержка виртуализации? Что еще?)
  • На сколько результаты тестов могут разнится если мы их запускаем на а) Линукс ВМ с ФФ со специфичным хидером и б) Андроид Эмуляторе (Кста, еще интересно мнение кто знает на сколько можно полагатся на результаты полученные на эмуляторе?).

(Максим Таран) #4

Дык, в том-то и дело, что если запускать андроид на виртуалке, то никаких гарантий нет, так как нет эмуляции сответсвующего железа, взаимодействия с ним и всё такое. Скорость работы в данном контексте я бы вообще не рассматривал. Это можно смотреть только на реальном железе. Настраивать эмуляторы в Google Sdk элементарно с различным набором железа, функциональности и так далее. А вот как это делать под Virtual Box - не представляю.

Но на selenium вообще не уверен, что можно это тестировать. Он, всё же для веба. smile
Да, кстати. По поводу аппаратной поддержки андроида. Она реализована интелом для андроида от 4 версии, если не ошибаюсь.

При подключении специального интеловского драйвера скорость работы, практически в реальном времени на x86 процессорах.


(Alexander Zhovnuvaty) #5

По поводу скорости в данном случае интересовало - что быстрее: тест на ФФ на Линукс ВМ или тот же тест на эмуляторе? Имеется ввиду что если те тесты которые мы сейчас запускаем на ФФ будут бегать дольше на эмуляторе раз в 10, то смысла переезжать особого нет. Ибо нам результаты тестов нужны как можно быстрее.

Нам именно и надо веб тестировтаь на эмуляторе. То есть я так предполагаю - взять существующие тесты на селениум (вебдрайвер на пайтоне) и запустить их на эмуляторе с помощью селендроида - предполагаю что должно получится?


(Максим Таран) #6

Не понял причём тут Linux VM, если надо андроид? smile Не уверен, что просто так получится на эмуляторе запустить selenium... как минимум надо будет его пересобирать под dalvik. Как-то шаманить, чтобы он запускал браузер. Боюсь не так всё просто. Возьмите Opera. Там есть режим закоса под мобильный браузер.


(Alexander Zhovnuvaty) #7

Линукс имеется ввиду - мы на нем запускаем селениум тесты для проверки мобильной версии сайта (в профайле ФФ браузера меняем User-Agent Header на один из андроида). И тест работает с браузером как на андроиде. Но заказчик хочет что бы тесты бегали на самом андроиде.

Почему не получится? Селендроид же поддерживает тот же АПИ что и селениум.

То есть если написать такое:

driver = webdriver.Remote(command_executor="http://localhost:8080/wd/hub", desired_capabilities=DesiredCapabilities.ANDROID)
driver.get("http://google.com")
inputElement = driver.find_element_by_name("q")
inputElement.send_keys("Cheese!")
inputElement.submit()

тогда по идее оно должно будет выполнится?


(Максим Таран) #8

Не знаю, надо попробовать. Ну лучше тогда точно на эмуляторе с включённой поддержкой x86. Всё-таки линукс - это линукс, а андроид - это андроид. smile


(Alexander Zhovnuvaty) #9

Спс! На том и порешили:)