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

Мы уже рассказывали, почему геопозиция бывает нестабильной и как 2ГИС помогает пользователям в такие моменты. Сегодня мы выпустили ещё несколько обновлений — в том числе сенсорную (инерциальную) навигацию. В этой статье расскажем, как нам в этом помогли полевые проезды.

Зачем нужны полевые проезды

Мы постоянно проверяем навигационные фичи в «поле» — и даже делились такими историями. А когда мы начали улучшать навигацию в условиях нестабильной геопозиции, ценность полевых проездов стала ещё выше. 

Это связано с тем, что в реальности те самые аномалии с геопозицией проявляются по-разному: маркер залипает, резко скачет по маршруту или «телепортируется» в другую локацию. Часть подобных сценариев можно эмулировать при стендовом тестировании, однако что-то невозможно воспроизвести искусственно. 

Отдельная причина — устройства разных классов и с разными аппаратными характеристиками. Производительность, качество GPS-модуля и работа датчиков существенно отличаются. На более слабом или устаревшем устройстве проблемы могут проявляться значительно сильнее, а на современном устройстве — вообще отсутствовать. Бывает и наоборот: особенности конкретной модели дают эффекты, которых нет на других телефонах.

У полевых проездов несколько практических целей:

  • проверить, как функционал работает в реальных условиях эксплуатации;

  • подтвердить или опровергнуть гипотезы по новым функциям или исправлениям;

  • сравнить поведение предыдущей и новой версий приложения в одинаковых условиях — понять, что улучшилось, что ухудшилось и что ещё требует доработки;

  • собрать данные для дальнейшего изучения и разработки.

В этот раз основной задачей проездов стала сенсорная (инерциальная) навигация — наша новая фича, которая помогает лучше ориентироваться на маршруте в зонах с аномалиями геопозиции. Полноценно проверить её «на столе» было нельзя: для неё критичны реальные данные с датчиков во время движения, и только в проездах видно, насколько устойчиво ведение по маршруту в сложных условиях.

В работе над ней наши разовые выезды мы превратили в регулярный процесс — дальше подробнее о том, как всё устроено. 

Процесс полевого тестирования

Подготовительные работы

Всё начинается с задачи: разработчики описывают, что сделали, и добавляют комментарии, на что обратить внимание и какие сценарии особенно важны. Дальше мы со стороны QA разбираем задачу, уточняем спорные моменты и дополняем чек‑лист проверки своими кейсами.

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

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

  • участки, где мы уже встречали нестабильную геопозицию;

  • «усилители» аномалий — тоннель, эстакады, плотная высотная застройка (всё это может влиять на стабильность геопозиции).

Комплект устройств

Типовой комплект для проезда:

  • 2 ноутбука;

  • 4 телефона;

  • 1 камера;

  • 2–4 крепления для телефонов;

  • и безлимитная внимательность и хорошее настроение:)

«Тук-тук, к вам можно?»
«Тук-тук, к вам можно?»
Наш оркестр устройств
Наш оркестр устройств

Телефоны, крепления и ноутбуки — более‑менее стандартный набор. А вот камера может показаться необычным атрибутом, поэтому поясню, зачем она нужна:

  • это дополнительная фиксация проверки;

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

  • для тестировщиков это «дополнительные глаза», которые не моргают: можно спокойно пересмотреть спорный момент после проезда;

  • если нужен быстрый одиночный выезд, можно ехать, не отвлекаясь на телефоны: камера всё запишет, а разбор будет уже после.

Из стандартного набора отдельно отмечу, что нужны:

  • телефоны разных классов и платформ(Android/iOS), чтобы видеть, как функция ведёт себя на разном железе;

  • крепления, потому что несколько устройств в руках не удержать, а смотреть на них нужно одновременно;

  • ноутбуки — для чтения логов, доступа к сборкам/задачам и оперативной связи с коллегами.

Проезд

После всех подготовительных работ начинаем поездку. Обычно нас двое:

  • водитель — следит только за дорогой;

  • наблюдатель — смотрит на устройства, отмечает аномалии и фиксирует происходящее.

Запускаем один и тот же маршрут на всех устройствах, включаем запись экрана и включаем камеру, чтобы она одновременно снимала дорогу и устройства. И поехали!
Когда встречается аномалия на маршруте — фиксируем время, устройство, какая аномалия и так всю поездку по маршруту.

Чаще всего мы видим такие сценарии:

  • телепорт на другую улицу — самая неприятная аномалия;

  • залипание маркера — маркер «застывает» в точке и перестаёт двигаться, хотя машина едет

  • телепорт в другие города — редкий, но самый сложный для фиксации сценарий: при старте приложения геопозиция определяется в другом городе. 

Разбор проезда

После возвращения мы собираем артефакты проезда: записи экранов с устройств, видео с камеры и логи с устройств.

Дальше монтируем так, чтобы в одном файле было видно:

  • дорожную обстановку (камера);

  • экраны устройств (записи экрана).

Если устройств много — делаем отдельные ролики под каждую платформу (Android/iOS). Если проезд с проверкой задачи, где достаточно по одному устройству с каждой платформы, — делаем одно видео.


Во время монтажа (или сразу после) сверяем наши заметки по аномалиям с итоговым видео. На выходе формируем отчёт по проезду, в который прикладываем всё, что нужно разработке для разбора: видео, логи, таймкоды и описание наблюдений.

Пример


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

Самый старт видео. Мы стоим на светофоре. Тестовая сборка с сенсорным ведением отстаёт от нашего реального местоположения, а обычная сборка уезжает дальше по маршруту и зависает.

Когда автомобиль начинает движение — маркер тоже начинает движение. Аналогично с остановками: поэтому маркер отстал по маршруту, но когда мы начали движение и получили более точные координаты, он позиционируется лучше и уже начинает вести ровно там, где мы едем (на 0:54 видео). А маркер на версии из стора переместился на точку, где мы стояли на светофоре, и завис.

3:49 Маркер уходит в отсечку по скорости и уезжает дальше по маршруту. Такие моменты в сенсорном ведении встречаются либо из‑за того, что мы едем по датчикам телефона, либо из‑за неровной дороги или дороги под наклоном, и скорость может измеряться не совсем точно. Поэтому маркер может ускоряться и уезжать вперёд или, наоборот, замедляться и начать отставать. Если обратить внимание на экран телефона с обычной сборкой — маркер опять переместился и застыл в координатах, которые смогли определить.

5:19 Маркер спозиционировался недалеко от нашего реального местоположения после того, как уезжал вперёд по маршруту.

6:10 У маркера есть прыжок вперёд по маршруту, но в реальности мы почти догоняем его на 7:08, хоть он и ведёт впереди на некотором расстоянии.

7:42 Маркер совершает прыжок вперёд по маршруту, а на 8:12 точно позиционирует нас на маршруте.

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

Итоги

Для продукта внедрение регулярного процесса полевых проездов стало важным результатом: мы собираем больше данных и помогаем чаще находить и разбирать сложные кейсы, чтобы приложение продолжало стабильно работать даже без спутниковых сигналов. Помимо сенсорной навигации мы в таком режиме проверяли другие наши фичи — например, «Шаг за шагом» и «Зелёная волна».

Для тестировщиков, в частности, полевые выезды тоже дают много пользы: это та самая практика, которую сложно получить иначе (например, мне сразу на собеседовании сказали, что часть задач придётся проверять «в поле» — и меня это сразу зацепило).

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

Во‑вторых, со временем нарабатывается «насмотренность»: на что обращать внимание в следующий раз и какие маршруты выбирать, чтобы поймать нужную аномалию.

И ещё момент — проезды почти всегда уникальны. Один и тот же маршрут может отработать по‑разному на одном и том же устройстве и в одной и той же сборке. Иногда это ощущается как охота за погодным явлением: в фильмах «Смерч» или «Навстречу шторму» герои охотятся за торнадо, а мы — за аномалиями с геолокацией:)

Комментарии (1)


  1. wl2776
    29.07.2026 07:16

    Не хватает магнитолы на Android, туда ведь тоже можно поставить 2ГИС