воскресенье, 30 сентября 2012 г.

Комментарии о построении и организации мобильной тест-лаборатории

Давеча набрел на цикл статей Jonathan Kohl о построении мобильной тест-лаборатории. Не могу сказать, что я строил мобильную тест-лабу с нуля - всегда что-то было сделано до меня, но на всех местах работы имел возможность поучаствовать в ее развитии.

Прокомментирую некоторые пункты из статей исходя из моего опыта. Надеюсь, Вам мои комментарии окажутся полезными. Как обычно - критика, пожелня, рекомендации - очень приветствуются. Обмен опытом - это всего очень круто!

Жирным будут выделены подзаголовки из частей статьи Кола.

The Room/Storage

В данный момент комната у нас достаточно стандартная. Девайсы хранятся в специальном сторадже для мобильных девайсов, закрывающемся на ключ. Позволяет убить двух зайцев - держать под замком + имеет встроенные USB-порты для зарядки устройств.
вот такое чудо техники мы используем :)
Все девайсы:
  • названы по стандарту с учетом модели, цвета, размера встроенной памяти
  • промаркированы стикерами, которые мы печатаем на label-принтере
  • для них включены Find My iPhone и Android Device Manager для удобства нахождения в офисе

Учет девайсов (какие, сколько, для какой команы) ведем в JIRA Wiki странице. Девайсы выдаем под расписку на стикере-самоклейке которая хранится в коробке с девайсами :)

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

Network

Wi-fi

В данный момент в наличии одна тестовая точка доступа и несколько публичных точек доступа.

В дополнение к тестовой точке доступа, я могу создавать точку доступа через рабочий Mac-mini (чтобы симулировать шейпинг трафика и переход Wi-Fi => Wi-Fi, 3G>Wi-Fi, Wi-Fi>3G). Но об этом немного позже.

Data-connection

Тут все велосипед изобрести достаточно сложно - наборы SIM-карточек с разными тарифными планами от разных операторов. Половина всех симок - mini-SIM с переходниками под полноразмерные SIM карты, чтобы можно было использовать как на iOS-девайсах, так и на других устройствах.

Simulate Dead Spots

В лифт практически не бегаю, т.к. есть намного более простые способы симулировать плохое соединения и "мертвые точки":

1. Кастомные прошивки на роутер, позволяющие шейпить скорость wi-fi. Мне нравится связка Linksys WRT54G v2 + прошивка Tomato:
  • роутер стоит копейки - примерно €30-35
  • хорошие кастомные прошивки (DD-WRT и основанная на нём Tomato)
  • достаточно быстро перезагружается и восстанавливает wi-fi соединение после вытаскивания кабеля из WAN-порта
2. Создание Wi-Fi AP на Mac + Network Link Conditioner. Позволяет настраивать скорость соединения и процент потери пакетов пакетов. Очень много стандартных профилей. Из минусов - Apple уже почти год фиксит баг, не позвояляющий шейпить трафик через созданную точку доступа, так что приходится использовать только на симуляторах/эмуляторах.

3. Сторонние тулы, вроде WANEm, Dummynet (скорее всего, потребуется помощь системного администратора) и различных прокси. Мне нравится CharlesProxy - позволяет использовать throttling траффика как на прием, так и на отдачи помимо проксирования и rewrite.

4. Во многих симуляторах/эмуляторах уже есть средства для управления скоростью/качеством соединения: например, в Android и Blackberry. Network link conditioner уже встроен в iOS начиная с 6 версии

Power Station

Зарядной станцией у нас служат хранилища для девайсов, а также несколько USB-зарядок с внешним питанием, которые можно взять себе.
Такие используем для iOS: 1, 2
Такие (с QuickCharge 2.0 для поддерживающих девайсов) для Android

Я обычно обложен устройствами для тестирования :) Это всегда полезно, чтобы разработчики подходили к тебе за ними: узнать о состоянии проекта, показать им мелкую багу, узнать о новой "фишке".

Немного оффтопика
О разрядке устройств. Быстрая разрядка и контроль уровня разряда требуется:
  • мониторинга потребления батареи приложением
  • работа приложения, когда OS включает режим экономии энергии

1. На Android и c этим все очень удобно - существует много приложений для быстрой разрядки устройства до определенного уровня/контроля энергопотребление устройства.

2. Blackberry
  • Общедоступных и работающих приложения для разряда батареи я не нашел. Поэтому Wi-Fi + Bluetooth + максимальный уровень яркости Вам в помощь :)  
  • MeterBerryBattery Alerts для мониторинга батареи

3. iOS. В правилах AppStore есть пункт, запрещающий приложения, провоцирующие быструю разрядку и нагрев устройства. Поэтому, выходом видятся такие ситуации:
  • Jailbreak + установка соответствующих приложений из Cydia
  • Wi-Fi + Bluetooth + максимальный уровень яркости Вам в помощь. К этому можно  добавить Facebook или просмотр видео, не поддерживающее аппаратное декодирование в VLC :)
Есть хардварные решения, но в процессе поисков выяснилось:
  • надо либо заказывать за тридевять земель
  • специальные устройства для медицинских целей 
  • либо стоят непомерно дорого.
Если вы знаете где достать чудо техники по сходной цене - буду ОЧЕНЬ признателен!


Lab PCs

В данный момент работаю на Mac, на котором стоят две операционные системы: MacOS и Windows через Parallels. Основная работа делается на Mac, т.к. в нем можно запускать и тестировать как iOS, так и Android приложений. В Windows делаются специфические задачи, которые сложно/невозможно сделать на Mac (некоторые тулы для разработки и тестирования есть только под Window, симуляторов Blackberry нет на Mac, etc), также на виртуалке компилирую Windows Phone приложения.

Также, имеется билд-сервера, на которых крутится TeamCity:
  • 10 достаточно мощных Mac-mini, на которых мы компилируем iOS/Android приложения и гоняем авто-тесты
  • Несколько виртуалок для прогона автотестов для Mobile Web/WAP приложений
  • Несколько виртуалок для компиляции и прогонов авто-тестов для Windows Phone приложений
Для iOS/Android уже закупили топовый MacPro со 128Gb оперативки и будем потихоньку переходить на виртуальные машины, которые легче администрировать: клонировать, перезапускать, очищать и тп.

Для сборка, анализа статистики: запросы, ошибки, краши, отзывы, daily active users у нас есть несколько телевизоров, которые отображают всю релевантную информацию.

Purchasing Devices

Не буду сильно растекаться мыслью по древу. О выборе девайсов я написал статью, которую поддерживаю в актуально состоянии. Скажу лишь, что с покупкой девайсов нам везёт - если сильно не наглеть, то привезут все необходимое. В данный момент у нас около сотни девайсов: iOS, Android, Windows Phone и несколько feature phone, которые можно использовать для тестировании нашего WAP сайта.

Ну вот, собственно, говоря и все. Буду рад Вашим комментариям :) Также, очень интересна организация мобильной тест-лабы у Вас!