Что такое диплинки и для чего они используются?
Что проверяют
Знаете ли вы, что за такой ссылкой стоит контракт между сайтом, операционной системой и приложением, и умеете ли развернуть это в тест-план. Тестировщика спрашивают не про определение, а про то, где механика ломается и как вы проверите её руками.
Как отвечать
Диплинк это ссылка, открывающая конкретный экран приложения, а не его главную. Дальше разделите виды, на этом держится весь ответ.
Своя схема вида myapp://order/42 работает, только если приложение установлено, и ничем не подтверждается: любое другое приложение может зарегистрировать такую же.
Обычная https-ссылка, привязанная к домену, открывает приложение, когда связь домена и приложения подтверждена файлом на сайте, а если приложения нет, тот же адрес открывается в браузере. На Android это App Links с файлом assetlinks.json, на iOS универсальные ссылки с файлом apple-app-site-association.
Отложенный переход это отдельная история: пользователь ставит приложение из магазина, и после первого запуска его всё равно должно вынести на нужный экран. Сами платформы так не умеют, нужен сервис атрибуции.
adb shell am start -a android.intent.action.VIEW -d "myapp://order/42"
xcrun simctl openurl booted https://example.com/order/42Где спотыкаются
Проверяют только счастливый путь на установленном приложении. Матрица шире: приложение не установлено, установлено но ни разу не запускалось, свёрнуто, открыто на другом экране. Холодный и горячий старт дают разный стек возврата, и кнопка назад после перехода по ссылке ведёт себя по-разному.
Забывают про состояние пользователя и про данные в ссылке. Экран, требующий авторизации, удалённый заказ, чужой идентификатор, обрезанный или подменённый параметр. Тут же проверка безопасности: по ссылке нельзя попасть туда, куда обычной навигацией пользователю нельзя.
Не смотрят на сторону сайта. Файл подтверждения должен отдаваться по https, без редиректов, с правильным типом содержимого, и он кэшируется системой, поэтому правка на сервере доезжает не мгновенно. Заметная часть багов «ссылка открывается в браузере вместо приложения» живёт именно там, а не в коде приложения.