Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Это история о том, как я тестировал одно мобильное приложение для которого важным было то, что установка и работа приложения происходит заграницей. Казалось бы, все должно быть просто, поменял регион в телефоне/эмуляторе или включил VPN и вот тебе счастье. Но это не всегда так, и настройка окружения может затянуться на сутки!
Это не туториал, но в общих чертах вы узнаете, как приложения могут вычислять местоположение, какие приложения часто помогают легко поменять геопозицию, и как все таки сделать эмуляцию региона, когда все способы провалились.
Кстати, если вы знаете еще способ, как можно было всего этого избежать, то напишите, пожалуйста.
Эмулятор не всесилен
В документации Android Studio в общих чертах говорится о том, что у эмулятора есть настройка location. Говорится как включить и какие варианты использования есть. В принципе для тестирования, например, простых гибридных приложений подойдет. Но в моем случае меня ждало разочарование: проставил нужный регион, установил приложение - приложение вычислило мое реальное местоположение.
Выглядит настройка интуитивно понятно. Выбираем точку на карте или поиском, или даже можно загрузить GPX файл.
GPX - это формат, который позволяет хранить и обрабатывать данные GPS, т.е. можно проложить маршрут и эмулятор будет по нему ходить
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a2f/7b2/a00/a2f7b2a00acfd45b387e360fa9154b93.png)
VPN тоже не спасает
Это была следующая попытка. Поставил бесплатный VPN и чудо не случилось, приложение все равно вычисляло мое реальное местоположение. А еще бесплатные VPN редко дают выбрать нужную локацию. Так что если вам нужно выбирать - выбирайте платный VPN.
Но если ваше приложение сложное, такое как у меня, делающие запросы к другим сервисам, то эти сервисы могут подсвечивать реальное местоположение. Это кстати и было одной из главных проблем, которые заставили повозиться.
Добавляем в связку "настройка эмулятора и VPN" спец. приложения
Есть такое приложение fake gps, которое позволяет задать свое местоположение просто поставив точку на карте! Очень крутая штука, если нужно тестировать что-то простое.
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/612/bdd/043/612bdd04354a0cc7e6b2ecd22e2f2538.png)
А еще стоит попробовать приложение morelocale 2. Оно в один клик меняет локаль (язык и страну) в ОС. Не нужно лазить в настройки, искать смену региона и языка.
Но и добавление этих приложений не решило мою задачу (сымитировать установку и работу приложения заграницей). И тут подходим к следующему источнику, откуда аппка узнает мою реальную геопозицию.
Мобильная сеть, как источник геопозиции
Не секрет, что сим-карта может подсказывать приложениям о геопозиции юзера. В случае с физическим устройство все просто - надо вытащить симку.
На счет авиа-режима не уверен, но по личному опыту не решает проблему
В эмуляторе это решается через выполнение пары команд в adb (если не знаешь что это, читай статью "ADB - лучшее начало для погружения в тестирование Android"):
adb shell
su
setprop gsm.operator.iso-country <код страны>
setprop gsm.operator.iso-country <код страны>
Код страны можно взять в доке ВК для разработчиков: https://dev.vk.com/reference/country-codes. Команда setprop задает свойства эмулятора. Полный список свойств и значений можно посмотреть командой getprop.
Но даже задав эти свойства мне не удалось полностью подменить геопозицию, приложение в некоторых критичных частях функционала понимало где я нахожусь.
Идем к разработке
Рассказываем что хотели сделать, рассказываем и показываем скринкаст с тем, что делали выше и спрашиваем: "Как решить задачу?". Скорее всего тебе дадут какие-то подсказки, например, мне порекомендовали подменить ответы пары вызовов API. Сделал, но все равно решить полностью задачу не удалось, приложение все также понимало где я нахожусь.
Идем к менеджеру/лиду/etc, но...
Предварительно отписываемся в задаче, что не удалось подменить геопозицию полностью и честно проверить работу приложения.
Заводим задачу на доработку приложения, чтобы у тестирования был простой способ имитировать геопозицию в нужно стране. И вот это очень важный момент:
Если для успешного тестирования тебе нужен отладочный механизм - требуй его. Лучше всего просить еще на этапе начала разработки.
В моем случае так исторически сложилось, что приложение обросло кучей крутых механизмов вычисления геопозиции, и так как его проверяли в разное время разные люди и в разных контекстах, то никто не попросил сделать отладочный механизм.
И вот я дошел до заинтересованных лиц, чтобы задачу взяли скорее в работу, надеюсь что скоро у нас появится отладка и после меня другие тестировщики не будут тратить кучу времени (потратил сутки), чтобы сделать задачу на половину и понять, что нужна отладка.
Скромно приглашаю читать мой блог в телеграмме "Тестировщик" :)