Какой у тебя опыт тестирования мобильных приложений?

«Какой у тебя опыт тестирования мобильных приложений?» — вопрос из категории Мобильное тестирование, который задают на 35% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я тестировал нативные (iOS/Android) и кроссплатформенные (React Native, Flutter) мобильные приложения. Мой опыт охватывает:

  • Функциональное и UI-тестирование: Проверка пользовательских сценариев, корректности отображения на разных устройствах и разрешениях (используя эмуляторы из Android Studio/Xcode и реальные устройства).
  • Автоматизация: Написание UI-тестов с помощью Appium (для кроссплатформенной автоматизации) и нативных фреймворков — Espresso для Android и XCUITest для iOS.
  • Нефункциональное тестирование: Проверка производительности, потребления памяти, поведения приложения при переключении сетей (3G/4G/Wi-Fi, использование Charles Proxy) и обработке прерываний (звонки, SMS).
  • Тестирование API бэкенда, на который опирается мобильное приложение, через Postman.

Пример теста на Appium с Python (Page Object Pattern):

# page_objects/login_page.py
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.username_field = (MobileBy.ACCESSIBILITY_ID, "usernameField")
        self.password_field = (MobileBy.ACCESSIBILITY_ID, "passwordField")
        self.login_button = (MobileBy.ACCESSIBILITY_ID, "loginButton")

    def login(self, username, password):
        WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.username_field)).send_keys(username)
        self.driver.find_element(*self.password_field).send_keys(password)
        self.driver.find_element(*self.login_button).click()

# tests/test_login.py
def test_successful_login(appium_driver):
    login_page = LoginPage(appium_driver)
    login_page.login("test_user", "secure_pass123")

    # Проверяем переход на главный экран
    welcome_element = WebDriverWait(appium_driver, 10).until(
        EC.presence_of_element_located((MobileBy.ACCESSIBILITY_ID, "welcomeMessage"))
    )
    assert welcome_element.is_displayed()
    assert "Welcome" in welcome_element.text

Также я интегрировал автоматизацию в CI/CD пайплайны с помощью Bitrise или GitHub Actions для запуска тестов на каждом коммите.