Как стать автором
Обновить

Как настроить расширяемую систему для регрессионного тестирования на телефонах: опыт мобильной Почты Mail.Ru

Время на прочтение10 мин
Количество просмотров19K
Всего голосов 53: ↑52 и ↓1+51
Комментарии26

Комментарии 26

НЛО прилетело и опубликовало эту надпись здесь
У нас есть видео:

НЛО прилетело и опубликовало эту надпись здесь
Почему на всех телефонах заклеены фронтальные камеры (если это они)?
Просто наклейки с нумерацией устройств, камеры нам нужны рабочие.
> на телефоне стоит версия Андроида, максимально близкая к стоковой
Скажите, почему этот критерий для вас оказался важен? Сталкивался с багами, которые воспроизводились только, например, на самсунгах с TouchWiz
Да, многие любят вносить в андроид изменения. У нас тоже есть различные устройства самых популярных производителей, просто основная масса телефонов у нас всё-таки на стоке. Совсем широкий спектр моделей для автотестов выделить не получается — если какой-то элемент интерфейса используется в автотесте — это означает, что на него нужен свой код. Тесты, в которых мы перемещаемся только по своему приложению — пожалуйста, работают на любом телефоне. Если есть время и ресурс на реализацию автотестов на разных кастомизациях андроида — это здорово, можно брать разные телефоны.
Отличная статья, спасибо! Расскажите как вы измеряете энергопотребление, а именно ток с батарейки? С точки зрения регрессии это важная метрика. Или вы измеряете ее косвенно?
Насчет точного измерения не скажу, но при прогоне можно банально собирать batterystats (и отображать в отчетах, как здесь), большую проблему точно не пропустите.
Спасибо большое за статью!
А на чем у вас базируются сами тесты? Appium или что-то еще пробовали?
Не сталкивались ли с тем, что через USB хаб тесты работают нестабильно, а телефоны периодически отваливаются?
Robotium, UiAutomator (1,2), Espresso.

У нас телефоны в свое время отваливались по многим причинам. Вы пробовали выяснить в чем проблема? У вас может умирать adb, могут сами девайсы «плохо» себя вести, может «плохо» себя вести usb. Как минимум, в статье я описываю как запустить контейнер, в каждом контейнере свой инстанс adb, так что если проблема в нем, то будет проще ее локализовать и все телефоны сразу не отвалятся. На тему ошибок usb — попробуйте почитать системные логи (/var/log/syslog/, dmesg, etc), там обязательно что-то будет. Если проблема в телефоне — пишите во время теста непрерывно logcat, поможет разобраться.
У меня даже один телефон воткнутый в комп через USB хаб (недешевый, кстати) отваливается периодически — это выглядит, как будто телефон вытащили и воткнули обратно. ADB, естественно, при этом отваливается. Напрямую в комп тот же телефон работает нормально. Контейнеры мы тоже будем использовать, я вот буквально на этой неделе собирал похожий на ваш контейнер =)
Если сразу возвращается — похоже на power saving для портов. А без хаба повторяется?
Без хаба все ок. Power saving можно как-то продиагностировать по логам?
В логах не видел, можно его просто отключить через udev ATTR{power/control} или любой другой power management в системе, независимо от OS. Ну и, в конце концов, шнур подергать можно или хаб другой попробовать :) У нас был плохой провод, если его кто-то касался — девайс тоже реконнектился, долго проблему искали.
Если телефон периодически отваливается, то может быть проблема в кабеле. У меня такое иногда возникает на новых длинных проводах от самсунга. Попробуйте подключить более короткий и более толстый кабель и посмотреть, будет ли проблема повторяться.
А как хост рулит телефонами? Нужен какой-то специальный софт? А какой?
Я пробовал Appium и либу для питона.
Ну конкретно в статье я предлагаю в контейнер поставить агента системы интеграции (jenkins, bamboo), он и должен рулить. Если у вас мало тестов и только один хост — можно просто написать скрипт, который будет тесты на телефонах запускать, тогда никакого дополнительного софта не понадобится.
Appium, jenkins, bamboo – это, так понимаю, для хоста. А на телефон что-то нужно устанавливать?
Appium сам зальет на телефон агента.
Спасибо, надо попробовать.
Спасибо за хорошую статью!
Псевдослучайный MAC-адрес у Wi-Fi-модуля после перезагрузки телефона.
Кто-нибудь может объяснить, зачем так делать? Есть у меня один такой девайс, прям бесит! }:C
У большинства современных смартфонов MAC адреса Wi-Fi и BT хранятся в отдельном разделе флеш-памяти(eMMC). У разных производителей, даже на одном SOC методы хранения (раздел, формат) отличаются. Адреса читаются либо при инициализации HAL, либо инит скриптами. В случае ошибки при чтении, в большенстве реализаций генирируется псевдослучайный MAC, что бы Wi-Fi и BT могли работать. Поэтому вариантов почему адреса случайные два:
1. Програмные ошибки в реализации чтения MAC адресов.
2. Адресов нет, там где должны быть. Не записали на заводе или затерли при перепрошивках.
Бедой с мак адресами например страдают дешевые USB ethernet карты.
у меня по 3$ штуки, пришлось мак адреса менять в rc.local :) UDEV не понравилось начал находить после перезагрузки как новые карты поправил конфиги все тип топ=)

Возможно это защита. Я помню как-то Эпл широко рекламировала, что при рассылке широковещательных пакетов они начали использовать случайные МАК-адреса. Может и тут из той же оперы.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий