Мой доклад из разряда «Галопом по Европе». Хотелось детально проанализировать многие известные баг-трекеры, но в итоге формат повествования сжался до «тут хорошо, а тут не очень».
Рубрика: Тестирование
[Andriod] «response -1008:Unknown error» при оформлении платной подписки
Сегодня на работе тестировали возможность оформления платной подписки в нашем приложении для Android. Столкнулись с проблемой, связанной с тем, что Google после совершения платежа отправлял статус с ошибкой IAB returned null purchaseData or dataSignature (response -1008:Unknown error)
, хотя сама подписка приобреталась успешно. Первая мысль — программист где-то накосячил в коде. Была получена клятва, что ошибок в коде нет, а виной всему Google.
Источник проблемы вскоре все же был найден. Оказывается, для совершения оформления подписок нужно использовать не метод mHelper.launchPurchaseFlow()
, фигурирующий в официальной документации, а mHelper.launchSubscriptionPurchaseFlow()
, который в официальной по какой-то причине отсутствует.
[Twitter] «Undefined» при инициализации списка ЛС
Медведев провел тестирование юзабилити сайта Gosuslugi.ru
«Я сейчас открыл этот наш сайт госуслуг — такая регистрация сложная. Я смотрел до этого, и она не изменилась. Для того, чтобы зарегистрироваться… Во-первых, обычному человеку вообще трудно разобраться, что там написано: загрузить плагин веб-браузера и так далее. Я знаю, что это такое, присутствующие, наверное, тоже знают, но далеко не все, кто стучит пальцами, понимают, зачем это надо. Отдельная тема связана с электронной подписью, о чём вы сказали: нужно радикально упростить её получение… Иначе у нас это не превратится в нормальный сервис. Пока это выглядит кисло очень».
Про ошибку миграции изображений на 500px
На днях заглянул на фотосайт 500px и заметил, что теперь у них появилась новая функция миграции изображений с других сервисов. Мне очень понравилась, что информация об этой фиче присутствует не только на самой странице загрузки, но в виде инфо-плашки, расположившейся в верху страницы. Именно заметив эту плашку (а не заметить ее трудно) я и решил воспользоваться мигратором.
Доступных сервисов, с которых можно перенести изображения на 500px, довольно много. Меня же больше интересовал Instagram. Цель: перенести часть изображений с Instagram на 500px. Нажимаю соответствующую кнопку, разрешаю доступ к своим изображениям. Загружается список изображений. Выбираю мне нужные и жму «Upload». Появляется иконка загрузки. Жду… Ловлю на мысли, почему нет индикации хода загрузки? Жду… Через час наконец-то появилась фраза «Uploaded 245 of 246 files» (видимо это и есть та самая индикация хода выполнения задания). Жду… Миграция все никак не завершается. Прошло два часа. Надоело на это смотреть, открываю консоль и вижу кучу ошибок, сигнализирующих, что сервер отвечает 500-ошибкой :facepalm:
Задаем скорость и задержку соединения в Android-эмуляторе
Чтобы указать скорость входящего и исходящего сетевого соединения для эмулятора (в килобайтах), достаточно запустить его с помощью следующей команды:
emulator -avd <avd_name> -netspeed <up>:<down>
Готовые профили:
-netspeed gsm
— GSM/CSD (up: 14.4, down: 14.4)
-netspeed hscsd
— HSCSD (up: 14.4, down: 43.2)
-netspeed gprs
— GPRS (up: 40.0, down: 80.0)
-netspeed edge
— EDGE/EGPRS (up: 118.4, down: 236.8)
-netspeed umts
— UMTS/3G (up: 128.0, down: 1920.0)
-netspeed hsdpa
— HSDPA (up: 348.0, down: 14400.0)
-netspeed full
— без ограничения (up: 0.0, down: 0.0)
Задержка (в миллисекундах) устанавливается так:
emulator -avd <avd_name> -netdelay :
Готовые профили:
-netdelay gprs
— GPRS (min 150, max 550)
-netdelay edge
— EDGE/EGPRS (min 80, max 400)
-netdelay umts
— UMTS/3G (min 35, max 200)
Подробнее о команде:
emulator -help-netspeed
Еще одна бага на Facebook’е
Сегодня нашел одну интересную ошибку на Фейсбуке, которая заключается она в том, что при попытке показать «похожих» друзей (Suggest Friends), вылазит следующее:
POST https://www.facebook.com/ajax/chooser/list/friends/suggest/?filter=all&newcomer=100000173041116 500 (OK)
Но это действительно для моего аккаунта. Что я там сделал такого, что теперь сервер отвечает 500-ой ошибкой — не ясно. Сперва подумал, что виной тому могут быть жесткие настройки приватности (Only me), в частности списка друзей, однако проверка показала, что это не так.
BlueStack как альтернатива дефолтному Android-эмулятору
Иногда для тестирования Android-приложений приходится использовать эмулятор. Порой дефолтный эмулятор из Andoid SDK оказывается настолько тормознутым, что вызывает панические приступы ненависти к нему. Поэтому в основном я использую BlueStack — очень легковесный эмулятор, со встроенной поддержкой установки приложений через Google Play. BlueStack легко подхватывается DDMS, поэтому никаких сложностей в просмотре логов и прочей информации не возникает.
Единственное, по началу было не ясно, а на какой же версии Android работает эмулятор? Оказывается, уже на устаревшей версии 2.3.4, но выбор понятен — Android 4.x более требователен к ресурсам, а это незамедлительно бы сказалось на производительности самого эмулятора и BlueStack уже не был бы явным фаворитом для работы.
Полезные ссылки:
Тестирование производительности браузеров
Набрел тут недавно на сайт, на котором можно протестировать производительность своего браузера и узнать, в какой мере он поддерживает HTML5. К слову, таких инструментов для тестирования браузеров сейчас очень много, но эталона, вроде бы как до сих и пор нет. Вот и пользуются тем, что кому больше нравится.
Сначала прогнал сей тест на своем iPad 3 (iOS 6.1.3) в браузерах Safari (6.0) и Chrome (27.0.1453.10). Результат Chrome оказался удручающим — 309 попугаев и 1/7 по совместимости с HTML5. Safari показал 488 баллов и ту же 1 по совместимости. Затем я закрыл несколько висящих фоновых приложений и перезапустил тест. Теперь Chrome показал 313 баллов, а Safari — 511.
Вслед за мобильными браузерами в бой пошли их десктопные версии (iMac MD096). Тут, конечно, все намного лучше. Chrome (27.0.1453.110) отработал на 4727 балла и 6/7 по совместимости с HTML5, а Safari (6.0.5) сдал тест на 4019 балла и 3/7 по совместимости.
Небольшие выводы: десктопный Chrome бьет по многим статьям Safari в плане совместимости с HTML5, и ненамного опережает его в производительности (тут, конечно, все условно). А вот на iOS дела в плане производительности обстоят кардинально наоборот — Safari очевидный фаворит, а результаты Chrome весьма удручающие. Несомненно, это связано с тем, что в iOS браузеру Chrome для рендеринга страниц приходится использовать UIWebView и более старую версию JavaScript движка, нежели Safari. А вот в плане совместимости с HTML5 оба браузера дружно показали твердую единицу.
[Android] Сбор и просмотров логов без использования ADB
Если нужно просмотреть логи на Android-устройстве, но нет доступа к ADB, то для решения этой задачи очень подойдет программа CatLog. Программа умеет записывать, сохранять и открыть уже существующие лог-файлы. Если возможность задавать уровень логгирования (все, предупреждения, только ошибки и т.п.).
CatLog может пригодится в тех случаях, когда необходимо выявить причину ошибки, которая возникает у удаленного пользователя — достаточно попросить его установить это приложение, запустить в режиме записи, затем воспроизвести ошибку и отправить лог-файл уже непосредственно разработчику.
Также в некоторых случаях может пригодится программа System Info Droid, которая позволяет собирать системную информацию об устройстве и отправлять ее по электронному адресу.