Конспект і таймкоди
0:00
Типи мобільних застосунків
На старті розрізняються native-застосунки для Android та iOS, hybrid/web-mobile рішення і cross-platform стеки на кшталт React Native, Flutter, Kotlin Multiplatform та Xamarin. Native Android переважно пишеться на Kotlin, iOS — на Swift або Objective-C; cross-platform рішення намагаються повторно використати частину коду між платформами.
Стратегія тестування залежить не лише від технології UI, а й від розподілу логіки. Один застосунок може майже повністю містити контент і переходи локально, а інший бути тонким клієнтом для складного backend. Тому однакова кількість екранів ще не означає однаковий набір перевірок.
2:10
Чому один Appium-сценарій не гарантує однаковий тест
Appium і WebdriverIO дають спільний зовнішній API для iOS та Android, але додають кілька шарів комунікації між тестом, Appium server, platform driver і device. Через це сценарії повільніші, а діагностика instability складніша, ніж у native tests.
Одна бізнес-дія також може мати різний UI на різних платформах: date picker, введення числа, back navigation і переходи між екранами підпорядковуються різним design guidelines. Відрізняється й lifecycle: після згортання або повернення екран може відновити state з local storage чи повторно звернутися до backend. Спільний тест часто все одно отримує platform-specific branches або окремі page/screen objects.
Уточнення
Застереження
Назва cross-platform stack не визначає test strategy автоматично. Перед вибором framework потрібен короткий proof of concept на accessibility tree, critical flow і цільових devices.
Термін
Appium
Open-source ecosystem для UI automation, у якому client надсилає WebDriver-compatible commands до Appium server, а platform driver виконує їх на конкретній automation technology.
5:30
Native tests і внесок у testability
Для важливих або частих перевірок радиться розглянути native інструменти: XCTest/XCUITest на iOS та Espresso або зручнішу обгортку Kakao на Android. Такі тести ближчі до застосунку, швидше виконуються і зрозуміліші mobile developers, які можуть запускати їх локально та в CI.
Автоматизатор має покращувати testability самого продукту: додавати або просити додати стабільні accessibilityIdentifier, accessibilityLabel, Android resource-id і content descriptions. Native selectors, predicates і class chains зазвичай кращі за XPath. Якщо команда контролює source code, стабільний атрибут дешевший за постійне ускладнення locator-а в зовнішньому test suite.
Уточнення
Застереження
Current Android guidance перелічує Espresso, UI Automator і Compose Test як окремі instrumented testing APIs. Це уточнює перелік інструментів із відео, але не встановлює універсальне mapping без аналізу конкретного UI.
Термін
XCUIAutomation / XCTest UI tests
Apple UI automation framework, інтегрований із XCTest, що взаємодіє із застосунком через accessibility information і дозволяє знаходити UI elements, виконувати actions та перевіряти state.
Термін
Android UI testing APIs
Поточна Android guidance окремо перелічує Espresso, UI Automator і Compose Test як instrumented UI testing APIs; конкретний seam потрібно обрати за UI surface та scope тесту.
Практика
Вибір mobile automation strategy
- Оберіть один власний mobile flow і визначте, що має перевірятися на backend, native component та system E2E levels.
- Складіть мінімальну device matrix із поясненням кожного device та OS version.
- Назвіть accessibility attributes, яких бракує для стабільних selectors.
Результат: Односторінкова strategy з test levels, device matrix і переліком testability changes.
8:20
React Native, Flutter і змішана стратегія
У React Native частина компонентів доступна як native UI, частина може поводитися як web content, а для platform-specific можливостей додається Swift або Kotlin code. Крім Appium, для такого стеку згадується Detox. Якщо продукт значною мірою рендериться як web view, більшу частину логіки іноді дешевше перевіряти Playwright-тестами на web-рівні, залишивши кілька справжніх mobile flows для інсталяції, permissions і наскрізної інтеграції.
Flutter сам рендерить значну частину UI, тому accessibility tree і поведінка елементів можуть відрізнятися від стандартних native components. Це не робить Flutter автоматично добрим чи поганим: потрібен окремий proof of concept на реальному застосунку, перш ніж обирати automation stack.
12:30
Що входить у mobile-specific coverage
Для підготовки до mobile testing перелічено не лише UI automation: типи застосунків, real device проти simulator/emulator, cloud device farms, network variability і traffic sniffing, distribution builds, роботу з Android Studio та Xcode, device fragmentation і різницю між Android та iOS design guidelines.
Функціональне покриття має враховувати OAuth/login, in-app purchases, notifications, offline та error handling, deep links, різні клавіатури, clipboard, permissions під час onboarding, дзвінки та перемикання між apps, screen rotation, GPS simulation, installation/update compatibility і localization. Окремий шар — mobile performance: CPU, GPU, memory, battery і device logs.
17:10
Device matrix і цінність mobile-досвіду
Device matrix не варто будувати лише за загальною популярністю моделей. Практичніший критерій — якими devices та OS versions користуються активні й прибуткові клієнти продукту. Це допомагає спочатку покрити ризик, який справді впливає на бізнес, а не рідкісні конфігурації.
Android fragmentation створює додаткові ризики через vendor-specific changes, особливо на Samsung та інших кастомізованих збірках. Саме тому mobile automation experience цінується: інженер має розуміти platform lifecycle, distribution, permissions, observability і device-specific failures, а не лише вміти записати Appium steps.
Джерела та додаткові матеріали
- Intro to Appium Drivers ↗Appium Project · перевірено 2026-07-31
Пояснює server/driver architecture, що стоїть за Appium commands.
- Build instrumented tests ↗Google · перевірено 2026-07-31
Дає офіційну точку входу до native Android UI tests і synchronization model.