← До пошуку

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

0:00

Native і cross-platform технології

Flutter і React Native дозволяють розвивати iOS та Android з однієї основної codebase, а native-модулі підключати для Bluetooth, geolocation, notifications чи інших можливостей системи. Це прискорює MVP, але native-застосунки на Swift і Kotlin зазвичай мають менше проміжних шарів і працюють швидше.

Навіть у cross-platform продукті команди часто розділяються за iOS/Android або за product streams. Тестувальнику потрібно розуміти специфіку кожної платформи, а не вважати однакову codebase гарантією однакової поведінки.

9:14

Platform design guidelines і типи застосунків

iOS та Android мають різні звичні navigation patterns, date pickers, системні кнопки й жести. Те, що інтуїтивно для користувача iOS, може бути незрозумілим на Android, тому UI/UX guidelines обох платформ є практичним джерелом тестових очікувань.

Розрізняються web, hybrid, cross-platform і native застосунки. Hybrid app поєднує native shell з WebView-екранами, cross-platform app будується на Flutter, React Native чи Xamarin, а native app реалізується окремо під конкретну ОС.

15:08

WebView, rendering і accessibility

WebView може мати доступ до native navigation, Bluetooth, secure storage та інших можливостей через інтеграційний шар. Водночас Flutter/React Native rendering і custom components створюють окремі ризики для accessibility та поведінки на різних пристроях.

Найпростіша практична accessibility-перевірка — збільшити системний font size й переконатися, що текст не виходить за кнопки, поля та контейнери, а елементи залишаються клікабельними. Також згадуються contrast, tactile feedback і безпечна animation, але детальний аудит цих стандартів винесено за межі відео.

23:22

Test builds, repositories і feature flags

iOS test builds поширюються через TestFlight, а build/distribution pipeline може використовувати App Center або platform developer consoles. Потрібно розрізняти dev build, прив'язаний до test/stage backend, і production-configured build, який перевіряють перед release.

Тестувальнику рекомендовано мати read access до iOS/Android repositories, щоб бачити diff, перемикатися на feature branch і збирати зміни локально через Xcode чи Android Studio. Feature flags дають змогу вмикати функціонал для ролей, оточень або частини користувачів без розриву між backend і mobile releases.

**Актуальність станом на 2026-08-08.** Visual Studio App Center завершив роботу 31 березня 2025 року; тимчасове продовження Analytics & Diagnostics закінчилося 30 червня 2026 року. Згадку у відео слід сприймати як історичну, а новий distribution/diagnostics workflow звіряти з актуальними сервісами платформи ([Microsoft Learn](https://learn.microsoft.com/en-us/appcenter/retirement)).

32:29

Proxy-debugging і некоректні backend responses

Proxyman, Charles або Fiddler дозволяють перехопити request, змінити його, затримати відповідь чи підмінити response. Так перевіряються offline mode, повільний інтернет, перемикання Wi-Fi/LTE, timeouts, 4xx/5xx і неочікувані backend payloads.

Особливу увагу приділено null, відсутнім полям і зміні типів: замість масиву може прийти null, число може мати інший тип, а object mapping — завершитися crash. Mobile client має коректно переживати serialization/deserialization помилки й недоступність third-party services.

40:00

Third-party SDK, SMS-витрати й testability

Несумісні версії SDK або gRPC-залежностей можуть спричинити crash лише під час відкриття конкретного екрана. Окремо розглядається SMS/OTP flow: повторні запити створюють реальні витрати й можуть стати resource-exhaustion атакою, тому потрібні rate limits, bot protection і безпечний test bypass.

Dev build може передавати спеціальний header або environment configuration, щоб не надсилати реальне SMS і не викликати reCAPTCHA. Це приклад testability — архітектурної властивості, яку тестувальник має обговорювати з командою до автоматизації.

45:50

Device analytics і перемикання оточень

Device matrix слід будувати за production analytics: OS versions, vendor/model, screen resolution, update rate та частка foldable devices. Ще корисніше зіставити ці дані з користувачами, які приносять основний revenue, щоб бюджет на реальні пристрої відповідав бізнес-ризику.

Стандартні platform components зменшують ризик, але Samsung, Huawei та інші vendors можуть мати власні UI/OS особливості й різну доступність Google services. Для dev build варто додати простий environment switcher між dev, QA, stage і production endpoints, а logs збирати через Xcode/Android Studio.

58:36

API versioning для старих mobile clients

Встановлена mobile app продовжує використовувати відому їй версію API, навіть коли backend уже оновлено. Несумісна зміна поля або структури response може масово зламати старі iOS/Android builds, тому новий контракт виносять у v2, не руйнуючи v1.

Перевіряти потрібно обидва напрямки сумісності: стару app з новим backend і нову app зі старішим доступним backend contract. Це особливо важливо для користувачів, які рідко оновлюють застосунок.

1:03:29

Native automation і межі автоматизованого UI

Для native iOS згадується XCUITest, для Android — Espresso з wrapper на кшталт Kaspresso/Kakao, для React Native — Detox, для Flutter — Flutter Driver. Native tools мають коротший шлях до UI й швидше реагують на оновлення екрана.

Складні canvas/builders, custom maps і довільна graphics interaction можуть бути дешевшими для ручної перевірки або вимагати окремої testability роботи з розробниками. Форми, списки та типові business flows автоматизуються значно простіше.

**Актуальність станом на 2026-08-08.** Для нових Flutter integration tests офіційна документація веде до пакета integration_test, а для наявних flutter_driver suites дає окремий migration path ([Flutter documentation](https://docs.flutter.dev/release/breaking-changes/flutter-driver-migration)).

1:06:44

Appium architecture і remote latency

Appium привабливий знайомим Selenium-подібним API та єдиним стеком для iOS/Android. Але кожна дія проходить через client library, Appium Server, UIAutomator/XCUITest driver і сам device; у remote farm додаються мережеві переходи між CI та provider infrastructure.

Через цей ланцюжок remote mobile tests повільніші й потребують більших timeouts. Локальний запуск на машині розробника дає значно швидший feedback і робить автоматизацію корисною команді, а не лише джерелом окремого report.

**Актуальність станом на 2026-08-08.** У Appium 2 platform drivers є окремими встановлюваними extensions; client-server модель і багаторівнева XCUITest/WebDriverAgent architecture лишаються актуальними, але setup треба звіряти з документацією конкретного driver ([Appium documentation](https://appium.io/docs/en/latest/intro/drivers/)).

1:13:33

Backend-first automation і тонкий mobile suite

Якщо mobile client переважно відмальовує backend data, основну логіку варто автоматизувати на API-рівні, а на mobile залишити приблизно десяток ключових revenue flows. Якщо ж client містить значну локальну логіку, UI/component coverage потрібно більше.

Validation, яка живе всередині форми, доречно перевіряти component test через native framework. Просте відображення backend-масиву краще глибоко перевірити на backend, а на реальному device пройти під час regression. Flaky E2E може вказувати не лише на поганий тест, а й на нестабільність, яку бачать користувачі.

1:23:41

Scroll, virtualized lists і locator contracts

Mobile list часто рендерить лише елементи, видимі на screen, тому до п'ятого чи наступного item неможливо звернутися без scroll. Це відрізняється від звичайного HTML, де весь отриманий DOM часто вже доступний driver.

Для пошуку радять accessibilityId, accessibility label, Android resource ID або content description, а не XPath. Тестувальник може сам додавати ці атрибути в application code і надсилати невеликий PR на review, бо hotfixes та custom components регулярно порушують навіть узгоджений locator guideline.

1:33:02

Simulators, real devices і mobile farms

Чим більше застосунок використовує стандартні components, тим більше smoke/feature checks можна виконати на simulator/emulator, залишивши фінальну перевірку на реальних пристроях. Custom animation, vendor-specific behavior і складні native components підвищують цінність physical devices.

Паралельний запуск на реальних девайсах потребує mobile farm; BrowserStack і Sauce Labs надають готову інфраструктуру, а велика продуктова команда може побудувати власну. Незалежно від інструмента, короткий suite має запускатися локально, а масштабна ферма виправдана лише достатнім mobile traffic і складністю продукту.