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

Ответ

Тестирование мобильных приложений — многогранный процесс, направленный на проверку различных аспектов качества.

Ключевые виды тестирования:

  1. Функциональное тестирование

    • Цель: Проверить, что все функции приложения работают согласно требованиям.
    • Что проверяют: Работоспособность основных сценариев (регистрация, поиск, покупка), обработка ввода, интеграция с API.
      # Пример сценария с Appium
      def test_add_to_cart(app_driver):
      search_field = app_driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Search")
      search_field.send_keys("Coffee")
      first_product = app_driver.find_element(AppiumBy.XPATH, "//android.widget.Button[@text='ADD TO CART']")
      first_product.click()
      cart_badge = app_driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Cart, 1 item")
      assert cart_badge.is_displayed()
  2. Тестирование совместимости (Compatibility)

    • Цель: Убедиться, что приложение корректно работает на разных устройствах, версиях ОС, разрешениях экранов и при различных условиях сети (3G, 4G, Wi-Fi).
  3. Тестирование удобства использования (Usability)

    • Цель: Оценить, насколько приложение интуитивно понятно, удобно и приятно для пользователя.
    • Что проверяют: Логичность навигации, читаемость текста, соответствие гайдлайнам платформы (Human Interface Guidelines / Material Design).
  4. Тестирование производительности (Performance)

    • Цель: Проверить скорость отклика, стабильность и потребление ресурсов.
    • Что проверяют: Время запуска, потребление памяти и CPU, расход заряда батареи, поведение под нагрузкой.
  5. Тестирование безопасности (Security)

    • Цель: Выявить уязвимости, которые могут привести к утечке данных.
    • Что проверяют: Безопасное хранение данных (шифрование), защита от MITM-атак, безопасность API-ключей, проверка вводимых данных.
  6. Тестирование установки и обновления

    • Цель: Убедиться, что приложение корректно устанавливается, обновляется и удаляется с устройства.
  7. Регрессионное тестирование

    • Цель: Проверить, что новые изменения в коде не сломали существующий функционал. Часто автоматизируется на основе набора ключевых сценариев.

Эти виды тестирования часто комбинируются, например, функциональное тестирование на множестве устройств (совместимость) или проверка производительности при плохом соединении (сеть).

Ответ 18+ 🔞

А, слушай, ну вот тестирование мобилок, это ж целая ёперная вселенная, а не работа! Сидишь такой, тыкаешь в экран, а в голове одна мысль: "Ну работай же, сука, ну что тебе стоит?!"

Вот смотри, какие тут, блядь, слои этой матрёшки есть, чтобы не облажаться и не выпустить в продакшен какую-нибудь дичь.

Основные загоны, в которые тебя обязательно загонят:

  1. Функциональное тестирование (или "а оно вообще работает?")

    • Суть: Тыкаешь во все кнопки, как обезьяна, и смотришь, не вылетает ли приложение в тартарары. Всё должно делать то, что обещали в требованиях, а не то, что выдумал пьяный разработчик в три ночи.
    • Что мучаем: Регистрация, поиск, оплата — весь этот цирк. И особенно, как эта штука общается с сервером (эти ваши API), чтобы он не послал её нахуй в ответ.
      # Вот смотри, как мы автоматизируем эту рутину, чтобы не кликать тысячу раз вручную
      def test_add_to_cart(app_driver):
      search_field = app_driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Search")
      search_field.send_keys("Coffee") # Ищем кофе, бля, без него же никак
      first_product = app_driver.find_element(AppiumBy.XPATH, "//android.widget.Button[@text='ADD TO CART']")
      first_product.click() # Тык в кнопку, и молимся
      cart_badge = app_driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Cart, 1 item")
      assert cart_badge.is_displayed() # Если иконка корзины появилась — ура, не обосрались!
  2. Тестирование совместимости (или "а на моём кирпиче Nokia 3310 запустится?")

    • Суть: Вот это просто пиздец, а не вид. Надо проверить, как приложение ведёт себя на трёхстах разных телефонах: от новомодного айфона до дедушкиного андроида с двумя гигами памяти. Плюс разные версии ОС, разрешения экранов и, о боже, типы сети! От Wi-Fi до еле живого 2G, где картинка грузится, как будто её рисуют через хуй.
  3. Тестирование удобства (или "а где тут, блядь, кнопка назад?")

    • Суть: Тут надо включить режим "бабушка-смартфон". Приложение должно быть таким, чтобы даже мартышка разобралась. Если пользователь не может за три тапа найти нужный раздел и начинает материться — это провал. Навигация должна быть логичной, текст читаемым, а не как в телеграмме от шизофреника.
  4. Тестирование производительности (или "почему оно жрёт батарею, как свинья?")

    • Суть: Запускаешь приложение и смотришь: не греется ли телефон, как утюг? Не сжирает ли оно всю оперативку и половину заряда за пять минут? Запускается ли оно хотя бы до твоего выхода на пенсию? А что будет, если тысяча пользователей одновременно начнут тыкать? Вот это всё и есть производительность, и если её нет — приложению пизда.
  5. Тестирование безопасности (или "а не украдут ли мои фотки котиков?")

    • Суть: Самый важный и параноидальный пункт. Надо думать, как хакер: а куда тут можно влезть? Пароли и данные должны шифроваться, а не храниться в открытом виде. Соединение с сервером — защищённое. Чтобы никакой ушлёпок не мог перехватить твой логин и не начал рассылать всем спам.
  6. Тестирование установки (или "а обновится ли оно, или придёшь к полному пиздецу?")

    • Суть: Казалось бы, ерунда. Но нет! Надо проверить, что приложение ставится с нуля, что оно нормально обновляется со старой версии (а не стирает все настройки, блядь), и что после удаления от него не остаётся мусора по всему телефону.
  7. Регрессионное тестирование (или "а мы случайно ничего не сломали?")

    • Суть: Вот это святое. Каждый раз, когда разработчики "что-то немного поправили", нужно пробежаться по основным сценариям и убедиться, что они не угробили то, что работало ещё вчера. Иначе получается: "починили поиск, но сломали оплату". Классика, ебать!

И главное, чувак, всё это редко живёт отдельно. Чаще всего это такой винегрет: проверяешь функционал (1) сразу на куче устройств (2) с плохим интернетом (4), и при этом думаешь, удобно ли это (3) и не сливаются ли данные (5). Вот такая, блядь, работа. В рот меня чих-пых, когда всё успевать?