Ответ
Тестирование deep links (ссылок, которые открывают конкретный экран или выполняют действие внутри приложения) — важная часть проверки интеграции приложения с внешним миром.
Что такое deep link?
Это URI-схема (например, myapp://) или универсальная ссылка (https), которая ведет прямо в определенное место приложения: myapp://product/123 или https://example.com/product/123.
Ключевые сценарии для тестирования:
| Сценарий | Что проверяем |
|---|---|
| Приложение установлено | Корректное открытие нужного экрана с переданными параметрами (например, товар с ID 123). |
| Приложение не установлено | Перенаправление в App Store/Play Market (для кастомных схем) или открытие fallback-веб-страницы (для универсальных ссылок). |
| Невалидная/битая ссылка | Обработка ошибки: показ информативного сообщения пользователю или открытие главного экрана. |
| Глубокое состояние | Ссылка открывает экран, доступный только авторизованным пользователям. Проверяем корректный redirect на логин. |
Практические шаги тестирования:
-
На устройстве/эмуляторе:
- Ввод ссылки в браузере Safari/Chrome.
- Открытие ссылки из приложения "Заметки" или почтового клиента.
-
Использование командной строки:
# iOS (через Simulator) xcrun simctl openurl booted "myapp://settings" # Android (через ADB) adb shell am start -W -a android.intent.action.VIEW -d "myapp://settings"
-
В автоматизации (Пример для Android Espresso):
@Test fun testDeepLinkOpensProductScreen() { // Запуск активности по deep link val intent = Intent(Intent.ACTION_VIEW, Uri.parse("myapp://product/789")) activityTestRule.launchActivity(intent) // Проверка, что открылся экран с деталями товара и ID корректный onView(withId(R.id.product_title)).check(matches(isDisplayed())) onView(withId(R.id.product_id)).check(matches(withText("789"))) } - Инструменты: Postman (для проверки HTTP-редиректов универсальных ссылок), Charles Proxy/Fiddler (для анализа сетевых запросов).