среда, 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).