Тестируем гео на дому

Тестируем гео на дому

t.me/qa_chillout

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


Немного истории

Геолокация появилась впервые в OS iOS. Изначально местоположение определялось по IP. Данные были не точные и далеки от действительного местоположения пользователя.

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

Почему неправильно говорить только GPS? Сегодня в мире работают четыре глобальные системы позиционирования: GPS (США), ГЛОНАСС (Россия), BeiDou (Китай) и Galileo (Евросоюз). Помимо глобальных, существуют также региональные спутниковые навигационные системы (RNSS). Например, до появления BeiDou над Китаем работала региональная группировка спутников Compass, расположенных на близких к геостационарной орбитах. 


Принцип работы геолокации

От момента запуска приложения до момента получения точки вашего местоположения обычно проходит какое-то время. Местоположение определяется по следующим данным:

  • GPS. Сигнал со спутника (точность – до 20 метров). Если вы находитесь в здании или в метро, данные GPS могут быть неточными.
  • Wi-Fi. Ближайшие беспроводные сети.
  • Вышка сотовой связи. Место подключения к сотовой сети (точность – до нескольких километров).

С какой же точностью определяется местоположение? Точность вашего местоположения – это радиус вокруг точки, внутри которого с вероятностью 68% находится пользователь.

Каждый момент времени приходят новые координаты нашего местоположения, либо могут не прийти вовсе. С этим надо как-то работать и проверять реакцию приложения.


WEB

Если сайт хочет знать, где находится пользователь, чтобы предложить ему релевантную выдачу, он использует данные геолокации. Эти сообщения появляются в браузере. Например, в приложении N может появиться сообщение «Разрешить приложению N доступ к местоположению этого устройства?» или в левом углу браузера появится такое уведомление: «N хочет узнать ваше местоположение. Вы разрешаете?», чтобы предупредить пользователей об отслеживании геолокации. 

Mozilla запрашивает разрешение на доступ к местоположению пользователя.

Данные о местоположении определяются по ближайшим точкам беспроводного доступа и по IP-адресу устройства. Данные о местоположении обезличены: передаются только географические координаты. Они не позволяют идентифицировать пользователя.

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

Режим Инкогнито. По умолчанию местоположение в этом режиме определяется автоматически, даже если вы ранее вручную указали город. Это объясняется тем, что в режиме Инкогнито не сохраняются файлы cookie, а сделанный вручную выбор города хранится в них.


Инструменты для тестирования

Для переопределения местоположения можно изменить IP адрес, либо в DevTools в Sensors изменить местоположение:

Также можно воспользоваться каким-либо расширением, например Location Guard.


Чек-лист тестирования геолокации на web

1. Проверка функционала (отображение информации в соответствии с выбранным местоположением)

2. Автоопределение местоположения

3. Указание адреса вручную (ввод в поле адреса)

4. Выбор адреса из садджестов

5. Пермишен (запрет/предоставление) на предоставление доступа к гео

6. Удалить сайт из разрешенного списка сайтов, которым разрешено определять местоположение


MOBILE

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


Инструменты для тестирования гео в iOS

Симулятор в iOS предоставляет нам 3 варианта движения:

  • пробежка,
  • поездка на велосипеде,
  • езда по трассе.

Система возвращает нам все необходимые данные о самой координате (скорость, вектор движения и т.д).

А самый простой способ имитации местоположения — ввод широты и долготы вручную. Просто запускаем наше приложение и в меню симулятора Debug/Location/Custom Location вводим нужные координаты.

Третий способ – весьма долгий. Это моделирование местоположения с использованием файлов GPX.

Использование Custom location допустимо, если нам не нужно проводить много тестов, но это может быть затратно. Каждый раз, когда мы меняем местоположение, нам может понадобиться скопировать и вставить широту и долготу или выучить их наизусть. Кроме того, он не имитирует перемещение пользователя из одного места в другое «естественным образом».


К счастью, Xcode предлагает возможность использования файлов GPX. GPX — это стандарт файла XML, обозначающий формат обмена GPS. Этот формат файла довольно прост и широко используется в мире GPS.

Файл GPX выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="Open GPX Tracker for iOS">

  <wpt lat="40.762468446233115" lon="-73.99090283852468"> 
    <time>2019-12-06T14:19:25Z</time>
    <name>Point 1</name>
    <desc>Description of point 1</desc>
  </wpt>
  <wpt lat="40.80559910750484" lon="-73.95810627601767">
    <time>2019-12-06T14:19:29Z</time>
    <name>Point 2</name>
    <desc>Description of point 2</desc>
  </wpt>
  <wpt lat="40.767588954221175" lon="-73.9539347834181">
    <time>2019-12-06T14:19:31Z</time>
    <name>Point 3</name>
    <desc>Description of point 3</desc>
  </wpt>
  <wpt lat="40.72268937145068" lon="-73.99262897339348">
     <time>2019-12-06T14:19:36Z</time>
     <name>Point 4</name>
     <desc>Description of point 4</desc>
  </wpt>
</gpx>

Xcode использует элементы точек <wpt/>, которые имеют два атрибута latи lon (широта и долгота) местоположения для имитации координат GPS.

  <wpt lat="40.762468446233115" lon="-73.99090283852468">
     <time>2019-12-06T14:19:25Z</time> 
     <name>Point 1</name> 
     <desc>Description of point 1</desc>
</wpt>

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


Самый простой способ создать такой файл GPX – использовать приложение Open GPX Tracker (он работает на iPhone и iPad). В качестве альтернативы, если вы не хотите загружать приложение, вы можете использовать веб-сайт GPX-POI .

В самом приложении на карте нажмите и удерживайте места, в которых вы хотите смоделировать местоположение, далее экспортируйте файл скоординатами.


Для настройки XCode мы переходим в раздел Debug / Simulate Location / Add GPS Exchange to Project и выбираем файл GPX, который загрузили из Open GPX Tracker.

Теперь, если мы снова перейдем в Debug/Simulate Location/Add GPS Exchange to Project, то появится файл GPX (отобразится как points), выбираете это местоположение и можно тестировать перемещение между точками.


Инструменты для тестирования гео в Android

С Android ситуация несколько проще. Мы можем как на физическом девайсе, так и на эмуляторе использовать приложение для фиктивных местоположений. Для этого сначала необходимо скачать такое приложение из Play Market, например Fake GPS location. Затем в режиме для разработчика выбрать это приложение для фиктивных местоположений.

Как только приложение будет выбрано, мы можем в нем самом задать точкой наше местоположение.

Если мы тестируем на эмуляторе, то в разделе Extended Controls / Location мы можем задать практически любое необходимо для нас местоположение.

Чек-лист тестирования геолокации в mobile

1. Проверка функционала (отображение информации в соответствии с выбранным местоположением)

2. Автоопределение местоположения

3. Указание адреса вручную (ввод в поле адреса)

4. Выбор адреса из садджестов

5. Пермишен (запрет/предоставление) на предоставление доступа к гео

6. Геолокация по сотовым вышкам (точность получается достаточно низкой)


Резюме

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


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page