воскресенье, 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 + максимальный уровень яркости Вам в помощь :)  
  • MeterBerry, Battery 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 сайта.

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

четверг, 5 июля 2012 г.

Снятие скриншотов, запись видео и получение логов: iOS, Android, Blackberry

Android

1. Скриншоты
Скриншоты можно снимать с помощью: DDMS (плагин ADT для Eclipse и standalone приложение, входящее в состав Android SDK), Android Screenshots and Screen Capture.
Также для большинства современных девайсов работает комбинация Power + Volume down

2. Видео
Начиная с Android KitKat (4.4) можно записывать видео с помощью AndroidSDK:
adb shell screenrecord /sdcard/demo.mp4

У screenrecord достаточно обширный список ключей, с которым вы можете ознакомиться здесь Также есть огромное количество программ-фронтендов к нему, ставящихся прямо на девайс (например KitKat Screen Capture)

Для записи видео для версии 4.3 и менее не так много утилит: Screencast Video Recorder, Z-ScreenRecorder. Пользовался обеими тулами, лично мне по душе Screncast Video Recorder.
Обе тулы не поддерживают устройства с логикой nVidia (Tegra 1/2/3) и требуют прав root.

Также можно снимать скринкасты при помощи



3. Логи
NOTE: Количество логов зависит только от того, что выбрали для логирования разработчиков. По умолчанию будут показываться только exceptions (желтые и красные :) ). Если Ваше приложение не показывается в DDMS - необходимо:
  • или собрать его из исходников самому - оно будет собрано в дебаг-режиме само (если специально не указано обратного в ant/maven)
  • попросить разработчиков собрать билд, в котором можно просматрировать логи
  • запустить приложение в эмуляторе - он весь запускается в дебаг-режиме и будет видно логи даже релизных приложений

Логи снимаются с помощью LogCat или консоли
  • DDMS>LogCat в IDE
  • DDMS как отдельное приложение, входящее в состав Android SDK
Консоль: adb logcat - можно либо сразу в консоли посмотреть, либо перенаправить вывод в файл: adb logcat > logname


 
Также, полный стек-трейс лежит в data/anr/traces. Его достать можно тем же методом что и Tombstones

Tombstones - создаются когда крашатся нативные приложения или приложения написанные/содержащие в себе код, созданный с помощью NDK(C/С++).
Требует прав Root не на Nexus девайсах



iOS


Удобнее всего управлять скриншотами, логами, *.provision-profile с помощью утилиты Organizer, входящей в состав xCode. Кнопка Organizer находится в правом верхнем углу xCode, также можно вызвать с помощью комбинации клавиш shift+cmd+2.




1. Скриншоты
a) Реальный девайс: Home + Power. Cкриншот сохраняется в галлерею
Из галлереи можно достать двумя путями:
  • подключив к компьютеру 
  • с помощью Organizer, входящего в состав xCode 

б) Симулятор:
  • Ctrl+Cmd+C и вставляете в файл
  • Сmd+S - скриншот сохраняется на рабочем столе
  • Shift+Cmd+4 -> Пробел - делается скриншот всего окна симулятора
2. Видео
C версии MacOS 10.10+ и для девайсов с iOS8+ и поддерживающие lightning-разъем можно записывать видео с помощью QuickTime на MacOS X если подключить девайс lightning-шнурком:
  • подключаем девайс
  • запускаем QuickTime
  • File > New Movie Recording и появившемя окне выбираем Ваш девайс в выпадающием меню рядом с кнопкой записи
К сожалению иногда запись замирает если Ваше приложение закрашилось или долго на скрине ничего не происходило

На QuickTime и технологии паразитирует AppShow - пока в бета версии, поэтому еще бесплатно - немного более удобный UI

Без Jailbreak:
  • ReflectorApp - транслирует видео с устройства по AirPlay на Ваш компьютер. Удобно записывать по хот-кеям + не надо подключать девайс шнурком как для QuickTime/AppShow. Пользуюсь более двух лет, стоит каждого вложенного цента :)
  • Так же есть утилита EggOn, которая является VNC сервером. Записывать видео можно с помощью любого предназначенного для этого средства.
C Jailbreak
  • Также существует Display Recorder от Ryan Petrich, но он только для джейлбрейкнутых девайсов. Как по мне, работает лучше.
  • Для устройств с Jailbreak можно поставить VNC сервер и подключиться к нему с компьютера, а видео писать с помощью любого предназначенного для этого средства.
Для удобства показа тачей - можно интегрировать в дебаг-версии библиотеку TouchPose или аналог

3. Логи
  • в самом xCode (если вы собрали и запустили приложение из исходников)
  • в Organizer
  • в iPhone Configuration Utility (Win, Mac) не работает в MacOS Mavericks
  • ConsoleLog, NSLogger, iConsole, etc (введите в поисковике console log ;) )
NOTE: в iPhone Configuration Utility также можно удалять приложения и управлять *.provision-профайлами

4. Crash-Логи

  • Windows
XP: %APPDATA% \Apple computer\Logs\CrashReporter
Vista\7: %APPDATA%\Apple Computer\Logs\CrashReporter\
  • MacOS:
~/Library/Logs/CrashReporter/MobileDevice
         либо с помощью Organizer, входящего в состав xCode

Blackberry

1. Скриншоты:
  • Javaloader
javaloader -u screenshot scnreenshotname.bmp
  • JL_Cmder - просто и удобно
  • В симуляторе проще всего делать скриншоты с помощью клавиши F3

2. Логи:
  • При помоще IDE 
  • В запущенном симуляторе проще всего через паенель Tools (можно посмотреть как eventlog, так и output log)
  • С помощью того же Javaloader можно перенаправить вывод в файл
javaloader -u eventlog > logname.txt 
  • JL_Cmder - просто и удобно  
3. Видео
Последние 8 месяцев немного выпал из мира Blackberry - возможно появился способ писать видео.
  • Пробовал BeVi Capture, но работает средненько. Возможно, потому что у меня в распоряжении были довольно слабые девайсы
  • Есть еще Mobiola Screen Capture, но я ее пока не пробовал  

JL_Cmder и Javaloader также можно использовать и с симулятором, нужно только включить эмуляцию USB-подключения:
  • в меню запущенного симулятора Simulate>USB Cable connected
  • в настройках  симулятора: Simulator>Ports>USB cable connected.  
Актуальные версии JL_Cmder выкладываются здесь
Дополнительная информация по использованию Javaloader находится здесь

Еще ссылки по теме:

Инструменты для записи видео с экрана устройств Android и iOS от EvilTester

воскресенье, 17 июня 2012 г.

Заметка о тренинге по Exploratory Testing

16 числа побывал на тренинге Андрея Дзыни на тему "Exploratory Testing" 

Тренеру стоит задуматься о двухдневном тренинге - информации ОЧЕНЬ много, и всю охватить в один день не представляется возможным. Респект и уважуха Андрею, перелопатившему такие горы информации. Структурировать столько информации в простой и понятной форме дорогого стоит. Количество ссылок для более глубокого изучения приближается к сотне!

Самое яркие впечатления:
1. выражение лиц и немое возмущение, когда Андрей зачеркнул все идеи "Что такое Exploratory Testing" сгенерированные участниками. Это надо видеть :)
2. обучение работы в паре Тестировщика (Tester) и Регистратора (Recorder) в формате Testing Dojo, когда Регистратору нельзя было говорить с Тестировщиком, а только молча записывать баги: найденные Тестировщиком и замеченные самим. Очень классно настраивает мозги на работу в паре и помогает выработать стратегию взаимодействия.

Очень классно, что темой интересуются: на тренинг приехала целая команда из Одессы в составе 7 человек!
Также хочу отметить Ульяну Пиняжко, интересующуюся session-based test management и успешно применившая его в команда из 12 человек! Также, Ульяна подсказала приятное приложение Session Creator (можно использовать как расширение SBTM-приложения от Баха или как standalone-приложение).
С другой стороны, странно что было всего 2 человека из Киева: я и Людмила Федчук Неужели так мало людей из Киева интересуются Exploratory testing?

Кстати, Ульяна, за свои знания и поплатилась - получила футболку UA Testing Days :) Ваш скромный слуга - тоже

Не знаю как вы, а я дальше пошел изучать информацию по Exploratory Testing!
Трофей

PS Обязательно схожу на тренинг Баранцева - хочу сравню оба тренинга.

Несколько фоток
Не удалось заснять Андрея когда он объяснял цикл Exploratory Testing - пришлось попросить попозировать :)

Облако тегов тренинга

Ребята из Одессы сохраняют информацию с флипчарта для "будущих поколений" :)

пятница, 8 июня 2012 г.

Отчет о Testing Dojo #2


Disclaimer: Выражаю огромную благодарность Алевтинe Скороженок за помощь в подготовке отчета! Мои впечатления и мысли будут выделены курсивом, а Алевтины - подчеркиванием.


06.06.2012 состоялось второе киевское Testing Dojo, организованное QA Skills в уютном здании компаний Ciklum, которая организовала все необходимое, чтобы после обычного рабочего дня на высоте птичьего полета, под сверкание молний и раскаты грома мы могли постичь философию Exploratory testing.

Кстати, в этот раз участников от Lohika Systems было в джва два раза больше: я и Аля :)

Сперва, Андрей Дзыня рассказал о том, что такое Testing Dojo, поскольку на второй встрече присутствовало всего трое тестировщиков, участвовавших в первом Dojo.
Далее следовал вводный курс в философию Exploratory testing и ключевые понятия циклического выполнения:


Для соревнования нам предоставили Flash-приложение, которое надо было исследовать.

Типы багов и баллы за них
·     
Победителей ожидают футболки от организаторов Ukrainian Testing Days
В этот раз мы разделились на команды по 2 (максимум 3) человека. Мы c Алей разошлись по разным командам, для большего фана. В конечном итоге получилось 15 команд. Из-за такого разделения пришлось совмещать роли: тестировщика (tester), регистратора (recorder), и наблюдателя (observer). 

вторник, 29 мая 2012 г.

Чу, грядёт Testing Dojo №2 :)


Грядет Testing Dojo №2 в Киеве!

Дата и время встречи:
6 Июня 2012 года - 18:30

О правилах Вам лучше всего расскажет организатор
Регистрация
http://www.qaskills.com.ua/

Необходимые материалы:
С собой нужно иметь ноутбук, блокнот и ручку. Одного ноутбука на двоих будет достаточно, нужно приходить с друзьями!
Очень опасно рассчитывать, что кто-то другой принесет все необходимое, но вдруг Вам повезет ;)



От Dojo#2 ожидаю новых интересных задач. И, конечно же, интересных людей, с которыми можно объединиться в команду и броситься в бой с багами, посоперничать или поболтать в перерыве за рюмочкой пива :)
Меняешься местами, ролями, меняешь фокус и стиль мышления - и с каждым разом картина все четче. А самый кайф, лично для меня, наблюдать, как работает соображалка у других тестировщиков и видеть разницу, что и как в данной ситуации думаешь ты.

Ну, теперь раскатываю губу и оглашаю список хотелок (читать важным голосом :) ):
1.      Хотелось бы иметь заранее список необходимого софта и мануал по его настройке как на email, так и где-нибудь на стене.
2.      Немного обидно, что не все пункты  эвристики FCC CUTS VIDS успели охватить. На Dojo их изучать явно веселее, чем перед монитором :) Надеюсь, в этот раз успеем все охватить в этой или одной из других эвристик.

Встреча пройдет при поддержке компании Ciklum, в ее уютном и высоком офисе, по адресу: 
ул. Амосова 12, Горизонт Бизнес Центр, офис компании Ciklum, 20 этаж, Sky Point

суббота, 26 мая 2012 г.

Устанавливаем тестируемое приложение на Ваше устройство

Подготовка к разработке и тестированию

Если был приобретен новый девайс – необходимо подготовить его к разработке и тестированию:

iOS

1)   Узнать UDID девайса: через iTunes или iPhone Configuration Utility: Mac, Win

iTunes:

  • идем в детали подключенного девайса
  • кликаем на Serial Number – он изменится Indentifier (UDID)

iPhone Configuration Utility:

  • идем в детали подключенного девайсa
  • ищем Identifier

2)   Необходимо выслать этот UDID разработчикам. Они добавят девайс в Provision Profile и вышлют его Вам.

3)   Добавляем provision profile даблкликом на нем

Добавить provision на девайс можно двумя путями:

1)   iPhone Configuration Utility

  • клик на Provision Profiles
  • клик на Add
  • выбираем загруженный provision profile

2)   XCode

  • идем в Organizer (иконка в правом верхнем углу)
  • переключаемся на вкладку Devices
  • кликаем “Use device for development” -  на девайс выгрузятся все provision профайлы, доступные на компьютере

После этого можно ставить дебажные/тестовые билды через *.ipa файлы или собирать билд их исходников с использованием xCode

Provision profile - профиль, используемый Apple, для проверки цифровой подписи для приложения. Он состоит из private/public пары ключей, и файла *.mobileprovision, который должен быть установлен на целевом устройстве для отладки.
Есть два вида provisioning профилей: Development and Distribution. Development - только для отладки приложений на устройстве, а Distribution используется для распространения приложения в AppStore или для, так называемого, Ah-hoc распределения.
Профиль Developement включает в себя список устройств, которые разрешается использовать с этим профилем.
Оба типа профилей хранят в себе список список разработчиков, которые могут подписать это приложение. (с) Stackoverflow

Android 4.0+

  • Settings > Developer options > поставить галку “USB Debugging” (“Allow mock location” опционально - может пригодиться для тестирования в будущем)
  • Settings > Security > поставить галку “Unknown sources”

Android <= 4.0

  • Settings > Applications > поставить галку “USB Debugging”
  • Settings>Applications>Development> и поставить все галки (“Allow mock location” опционально - может пригодиться для тестирования в будущем)



Установка


iOS

1. Компиляция и установка через xCode:
  • добавляем/открываем Ваш проект 
  • выбираем нужную схему (AppStore, Debug, etc)
  • выбираем подключенный девайс и жмем Run 
2. Через Organizer в XCode:
  • запускаем Organizer (CMD+Shift+2)
  • выбираем вкладку Devices
  • выбираем подключенный девайс (зеленая или желтая точка в зависимости залочено ли Ваше устройство)
  • выбираем подпункт Applications ниже зеленой точки Вашего девайса
  • перетаскиваем приложение или ждем + и выбираем Ваше приложение
3. Через iTunes:
  • дабл-клик на *.ipa - приложение добавляется в iTunes
  • подключаем девайс и выбираем его в iTunes
  • переключаемся на вкладку Apps и помечаем приложение
  • жмем Sync
  • собираем сам AppInstaller из исходников
  • подкладываем билд в папку AppInstaller
  • запускаем его
  • жмем Go
  • с устройства переходим по указанной ссылке - установка пошла
Достаточно удобный способ - можно каждый раз из CI сохранять билд в определенную папку :)
5. Через сервисы бета-тестирования приложений (TestFlight, HockeyApp, etc)
Обычно эти сервисы устанавливают свое приложение на Ваше устройство и уже внутри него можно управлять нашим тестируемым приложением: установить, обновить, удалить :)

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

7. Через itms-services:// ссылку на *.plist файл. Обычно сохраняют в виде HTML, которую скачивают на устройство или отправляют любым другим способом.
Формат ссылки: itms-services://?action=download-manifest&url=https://example.com/My%2520App.plist
Более продвинутый способ формирования ссылок и HTML есть здесь.
У нас ссылка на данную HTML добавлена на специальный адрес: http://our_ci/lastbuild - в зависимости от девайса будет ставиться последний iOS или Android билд.

8. iPhone Configuration Utility (Mac, Win) - не работает в MacOS Mavericks:
  • в левом верхнем углу нажимаем "Add" либо же переходим на вкладку Applications и перетаскиваем приложение 
  • идем в детали подключенного устройства>Applications 
  • кликаем install на добавленном приложении
Если кто-то не в курсе с помощью iPhone Configuration Utility можно устанавливать как *.ipa так и *.app

Android

1. Через IDE:
  • импортируем исходники в IDE
  • правый клик на корне проекта (корневой папке) Run As>Android application
  • выбираем необходимок устройство или эмулятор в появившемся окне
2. Через флэш-накопитель:
  • подключаем девайс как внешний накопитель
  • копируем *.apk приложение во флэш-память
  • отключаем режим внешнего накопителя
  • далее с помощью файлового менеджера находим файл и тапаем на нем
NOTE: также можно воспользоваться AppInstaller, который сканирует внешнюю флэш-память и выводит список всех приложений, доступных для установки.

3. Через USB-подключение:
  • Включаем  возможность инсталлировать приложение не из PlayStore  Settings>Applications>помечаем галочкой Unknown sources
  • Включаем отладку по USB: Settings>Applications>Development>помечаем USB debugging
  • Добавляем  папки \tools и \platform-tools в PATH: Windows, Mac, Linux
  • Запускаем консоль и вводим 
adb install путь_к_apk
Если у Вас подключено несколько устройств (или эмуляторов), то необходимо выбрать необходимое устройство при помощи ключа -s:
adb devices - выводит список всех подключенных устройств
adb -s device_serial_number install путь_к_apk
Также, если у Вас запущен 1 эмулятор и 1 реальный девайс, Вы можете возпользоваться ключами -e и -d вместо ключа -s:
adb -e device_serial_number install путь_к_apk - установит приложение только на эмулятор, если у Вас есть еще подключенный девайс
adb -в device_serial_number install путь_к_apk  - установит приложение только на девайс, если у Вас есть еще запущенный эмулятор               
4. Через Wi-Fi:
NOTE: ваш компьютер и девайс должны быть в одной подсети, иначе через Wi-Fi подключиться не получится


А) Если девайс не подключен по USB
adb connect ip_вашего_устройства
adb install  путь_к_apk
Б) Если девайс подключен по USB, но вы все равно хотите подключиться через Wi-Fi:
  • переключаем adb с usb на wi-fi (если не указать порт, то будет использоваться дефолтный 5555)
adb tcpip 4455
  • подключаемся к девайсу
adb connect IP_девайса:4455
  • инсталлируем приложение
adb install путь_к_apk
  • после окончания инсталляции/отладки отключаем от adb по wi-fi  и переключаемся обратно в режим usb
adb disconnect 192.168.1.39:4455
adb usb

5. Через ADB push (нужны права root):
adb remount
adb push путь_к_apk /system/app 

6. Через AirDroid
  • устанавливаем и регистрируемся
  • подключаемся к девайсу локально (не через web.airdroid.com)
  • устанавливаем приложение через Toolbox>App в веб-интерфейсе
update: он недавно обновился и теперь в нем драконовские ограничения:
  • чтобы закачивать файл более 10Мб надо быть в одной подсети
  • в месяц на девайс передать можно не более 100Мб данных
7. SMS или HTML со ссылкой на скачивание
Внутри СМС или HTML может быть обычная сокращенная ссылка на *.apk У нас ссылка на данную HTML добавлена на специальный адрес: http://our_ci/lastbuild - в зависимости от девайса будет ставиться последний iOS или Android билд.


8. Через сервисы бета-тестирования приложений (TestFlight, HockeyApp, etc)
Обычно эти сервисы устанавливают свое приложение на Ваше устройство и уже внутри него можно управлять нашим тестируемым приложением: установить, обновить, удалить :)

Blackberry 

1. С помощью Javaloader:
Переходим в папку проекта и выполняем:

javaloader -u load *.cod 
С помощью этого способа можно загрузить приложение как на реальный девайс, так и на симулятор. Но на симуляторе необходимо сэмулировать USB-подключение в меню симулятора: Simulate>USB Cable connected

NOTE: лушче использовать маску *.cod тaк как проект часто состоит из более, чем одного .cod файла

2. Через браузер с использованием внутреннего веб-сервера:
  • заходим на сервер через браузер устройства
  • выбираем *.jad файл
  • необходимые файлы скачаются и установятся сами
3. C помощью IDE:
  • JDE:  

a) Симулятор: выбираем в меню Build>Build and Run
б) Девайс: насколько я знаю, только с помощью javaloader

  • Eclipse (если установлен BB plugin): 
a) Симулятор: правый клик на корне проекта (корневой папке) Run As>Blackberry Simulator
б) Девайс:  правый клик на корне проекта (корневой папке) Blackberry>Load project(s) on device

NOTE: также на симулятор можно загрузить приложение с помощью меню: File>Load Blackberry Application or Theme