← Python мануфактура

Після цього уроку ви зможете

Конспект і таймкоди

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

  1. Оберіть один власний mobile flow і визначте, що має перевірятися на backend, native component та system E2E levels.
  2. Складіть мінімальну device matrix із поясненням кожного device та OS version.
  3. Назвіть 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.