🌐 QA vs lifestyle Android Apps
Для нас важливо розуміти, коли додаток може «впасти», загубити дані чи поводитися некоректно, тому сьогодні поглянемо на життєвий цикл Android-додатка очима QA.
👀 Два підходи до розробки UI:
XML + Activity/Fragment — класичні додатки.
Jetpack Compose — сучасні декларативні додатки.
🗝 Ключові об’єкти в архітектурі Android-додатка (XML/Compose):
— Application — глобальний об’єкт, живе стільки, скільки процес додатка.
— Activity — екран або контейнер UI, має власний життєвий цикл.
— Fragment / Composable — частини UI, що можуть перевикористовуватися та мають власний lifecycle.
— ViewModel — шар бізнес-логіки, який переживає повороти екрана та збереження стану.
— Service / WorkManager — виконання фонових завдань.
🤖 Трохи пірнаємо в стейти Android-додатка:
📌 Not Running — додаток не запущений, система може його вивантажити.
Перевірка: cold start, splash-екран, ініціалізація SDK.
📌 Foreground (Active) — користувач взаємодіє з додатком.
Перевірка: UI-тести, функціональні сценарії, продуктивність.
📌 Background — Activity не видно, але код виконується (сервіси, push, синхронізація).
Перевірка: push-нотифікації, коректне збереження даних при згортанні.
📌 Destroyed / Killed by system — процес завершений (брак пам’яті, kill з таск-менеджера).
Перевірка: відновлення після kill, робота savedInstanceState, persistence (Room/SharedPrefs).
⚙️ Життєвий цикл Android-додатка (XML + Compose) та рекомендації для тестування
⚠️ XML/Activity + Fragment:
onCreate() → старт, ініціалізація UI та сервісів.
onStart() / onResume() → додаток стає видимим / активним.
onPause() / onStop() → згортання, перехід у background.
onDestroy() → завершення Activity (може не викликатися при kill).
onSaveInstanceState() → збереження стану при поворотах і kill.
⚠️ Jetpack Compose:
@ Composable функції → аналог onCreateView() для UI.
LaunchedEffect / SideEffect → асинхронні дії при старті.
DisposableEffect → очистка ресурсів при зникненні.
rememberSaveable → збереження стану між переворотами та kill.
ViewModel + StateFlow/LiveData → тримають дані при перевантаженні UI.
📣 Мої рекомендації для QA:
— Тестувати cold start: чи всі сервіси та SDK коректно ініціалізуються.
— Перевіряти перехід Foreground ↔ Background (дзвінок, push, згортання).
— Контролювати збереження даних при повороті екрана, зміні теми, kill процесу.
— Ловити креше при відновленні Activity (некоректна робота savedInstanceState).
— Тестувати поведінку UI при перевантаженні Compose/View (особливо List/RecyclerView).
— Перевіряти виконання фонових завдань (WorkManager, push, синхронізація).
— Контролювати binding даних у Compose (State, remember, ViewModel).
‼️ Популярні баги (XML + Compose):
— Краш при поверненні після kill через неправильне використання savedInstanceState.
— Втрата даних після повороту екрана (неправильне збереження у ViewModel).
— Подвійні виклики асинхронних задач у Compose через неправильне використання LaunchedEffect.
— Неправильна робота push-нотифікацій у background/kill режимі.
— UI «заморожується» через важкі обчислення у головному потоці.
Розуміння життєвого циклу Android — додатка — це «БАЗОВИЙ МІНІМУМ😁» для мобайл тестувальника. Якщо ти розумієш, коли додаток переходить у той чи інший стан, можна відловлювати втрати даних, некоректну обробку push-ів та креші при згортанні, а також контролювати коректну роботу UI та фонових процесів.

7 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів