Pull to refresh

История телепортации в андроиде

Reading time3 min
Views8.6K

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

Это не туториал, но в общих чертах вы узнаете, как приложения могут вычислять местоположение, какие приложения часто помогают легко поменять геопозицию, и как все таки сделать эмуляцию региона, когда все способы провалились.

Кстати, если вы знаете еще способ, как можно было всего этого избежать, то напишите, пожалуйста.

Эмулятор не всесилен

В документации Android Studio в общих чертах говорится о том, что у эмулятора есть настройка location. Говорится как включить и какие варианты использования есть. В принципе для тестирования, например, простых гибридных приложений подойдет. Но в моем случае меня ждало разочарование: проставил нужный регион, установил приложение - приложение вычислило мое реальное местоположение.

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

GPX - это формат, который позволяет хранить и обрабатывать данные GPS, т.е. можно проложить маршрут и эмулятор будет по нему ходить

VPN тоже не спасает

Это была следующая попытка. Поставил бесплатный VPN и чудо не случилось, приложение все равно вычисляло мое реальное местоположение. А еще бесплатные VPN редко дают выбрать нужную локацию. Так что если вам нужно выбирать - выбирайте платный VPN.

Но если ваше приложение сложное, такое как у меня, делающие запросы к другим сервисам, то эти сервисы могут подсвечивать реальное местоположение. Это кстати и было одной из главных проблем, которые заставили повозиться.

Добавляем в связку "настройка эмулятора и VPN" спец. приложения

Есть такое приложение fake gps, которое позволяет задать свое местоположение просто поставив точку на карте! Очень крутая штука, если нужно тестировать что-то простое.

А еще стоит попробовать приложение morelocale 2. Оно в один клик меняет локаль (язык и страну) в ОС. Не нужно лазить в настройки, искать смену региона и языка.

Но и добавление этих приложений не решило мою задачу (сымитировать установку и работу приложения заграницей). И тут подходим к следующему источнику, откуда аппка узнает мою реальную геопозицию.

Мобильная сеть, как источник геопозиции

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

На счет авиа-режима не уверен, но по личному опыту не решает проблему

В эмуляторе это решается через выполнение пары команд в adb (если не знаешь что это, читай статью "ADB - лучшее начало для погружения в тестирование Android"):

adb shell
su
setprop gsm.operator.iso-country <код страны>
setprop gsm.sim.operator.iso-country <код страны>

Код страны можно взять в доке ВК для разработчиков: https://dev.vk.com/reference/country-codes. Команда setprop задает свойства эмулятора. Полный список свойств и значений можно посмотреть командой getprop.

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

Идем к разработке

Рассказываем что хотели сделать, рассказываем и показываем скринкаст с тем, что делали выше и спрашиваем: "Как решить задачу?". Скорее всего тебе дадут какие-то подсказки, например, мне порекомендовали подменить ответы пары вызовов API. Сделал, но все равно решить полностью задачу не удалось, приложение все также понимало где я нахожусь.

Идем к менеджеру/лиду/etc, но...

  1. Предварительно отписываемся в задаче, что не удалось подменить геопозицию полностью и честно проверить работу приложения.

  2. Заводим задачу на доработку приложения, чтобы у тестирования был простой способ имитировать геопозицию в нужно стране. И вот это очень важный момент:

Если для успешного тестирования тебе нужен отладочный механизм - требуй его. Лучше всего просить еще на этапе начала разработки.

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

И вот я дошел до заинтересованных лиц, чтобы задачу взяли скорее в работу, надеюсь что скоро у нас появится отладка и после меня другие тестировщики не будут тратить кучу времени (потратил сутки), чтобы сделать задачу на половину и понять, что нужна отладка.

Скромно приглашаю читать мой блог в телеграмме "Тестировщик" :)

Tags:
Hubs:
+4
Comments7

Articles