Smoke Test в мобільній розробці — що це, завдання та як застосовується

Автор: IT Sectr Опубліковано: 2026-04-08 Час читання: 9 хв

Smoke Test (димове тестування) — це мінімальний набір перевірок, який виконується після збірки мобільного додатка для підтвердження того, що основні функції працюють. Smoke Test дозволяє швидко відбракувати нестабільні збірки без проведення повного регресійного циклу. За даними Google Testing Blog (2024), Smoke Test скорочує час зворотного зв'язку для розробника з 2–3 годин до 10–15 хвилин. Smoke Test — це перший фільтр якості в конвеєрі CI/CD, який запобігає потраплянню зламаних збірок на наступний етап.

Головне

  • Smoke Test — швидка перевірка основних функцій додатка для відбракування нестабільних збірок.
  • Завдання — підтвердження працездатності критичного шляху користувача (login, стрічка, профіль).
  • Smoke Test виконується до регресійного тестування і зазвичай займає 5–15 хвилин.
  • Автоматизація Smoke Test в CI/CD — обов'язковий елемент сучасного конвеєра мобільної розробки.
  • Відмінність від регресії — Smoke Test перевіряє лише "критичний шлях", регресія покриває всю функціональність.

Що таке Smoke Test?

Smoke Test (димове тестування) — це набір швидких тестів, які перевіряють основні функції додатка без глибокого аналізу. Термін прийшов з апаратної інженерії: якщо пристрій після збірки починає диміти, його не відправляють на повне тестування. В мобільній розробці Smoke Test виконує ту ж функцію — відсіює свідомо непрацездатні збірки. За даними Microsoft DevOps (2024), впровадження Smoke Test скорочує кількість дефектів, що досягають QA-команди, на 40%.

Smoke Test виконується на кожному новому білді — як на Android, так і на iOS. В ідеалі Smoke Test має займати не більше 15 хвилин і запускатися автоматично після успішної збірки. Критерій проходження — 100% тестів з набору Smoke Test мають завершитися успішно. Якщо хоча б один тест падає, збірка позначається як нестабільна і не відправляється на подальше тестування. За даними Google Testing Blog (2024), такий підхід скорочує час доставки фіч до користувачів на 25%.

Smoke Test може бути як ручним (чек-лист з 5–10 пунктів), так і автоматизованим. В сучасних мобільних проектах перевага надається автоматизованому Smoke Test, вбудованому в CI/CD. Ручний Smoke Test виправданий лише на ранніх стадіях проекту, коли автоматизація економічно невигідна. За даними Bitrise (2025), 73% команд мобільної розробки автоматизують Smoke Test.

Чим Smoke Test відрізняється від регресійного тестування?

Smoke Test і регресійне тестування часто плутають, але це різні практики з різними цілями. Регресійне тестування перевіряє, що зміни в коді не зламали існуючу функціональність. Воно покриває всі модулі та сценарії додатка, включаючи рідкісні та граничні випадки. Smoke Test перевіряє лише критичний шлях — основні сценарії, без яких додаток непотрібний. Глибина покриття — головна відмінність: Smoke Test покриває 5–10% функціональності, регресія — 80–100%.

Друга відмінність — час виконання. Регресійний набір для мобільного додатка може займати від 2 до 12 годин залежно від розміру проекту та кількості платформ. Smoke Test займає 5–15 хвилин. За даними Sauce Labs (2025), середній час виконання регресійного набору для iOS-додатка — 4.5 години, для Android — 3.2 години. Smoke Test на обох платформах вкладається в 10–15 хвилин.

Третя відмінність — місце в пайплайні. Smoke Test виконується одразу після збірки, до регресійного тестування. Якщо Smoke Test не пройдено, регресія не запускається — це економить ресурси CI/CD. Pipeline efficiency — Smoke Test відсіює до 30% збірок, які не пройшли б регресію, а зекономлених ресурсів вистачає на паралельний запуск інших завдань.

ПараметрSmoke TestРегресійне тестування
МетаШвидка перевірка критичного шляхуПеревірка всієї функціональності
Обсяг5–10% сценаріїв80–100% сценаріїв
Час5–15 хвилин2–12 годин
ЧастотаНа кожен білдПеред релізом або щодня
CI/CDПісля збірки, до регресіїПісля Smoke Test

Що входить в Smoke Test мобільного додатка

Запуск додатка

Запуск додатка — перший і найважливіший тест. Додаток має запускатися без крашу на всіх цільових пристроях. Smoke Test перевіряє холодний старт: встановлення → відкриття → відображення першого екрану. Якщо додаток падає при запуску, подальше тестування безглузде. XCUITest та Espresso дозволяють автоматизувати перевірку запуску в 2–3 рядки коду. Launch argument `-AppleLanguages (ru)` допомагає перевірити локалізацію на старті.

Авторизація

Авторизація — другий критичний сценарій. Smoke Test має перевірити, що форма логіну відображається, поля вводу реагують на дотик, кнопка входу відправляє запит і додаток переходить на головний екран після успішної авторизації. Помилка авторизації блокує доступ до всіх інших функцій, тому її перевірка входить в мінімальний набір. Token refresh — додаткова перевірка для додатків з OAuth 2.0.

Завантаження контенту та навігація

Завантаження основного контенту — третій тест Smoke Test. Головний екран або стрічка додатка мають завантажуватися і відображати дані. Якщо API не відповідає або парсинг відповіді зламаний, користувач бачить порожній екран. Перевірка мережі в Smoke Test включає базовий GET-запит до основного ендпоінту та перевірку, що відповідь має очікувану структуру. Навігація — четвертий сценарій. Smoke Test проходить по основних екранах додатка: головний → пошук → профіль → налаштування. Tab bar та бокове меню — типові джерела проблем в навігації, які Smoke Test виявляє на ранньому етапі.

Автоматизація Smoke Test в CI/CD

Fastlane — стандартний інструмент для автоматизації мобільного CI/CD. Smoke Test на Fastlane запускається через `scan` (для XCUITest) або `gradle` (для Espresso). Fastlane дозволяє налаштувати запуск Smoke Test на кількох пристроях паралельно, що скорочує загальний час. Конфігурація в Fastfile включає таргет на Smoke Test suite та поріг проходження: 100% успішних тестів.

GitHub Actions (2024) опублікував шаблон мобільного CI/CD зі вбудованим Smoke Test. Шаблон включає три етапи: збірка → Smoke Test → регресія. Якщо Smoke Test падає, шаблон автоматично завершує пайплайн і відправляє повідомлення в Slack або Telegram. Matrix strategy дозволяє запускати Smoke Test на трьох версіях iOS та п'яти моделях Android одночасно.

Розподіл відповідальності в CI/CD: Smoke Test відповідає за швидкий зворотний зв'язок, регресія — за повне покриття. Smoke Test не має дублювати регресію, і навпаки. Гранулярність Smoke Test — одна перевірка на один критичний сценарій. Якщо Smoke Test займає більше 15 хвилин, його потрібно оптимізувати: прибрати надлишкові перевірки або розпаралелити виконання.

ruby
# Конфігурація Fastfile для Smoke Test
platform :ios do
    lane :smoke do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone SE'],
            testplan: 'SmokeTest',
            output_directory: 'reports/smoke',
            fail_build: true
        )
    end

    lane :regression do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone 14', 'iPhone SE'],
            testplan: 'FullRegression'
        )
    end
end

Інструменти для Smoke Test

XCUITest — фреймворк Apple для UI-тестування iOS-додатків. XCUITest використовується для автоматизації Smoke Test: запуск додатка, перевірка елементів інтерфейсу, симуляція дій користувача. В поєднанні з Xcode Server або GitHub Actions XCUITest запускається при кожному коміті. XCTest — базовий фреймворк для unit-тестів, який доповнює XCUITest для перевірки логіки.

Espresso — фреймворк Google для UI-тестування Android. Espresso синхронізується з UI-потоком і гарантує, що всі анімації завершені до початку перевірки. Espresso підтримує перевірку через `onView(withId(...)).check(matches(...))`. Android Test Orchestrator запускає кожен Smoke Test в окремому процесі, що запобігає впливу попередніх тестів на наступні.

Detox — фреймворк для React Native, який підтримує Smoke Test та grey-box тестування. Detox синхронізується з React Native bridge і автоматично очікує завершення асинхронних операцій. Grey-box тестування дозволяє Detox перевіряти стан додатка без прямого доступу до вихідного коду.

Приклад Smoke Test на Swift та Kotlin

XCUITest для iOS містить дві перевірки: запуск додатка та відображення головного екрану. Тест запускає додаток через `XCUIApplication().launch()` і перевіряє, що ключовий елемент (наприклад, `navigationBar`) існує. Якщо додаток падає при запуску, XCTest framework фіксує помилку і тест завершується з FAIL. Smoke Test не перевіряє вміст — лише що екран відкрився.

Espresso для Android використовує `ActivityScenario` для запуску Activity та `onView` для перевірки елементів. Критична відмінність між платформами: iOS-симулятор може показувати відмінну поведінку від реального пристрою, тому Smoke Test на Android рекомендується запускати на Firebase Test Lab або емуляторі. Firebase Test Lab підтримує паралельний запуск Smoke Test на 10 пристроях.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

    override func setUp() {
        continueAfterFailure = false
        app.launch()
    }

    func testLoginButtonExists() {
        XCTAssertTrue(app.buttons["Увійти"].exists)
    }

    func testLoginFlow() {
        app.textFields["email"].tap()
        app.textFields["email"].typeText("test@test.com")
        app.secureTextFields["password"].tap()
        app.secureTextFields["password"].typeText("password123")
        app.buttons["Log In"].tap()
        XCTAssertTrue(app.staticTexts["Welcome"].waitForExistence(timeout: 5))
    }
}

Приклад вище показує Smoke Test для екрану логіну на iOS. Перший тест перевіряє, що кнопка логіну існує на екрані. Другий тест проходить повний шлях авторизації і перевіряє, що після успішного входу відображається привітальне повідомлення. Timeout в 5 секунд для waitForExistence — стандартне значення для Smoke Test: якщо UI-елемент не відображається за цей час, додаток працює некоректно.

Часто задавані питання

Скільки тестів має бути в Smoke Test?

Оптимальна кількість — від 5 до 15 тестів на один модуль. Smoke Test має покривати критичний шлях користувача, але не намагатися охопити всю функціональність. Критерій — якщо всі тести Smoke Test проходять, додаток можна відкривати в QA-середовищі для подальшого тестування.

Чим Smoke Test відрізняється від sanity check?

Smoke Test перевіряє стабільність збірки і виконується на кожному білді. Sanity check — більш вузький набір тестів, який виконується після внесення конкретних змін. Sanity check відповідає на питання "чи зламала ця зміна функціональність X", а Smoke Test — "чи працює збірка в принципі".

Чи потрібно автоматизувати Smoke Test?

Так, автоматизація Smoke Test — обов'язкова практика для проектів з частими релізами. Автоматизація забезпечує консистентність перевірок і швидкість виконання. Ручний Smoke Test виправданий лише на ранніх етапах проекту, коли кількість збірок не перевищує 2–3 на тиждень.

Що робити, якщо Smoke Test не пройшов?

Збірка позначається як нестабільна і не відправляється на подальше тестування. Розробник отримує повідомлення з логами падіння Smoke Test. Після виправлення проблеми створюється нова збірка, на якій Smoke Test запускається повторно. Блокуючий дефект фіксується в трекері.

Як часто потрібно оновлювати Smoke Test?

Smoke Test оновлюється при кожній зміні критичного шляху користувача. Якщо додається новий обов'язковий екран (наприклад, onboarding), він має увійти в Smoke Test. Рекомендується переглядати набір Smoke Test кожен спринт на предмет актуальності перевірок.

Підсумки

  • Smoke Test — це мінімальний набір перевірок критичного шляху додатка, виконуваний після кожної збірки.
  • Основні перевірки — запуск додатка, авторизація, завантаження контенту та навігація по основних екранах.
  • Відмінність від регресії — Smoke Test покриває 5–10% сценаріїв і виконується за 5–15 хвилин, а не за години.
  • Інструменти — XCUITest для iOS, Espresso для Android, Detox для React Native.
  • Автоматизація Smoke Test вбудовується в CI/CD через Fastlane, GitHub Actions або Bitrise.
  • Smoke Test виконується до регресійного тестування і відсіює до 30% нестабільних збірок.
  • Рекомендується переглядати склад Smoke Test кожен спринт для підтримання актуальності.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також