Ответ
Smoke-тест (санитарная проверка) — это минимальный набор тестов для проверки базовой работоспособности критического функционального пути после сборки или развертывания. Его цель — быстро определить, "дымит" ли приложение (т.е. есть ли грубые ошибки), прежде чем запускать более глубокое тестирование.
Пример сценария smoke-теста для приложения доставки еды:
- Запуск: Приложение успешно открывается без крашей.
- Авторизация: Вход с валидными учетными данными.
- Главный экран: Загрузка и отображение списка ресторанов или категорий.
- Навигация: Переход в раздел профиля и обратно.
- Критический поток: Выбор ресторана, добавление товара в корзину и переход к экрану оформления заказа.
Пример кода (Kotlin + Espresso):
@Test
fun smokeTest_CriticalUserPath() {
// 1. Запуск и авторизация
onView(withId(R.id.login_button)).perform(click())
onView(withId(R.id.email_field)).perform(typeText("valid_user@example.com"), closeSoftKeyboard())
onView(withId(R.id.password_field)).perform(typeText("validPass123"), closeSoftKeyboard())
onView(withId(R.id.submit_button)).perform(click())
// 2. Проверка главного экрана
onView(withId(R.id.restaurants_recycler_view))
.check(matches(isDisplayed()))
// 3. Навигация и базовое действие
onView(withContentDescription("Profile")).perform(click())
onView(withId(R.id.user_name)).check(matches(isDisplayed()))
pressBack()
// 4. Добавление в корзину
onView(allOf(withId(R.id.restaurant_name), withText("Pizza Place")))
.perform(click())
onView(allOf(withId(R.id.menu_item), isDisplayed())).perform(click())
onView(withId(R.id.add_to_cart_button)).perform(click())
onView(withId(R.id.cart_badge)).check(matches(withText("1")))
}
Почему это важно: Smoke-тесты выполняются быстро и дают уверенность, что основная функциональность не сломана после сборки, экономя время на запуск полного регресса.