Какие проблемы решают разные технологии тестирования

«Какие проблемы решают разные технологии тестирования» — вопрос из категории Тестирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Unit-тесты проверяют отдельные компоненты (классы, методы) в изоляции. Пример:

@Test
fun addition_isCorrect() {
    assertEquals(4, 2 + 2)
}

Интеграционные тесты проверяют взаимодействие между модулями (например, работа с БД или API).

UI-тесты (Espresso/UI Automator) проверяют пользовательский интерфейс и навигацию. Пример:

onView(withId(R.id.button)).perform(click())
onView(withId(R.id.text)).check(matches(isDisplayed()))

Snapshot-тесты (Facebook Screenshot Tests) фиксируют состояние UI и сравнивают с эталоном.

Каждый тип тестов решает свои задачи: unit — логику, интеграционные — взаимодействие, UI — поведение приложения с точки зрения пользователя.