пятница, 28 декабря 2012 г.

Предновогодняя подборка ссылок по мобильной тематике

Последняя в этом году подборка - желаю вам новогоднего настроения :) 



Уголок тестировщика:

1. Особенности тестирования приложений на мобильных устройствах.

2. Презентация Натальи Савастюк "Тестирование iOS приложений. С чего начать?"
В целом очень приятная презентация - самое то для начинающих. Рекомендую обратить внимание на слайды 26, 31 - полезные ссылки; 33-43 примеры багов. Единственно что, достаточно устаревшая ссылка про автоматизацию приложения с Хабра.

3. Тестирование приложений, отправляющих SMS. Перевод статьи Карен Джонсон от QATesting.ru

4. Fiddler: Как открыть локальный сайт на мобильном устройстве

Разное:

1. Экспериментальная архитектура GPS-трекеров позволяет снизить энергопотребление на три порядка.

2. Автоматизируем свой смартфон для сохранения времени и заряда. В обзоре упустили Tasker и one{X}.

3. Google назвал приложения года для Android.

4. 12 наиболее красивых приложений под iOS. Шикарно выглядят, теперь Вам есть откуда черпать идеи ;)

5. Android в цифрах.

7. 10 предсказаний по Mobile на 2013 от CNews.

8. Прожектор прошедших событий №1. Среди прочих есть и ссылки на мобильные ивенты.

9. The Google of the app search era just might be google. Очень интересное и дельное размышление.

10. Mobile health in 2013: from the gym to the doctor’s office. Заметил начало тренда еще в 2010 - за год было аж два приложения, связанные с healthcare.

11. ROM Manager для Android обновился.  Теперь бекапами Вашей прошивки можно делиться свободнее. Не нужно печься о иерархии директорий и тп

12. Рождественский ролик от Android.

13. iOS 6.1 еще более защищена от Jailbreak. Учитывая что отвязанного Jailbreak еще нет для iOS6 - вообще печаль :(

14. Статьи по освоению купленного смартфона on Lifehacker:
15. 12 лучших приложений для Вашей таблетки на Android. Учитывая тренд дарения таблеток на новогодние праздники - вдвойне актуально :)

понедельник, 24 декабря 2012 г.

Подборка ссылок по мобильной тематике №5


Ссылки по тестерской тематике:

1. From One Expert to Another: Paul Poutanen on Mobile Testing SMS.

2. Cборник документов по тестированию мобильных приложений от AQuA. Ресурс ранее был известен под именем UTC (unified testing criteria). Упор делается на Android-приложения, т.к. UTC начинался с разработки критериев тестирования Java-приложений.
3. Автоматизация тестирования мобильных приложений — необходимость или прихоть. Автор рассказывает об автоматизации Android-приложений.

Уголок девелопера:

1. Google добавляет локализируемую графику в PlayStore. Теперь продвигать свое приложение в разных странах теоретически будет удобнее :)

2. YouTube выпустил API для Android. Позволяет бесшовно интегрировать видео из YouTube в приложения.

3. Android: Написание многопоточных приложений с помощью Intel® Threading Building Blocks.

4. О том, как выпустить отличное iOS приложение, которое никому не нужно.

Новости/предсказания/обзоры:

1. Блог продуктивного человека. Помимо лайфаков и советов по продуктивности делает хорошие объективные обзоры приложений.

2. Приложения победили браузер.

3. Большинство мобильных телефонов в Америке - сматфоны. В первом квартале доля смартфонов была 49%, в третьем - 56%

4. Motorola работает над Nexus-девайсами: Phone X и Tablet X

5. Что ожидать от Apple в 2013 году -  предсказание от GigaOM

6. LG расширит ассортимент своих GoogleTV. Ябпотестил :)

7. Оченедной стартап, пытающийся интегрировать сматфоны в "умный дом". Сколько их уже было. Надеюсь, хоть этот выстрелит...

8. Двадцатка лучших приложений для iOS, Android по версии TechCrunch.


четверг, 20 декабря 2012 г.

Подборка ссылок по мобильной тематике №4


1. Отличных гайд по тестированию мобильных приложений. Поможет как начинающим тестировщикам для генерации идей, так и опытным - вспомнить об областях, которые забыли проверить :) 

2. Построение мобильной тест-лаборатории:
3. Классная идея временного телефонного номера для телефона. А-ля oneminute mail/guerilla mail для электронной почты.

4. Are Mobile Apps Destroying Software Quality? В принципе, здраво, но если приложение направлено на зарабатывание денег, то как минимум оценки в магазине приложений будут свидетельствовать о его качестве. Да и пользователи могут аргументированно сказать свое "фе".

5. Советы по дизайну Andoid-приложений. Помогает сказать аргументированное 'атата' девелоперам и дизайнерам. К счастью Android-приложения перестают быть унылой калькой ранее выпущенного iOS-приложения :)

среда, 12 декабря 2012 г.

Подборка полезных/интересных ссылок по мобильной тематике №2

1. Тестирование мобильных приложений с помощью мнемоники I SLICED UP FUN. Хорошо структурирует в голове список того, что надо протестировать.

2. Kickfolio позволяет тестировать iOS приложения прямо в браузере, в том числе в браузере вашего android :). Скорость оставляет желать лучшего (примерно как у DeviceAnywhere, но тут идея другая и они явно не конкуренты), но все же лучше чем ничего.

5. Новая версия библиотеки для in-app purchasing, облегчающая жизнь разработчиков android-приложений

6. Теперь и в России можно покупать книги и фильмы в PlayStore (кстати, в iTunes Store тоже с прошлой недели :) ). Уже проверил - взял напрокат фильм :)

7. Gold релиз SDK для BlackBerry OS 10

8. Новый девайс от Yota будет с двумя дисплеями. Интересно будет "пощупать". UPD: и на русском

9. Надеюсь с этих процессоров Intel начнется новая эра Android'ов "не-для-испытания-на-пользователях-за-деньги" как было с Orange San Diego, Motorola RAZR i.

воскресенье, 9 декабря 2012 г.

Подборка полезных ссылок по мобильной тематике №1

Уф, что-то я давно ничего не писал. Постараюсь сделать публикацию интересных ссылок по мобильной тематике регулярной. Интересно Ваше мнение - стоит ли делать мини обзор как в этом посте, или просто делать пост с интересными ссылками и описанием в одно предложение (как делает, например, Дмитрий Жарий)?

1. Keynote Джонатана Коула на STARWEST 2012
Отличный keynote - живо, с экспрессией. Очень классно раскладывает по полочкам текущую ситуацию. Прямо, как говорится "из головы достает" :)

Благодарен ему за акцент на тестировании юзабилити приложения. Благо рынок взрослеет и приложения "задизайненые профессиональными разработчиками" потихоньку уходят с рынка:
  • на iOS таких приложений и не было сильно много 
  • Android-приложения перестают быть глупой калькой с iOS версий, особенно после обновления гайдлайнов
На данный момент есть достаточно много хороших инструментов для прототипирования: Prototyper, FluidUI, Pencil, Proto.io, BalsamiqMockups

Отлично, что он акцентирует внимание на тестировании приложения при разных типах интернет-соединения:
  • 2G>3G>4G и наоборот
  • Wi-Fi>Cellular и наоборот
  • разные сценарии потери и восстановления связи
  • при меняющемся уровне приема
Единственно, что он не упомянул - симуляция запароленной или неисправной точки доступа - выдергиваете патчкорд из WAN-порта: сигнал есть, а данные "не ходят" :)
Очень часто встречаюсь с приложениями, которые достаточно неадекватно реагируют на такие трюки с соединением. Особенно девайсы от Apple, да простит аллах их разработчиков драйверов и железа для Wi-Fi :)

Примеры с GPS, датчиками температуры и заряда батареи очень показательны - сам сталкивался с подобными случаями. Теперь эти кейсы основательно закрепились в моему чек-листе.

Но не могу сказать что согласен со всем, о чем он говорит - все-таки возможные "гейзенбаги", появляющиеся при странных обстоятельствах скорее являются следствием не очень хорошо написанного приложения. Возможно, я его неправильно трактую, но все же...
Пример 1: возможный баг в приложении на платформе Android: при принятии или отклонении звонка с одним из скринов приложения случается что-то не то. Например, вернувшись в приложение Вы увидите, что оно упало или находится не в том состоянии. Такой баг можно найти и другим способом - залочить экран, дать уйти телефону в deep sleep (когда понижается частота процессора и тп) и разлочить экран. Оба проявления бага вызваны неправильной реализацией жизненного цикла activity.
Пример 2: iOS приложение может упасть если долго и нудно переходить между двумя-тремя скринами. Может быть вызвано неправильной работе с памятью:
  • утекает до определенного порога и приложение "падает",
  • иные причины при работе с памятью: указатель на очищенную память, segfault, etc
Все, больше не буду вам портить удовольствие от просмотра данного видео :)

Black-box is dead (c)

2. Семь смертных грехов мобильных приложений 
Отрывок из книжки Коула про тестирование мобильных приложений. Как дочитаю - напишу рецензию :) У него вообще много классных материалов - рекомендую.

3. Классная инфографика про планшеты :)
Товарищи с NevoSoft его перевели, но мне нравится ComicSans да и очепятки есть :)

воскресенье, 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 сайта.

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

четверг, 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 (MacWin) - не работает в 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

воскресенье, 29 апреля 2012 г.

Выбираем и приобретаем девайсы для тестирования - август 2015

"На каких девайсах тестировать приложения?", - является краеугольным камнем тестирования. Соответственно, необходимо выработать стратегию тестирования и уже на ee основе приобретать устройства для разработки/тестирования. Разработка мобильного ПО - очень динамичная область и никогда не стоит на месте. Необходимо быть готовым к обновлению Вашей тестовой стратегии и постоянном обновлении парка устройств

Если приложение уже запущено, то самым первым шагом будет изучение Вашей аудитории, благо информация доступная в Google Play, App Store. После этого можно пропустить половину статьи ;)

Если приложение еще в стадии концепта/разработки, то лучше ознакомиться с балансом сил на каждом из рынков:
  1. так и соотношения сил вендоров девайсов в разбивке по регионам/странам

Информация к размышлению о Китайском рынке и экспансии :)

iOS

Итак, на данный момент, чтобы покрывать 90% рынка нам необходимо поддерживать:

     1. Три типа устройств:

  • телефоны
  • планшеты
  • плееры iPod touch

c шестью разрешениями экрана:

  • 960x640:      iPhone 4, iPhone 4S, iPod touch 4g,  iPod touch 4g 2012
  • 1024x768:    iPad 2, iPad mini
  • 1136x640:    iPod touch 5g, iPhone 5, iPhone 5C, iPhone5S
  • 1334×750:    iPhone 6*
  • 1920×1080:  iPhone 6+*
  • 2048x1536:  iPad 3, iPad 4, iPad Air, iPad mini retina
  • ARM v7: iPhone 4/4S, iPod touch 3g - iPod touch 4g 2012, iPad, iPad 2, iPad 2, iPad 3;
  • ARM v7s: iPhone 5, iPhone 5c, iPad 4, iPod touch 5g
  • ARM 64bit*: iPhone 5S, iPhone 6, iPhone 6+, iPad Air, iPad Air 2, iPad mini retina 1/2
*c июня 2015 обязательно поддерживать 64 бита как для новых приложений, так и для обновления старых

     3. и OS:

  • 7.x
  • 8.x
  • 9.x - ожидается в сентябре 2015, уже есть девелоперская бета 4 - самое время начинать миграцию
Пользователи быстро и охотно обновляются, особенно если сравнивать с темпами внедрения новых версий в Android. К примеру, за 72 часа доля iOS 8 выросла с 0 до 24%

David Smith тоже отслеживает статистику версий iOS и используемых устройств относительно своего приложения Audiobooks. За что ему ОГРОМНОЕ спасибо!




Кто же эти "таинственные ретрограды", не обновляющие прошивку до iOS8 :)? 
  1. владельцы "серых" разлоченных iPhone, т.к. нередко на новую прошивку нет анлока, позволяющего совершать звонки.
  2. владельцы iPhone 4 - даже iOS6 работает посредственно (обещание ускорения работы iOS7 в iOS7.1 так и остались обещаниями)
  3. оставшиеся на iOS6, которым не нравится дизайн iOS7/8 
  4. оставшиеся на iOS7, потому что iOS8 сильнее тормозит на их девайсах (в большинстве случаев - байки :) ) 

Рассмотрим 2 ситуации

      1. "эконом-вариант":
  • iPhone6 plus - новейшее "железо", поддерживает iOS8/9. В zoom режиме - UI как у iPhone6, а также новые восхитительные баги если UI написан спустя рукава :)
  • iPhone6 - новейшее "железо", поддерживает ios8/9. В zoom режиме разрешение как у 5/5С/5S, а также новые восхитительные баги если UI написан спустя рукава :)
  • iPhone5S - как второй по популярности iPhone в данный момент
  • iPod touch 5G - чуть "придушенный" по железу iPhone5 (ниже частота процессора и 512 RAM). Очень популярен в Америке у подростков, которым родители "зажали" айфон. Удобно тестировать приложение в условиях недостатка RAM
  • iPhone 4S - как эталон low-end телефона 
  • iPad mini - без iPad 2 можно обойтись - "железо" такое же. Заодно и протестируете usability на уменьшеном экране. Единственный из non retina девайсов. Можно использовать как эталон low-end таблетки
  • iPad Air2 - новейшее железо, retina дисплей
Все девайсы из этого списка можно обновить до iOS9 - нет бесцельно потраченных денег. iPad Air2 - пока единственный iPad поддерживающий split view в iOS9 (возможностей других iPad не хватит). Ждем новых iPhone/iPad в сентябре :)

      2. более расточительный вариант:
  • iPhone 4 (iOS7) - как последний мамонт не iOS8 и выше - наш "эталон" производительности :)
  • iPhone 4S 3шт. (iOS7, iOS8, iOS9)
  • iPod touch 5g (iOS7)
  • iPhone 5/5С* (iOS8)
  • iPhone 5S 2шт. (iOS8, iOS9)
  • iPad 2 (iOS7),
  • iPad mini 2шт. (iOS8, iOS9)
  • iPad mini 2 (retina)** (идентичная по железу iPad Air, но занимает меньше места и поможет в с юзабилити при небольшом экране таблетки)
  • iPad Air2 2шт. (iOS8, iOS9)
* идентичны по "железу", отличие лишь в корпусе
** идентичен по "железу" iPad Air, отличие только в размерах

Android

Проблема фрагментированности - одна из наиболее острых проблем Android. Логотип с зеленым человечка можно встретить уже не только на холодильнике и стиральной машинке, но и на спутнике.
К, сожалению, с выбором девайсов под Android не все так просто и четкие рекомендации по приобретению дать сложно. Обусловлено это: фрагментированностью, желанием вендоров кастомизировать прошивку и региональными предпочтениями пользователей.  Разбивку по вендорам можно посмотреть в шапке статьи.


Фрагментированность: Android OS - система с открытым исходным кодом, соответственно приходится поддерживать множество комбинацией программного и аппаратного обеспечения. 

Кастомизация: вендорам нужно выделять свои девайсы - как созданием кастомных оболочек, так и, иногда, модификацией составных частей системы (изменения в Android, обновление библиотек, кастомные лаунчеры). Что порождает баги, встречающиеся только на устройствах определенной марки (или даже на конкретных устройствах). Нередко в change-логах на PlayStore появляется: "Ура, теперь наше приложение запускается и работает на девайсе bla-bla-bla" 

Региональные особенности: Наивно ожидать, что в Японии и Китае будут популярны девайсы Motorola или Xiaomi будет популярен в Австралии.  


Краткий дайджест по устройствам на Android:

  1. 3 типа устройств:

  • телефоны
  • планшеты
  • другие устройства (плееры, навигаторы, камеры, телевизоры и тп)
      cо множеством разрешений экрана и screen density (DPI)

Самыми ходовыми разрешениями на данный момент являются: 

  • WVGA (800x480) - де-факто для очень старых hi-end девайсов (Galaxy S2) или low-end устройств 2013 года
  • qHD (960x540) - старые middle-end девайсы (а-ля HTC One S и тп) и китайцы 2013 года
  • HD (1280x720 aka 720p) - стандарт для middle end телефонов даже сейчас
  • FullHD (1920x1080) - стандарт для топовых смартфонов 2014 года и выше. Даже в 2015 не все компании считают 2к разрешение адекватным по соотношению цена/мощность железа/время автономной работы, как пример - Sony Z3, HTC One M9
  • 1440p aka 2k (2560x1440) - стандарт для самых топовых телефонов конца 2014 - середины 2015 года (LG G3/G4, Galaxy S6, MiNote Pro, Galaxy Note4)
  • FullHD/FullHD+ (1920x1080, 1920x1200) - достаточно популярное разрешение для middle-to-high end планшетов в 2013 году.
  • 2K tablet (WQXGA 2560x1600) - практически стандарт для hi-end планшетов (Sony Z4 Tablet, Galaxy Tab S, Asus ZenPad S)

     2.  Наборы логики под архитектуры:

  • ARMv7 и далее
  • x86
  • MIPS

     3.  OS: 4.0.x - 5.x

Из конкретных рекомендаций по покупке: 

1.  изучите долю рынка конкретной версии Android OS, наиболее ходовое разрешения экрана, и наиболее популярные девайсы для Вашей целевой аудитории


На данный момент для смартфонов наиболее популярна версия OS это KitKat (4.4). Froyo, Gingerbread уже ушли со сцены - все больше разработчиков ставят минимальную версию OS 4.0 или даже 4.1

Ожидается:
  • дальнейший рост доли версии KitKat и Lollipop в третьем и четвертом квартале - т.к. большинство новых устройств (даже "китайцев") выходят уже минимум с 4.4, а то и 5.0. 
  • постепенный рост доли Android M, которую по слухам выпустят в сентябре-октябре. В данный момент доступна beta 2

       2.  следует иметь как минимум по одному устройству с логикой от ведущих производителей.

ARM:

  • Qualcomm
  • MediaTek
  • Samsung
  • Nvidia
* Texas Instruments - уже экзотика - компания покидает рынок
x86:
"Зачем?", - спросите Вы. Существуют нюансы, связанные с ограничениями платформы (например Tegra 2 не поддерживает инструкции NEON, поэтому некоторые операции могут занимать больше времени чем на других платформах) А также ошибки с конкретными наборами логики и ПО: если при проигрывании потокового аудио терялись фреймы - на устройствах с Tegra 2 тембр голоса поднимался в несколько раз; в то же время на логике TI, Samsung были всего лишь небольшие паузы в воспроизведении). Особенно это касается приложения работающих с мультимедиа-контентом и игр.


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

Например, для Европейского региона, в данный момент популярны телефоныSamsung Galaxy S3 (когда же его сбросят с пьедестала?!), Samsung Galaxy S5, Samsung Galaxy S6, Samsung Galaxy Note 3, Moto G, HTC One M8, Sony Xperia Z3, LG G3.

популярные планшеты: актуальной информации от крупных агенств нет, поэтому буду опираться на внутреннюю статистику - которая достаточно репрезентативка (основана на милиионах уникальных пользователей в день). Как и заведено - балом практически единолично правит Samsung (с редкими вкраплениями Asus, Acer, Sony, Lenovo).


Пока топ 10 таблеток выглядит так: Galaxy Tab 2 7.0, Galaxy Tab 3 7.0, Galaxy Tab 3 Lite, Galaxy Tab 2 10.1, Galaxy Tab 3 8.0, Galaxy Note 10.1, Galaxy Note 8.0, Xperia T2 Ultra, Galaxy Tab, Galaxy Tab 3 10.1 3G

    3.  обязательно приобретите официальные девайсы от Google:

  • поддержка от Google (в т.ч. можно собрать прошивку из исходных кодов с необходимыми правками);
  • первыми получают обновления OS;
  • уж на референсных девайсах-то Ваше приложение должно работать безупречно :)
Особенно рекомендую Nexus 10 - можно эмулировать практически любое разрешние экрана и плотность пикселов из-за гигантского разрешения дисплея.

    4.  Очень желательно донести до заказчика сведения о фрагментированности, особенно если Ваше приложение не "заточено" под конкретные устройства и:

** Мне очень помогает. На практике я стараюсь серьезно поддерживать около 10 устройств. Раз в неделю устраиваю "день Device Anywhere" - провожу smoke-тесты на различных устройствах для уверенности в качестве. Из-за верстки "спустя рукава" или "быстрофиков" - оная может поплыть на двух устройствах (обычно таблетках) с одинаковым дюймажом и разрешением (например производители округляют плотность пикселов в разные стороны и тп)

Остальные out-of-scope устройства стараемся поддержать после релиза первой версии. всегда найдется какое-нибудь устройство, на котором приложение крашится на старте или еще где-то практически со 100% вероятностью.

Полезные ссылки по теме: