Предположу, что многие коллеги ловили себя на мысли о том, что тестирование пуш-уведомлений — одна из самых простых задач: отправил, получил, кликнул. Если текст отображается корректно, и ссылка открывается, задачу можно считать выполненной.
А если это пуши в финтехе? Там цена ошибки измеряется не только временем, но и реальными деньгами. Для нас, как для команды обеспечения качества, пуш-уведомления — это обещание пользователю.
У нас нет цели нагрузить человека лишним текстом — с помощью пушей дается обещание того, что клик приведет пользователя к решению задачи быстро, безопасно и без потери контекста. Сломанный диплинк в уведомлении о волатильности актива может привести к тому, что трейдер не успеет закрыть позицию и потеряет часть депозита. Если навигация ломается, пользовательский сценарий прерывается, и клиент остается один на один с проблемой.
В Centicore Group мы подходим к проверке диплинков и пушей именно как к части пользовательского опыта, а не просто как к сухой технической задаче.
В статье я хочу разобрать, где скрыты основные риски, и как выстраивать мышление качества в этом направлении.
А еще мы с командой решили провести небольшой конкурс. Мы подготовили для QA-инженеров квиз с вопросами - отличная возможность проверить свои знания и просто интересно провести время за чашкой кофе (или в перерыве между прогоном регрессии). Взамен - приятный бонус в виде подарков для тех, кто успешно пройдет тест.
Об условиях конкурса и подарках можно узнать по ссылке - Квиз QA
А теперь к контексту
Диплинк, как контракт между бизнесом и пользователем
Диплинк в инвестиционном приложении можно сравнить с навигатором. Он сразу ведет пользователя по нужному, удобному и быстрому маршруту. То есть, если человек видит уведомление о статусе перевода денежных средств – при клике он должен попасть на экран подтверждения перевода, а не на главную страницу с ненужной информацией.
Логика простая - клиент, видя определенное уведомление, рассчитывает на то, что тап откроет экран для принятия решения. Так и должно быть.
Проблема может возникнуть, если рассматривать диплинк только как технический URL. Поэтому тут надо понимать, что мы имеем дело со сложным объектом, который содержит в себе целевой адрес, источник перехода, ID пользователя, параметры сессии. Соответственно нужно проверить не только то, что ссылка работает, но и то, чтобы она соответствовала тому, чего ждет пользователь.
Важно проверять пограничные состояния. Например, ситуация — актив уже делистингован, а чат поддержки «временно недоступен». Что должен увидеть клиент? Техническую ошибку заменяем на мягкую заглушку. Вместо грустного котика около надписи «Error 404» — понятное сообщение «Актив больше не торгуется» или «Раздел временно недоступен» с предложением вернуться позднее.
Задача качественного тестирования навигации - минимизировать риски тупиковых сценариев. Если целевой экран недоступен, система должна аккуратно перенаправить клиента, объяснив причину и сохранив рабочий контекст. Это прямое уважение к времени пользователя.
Как поведение устройства влияет на переход по пушу
Одна из самых сложных задач при тестировании пушей - учет состояния приложения в момент клика. Каждый пользователь взаимодействует с устройством по-разному, следовательно навигация должна адаптироваться.
Выделяется несколько ключевых сценариев:
Холодный старт. Приложение полностью закрыто – тогда система должна запуститься, загрузить программу и сразу открыть нужный экран.
Фоновый режим. Приложение свернуто – тогда переход должен происходить мгновенно, без перезагрузки. Здесь важно проверить срок действия сессии: если она активна, то не нужно требовать от пользователя повторного ввода пин-кода.
Заблокированный экран. Пользователь видит уведомление на заблокированном устройстве – тут необходимо проверить, сохранится ли маршрут перехода после разблокировки (FaceID или ввод пин-кода).
Активная сессия. Пользователь уже работает в приложении – в таком случае пуш не должен перезагружать систему, а должен органично вписаться в текущий поток.
Логику каждого состояния необходимо выверять. Например, если после разблокировки телефона система сбрасывает пользователя на главный экран вместо целевой сделки, это выглядит как баг. Однако с точки зрения безопасности такое поведение может быть оправдано.
Задача тестировщика – в любом случае обратить на это внимание, и зафиксировать этот момент. Дальше уже идет обсуждение с менеджером продукта о том, чтобы команда приняла взвешенное решение, что важнее – защита данных или комфорт и удобство клиента.
Почему ссылки из разных мест должны работать одинаково
Диплинки применяются не только в пушах. Их размещают в рекламных объявлениях и баннерах, в email- и смс-рассылках, в QR-кодах, в социальных сетях и мессенджерах. И тут тоже нужно быть начеку.
Представьте, если один и тот же диплинк, который корректно ведет пользователя из уведомления к нужному контенту, поведет этого же пользователя на другой экран из рекламного баннера. Это не вызовет понимания, мол у «всех бывают ошибки», тут скорее появится недоверие к продукту и желание закрыть приложение.
Поэтому нужно выстраивать единую точку входа для всех кликов. Для этого необходимо, чтобы команда тоже работала как слаженный и бесперебойный механизм.
Реклама у отдела маркетинга? Нужно пройти валидацию ссылок у продуктовых инженеров.
Обновление логики пушей? Надо согласовать с аналитиками.
Отсюда возникает потребность в едином реестре диплинков. Жестких технических норм для этого нет, но для компаний это становится хорошей практикой. С таким реестром не нужно искать определенную ссылку у разных менеджеров - вся команда сразу видит тип диплинка, его цель, ответственного и активность. Также легко отследить, какие ссылки уже не работают, и вовремя их заменить.
Необязательно проектировать сложную систему, можно просто завести Эксель таблицу или использовать встроенные инструменты в том сервисе, где вы создаете диплинки. Так как правил для реестра нет, я бы советовал указать такие данные:
Название или ID диплинка
Поставленная цель
Тип диплинка
Параметры
Статус
Ответственный
Дата создания
Дата последней проверки
Ну и стоит напомнить, что навигация ломается не обязательно при клике. Проблема может возникнуть по причине плохого интернета или включенного на девайсе защищенного интернет-соединения. Поэтому в тестировании и должны заранее предусматриваться все потенциальные риски. Не стоит думать, что, если все работало раньше, значит сработает и сейчас. В таком случае даже идеальная ссылка может остаться недоставленной.
Безопасность против удобства: вечный конфликт финтеха
В инвестиционных приложениях частенько сталкиваются две вещи: безопасность денежных сбережений и удобство для клиента.
То есть логично — если пользователь продолжительное время (например, 2 часа) не заходит в программу, его сессия автоматически закрывается - это базовая защита от мошенников. Но из-за этого возникает неудобство.
Допустим, человек получил пуш-уведомление о резком росте цены на акцию, открыл его спустя час, ввел заново пароль, а его выкинуло на главный экран. И тут приходится опять искать нужную вкладку с той самой акцией. Это плохой сценарий, который не стоит допускать.
В случае хорошего исхода картина выглядит так — система запоминает, куда именно хотел попасть клиент, и после ввода пароля она сразу открывает тот самый экран, на который вело уведомление.
Да, второй вариант технически сложнее, потому что нужно, чтобы и приложение, и сервер правильно передавали друг другу информацию о намерении пользователя. Для тестировщика здесь двойная задача: проверить, что логика работает, и убедиться, что в этом механизме нет уязвимостей. Например, можно пытаться перехватить или изменить параметры перехода с помощью отладочных прокси, а также проверить, что после выхода из аккаунта или удаления приложения никаких следов этого маршрута не остается.
Что в итоге
Моя мысль такова - говоря о тестировании пушей и навигации, мы на самом деле говорим о доверии. Пользователь не видит, сколько усилий мы вложили в проверку различных сценариев, он видит только результат. Поэтому если переход происходит мгновенно и точно, это воспринимается как данность и норма, а если случается ошибка или задержка - это вызывает раздражение.
В финансовых приложениях это напрямую сказывается на бизнесе. И стабильная работа диплинков увеличивает удержание клиентов и частоту их операций.

