06/09/2022

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

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

Симулятор vs Эмулятор

Симулятор

Обычно используется для iOS.

  • Железо не эмулируется, только софтверная часть
  • Работает быстрее реальных устройстви мы не можем гарантировать что на реальном устройстве будет работать также
  • Невозможно установить телефонные приложений и работать с Siri
  • Невозможно проверить "железные" фичи: Bluetooth, NFC, звонки

Баги возникающие на симуляторе в любом случае нужно править так как рано или поздно они могут появиться и на реальном устройстве:

  • Краш на симуляторе/девайсе
  • Разъезжается верстка

Эмулятор

Используется для Android.

  • Имеется и Software и Hardware, можно задавать параметры памяти и т.д.
  • Работает медленно
  • Нет покупок внутри приложений
  • Google сервисы

Баги:

  • Device-specific
  • Ошибки в транзакции
  • Библиотеки не под x86

Достоинства:

  • Можно задавать различные разрешения
  • Можно работать с памятью
  • Тестировать GPS
  • Перехват и шейпинг(проверка траффика)

Реальные устройства

Основная проблема что не всегда есть возможность создать собственную ферму устройств

  • медленный Debug
  • iOS: разметка
  • Работа с памятью, сложно сэмулировать нужно забивать память вручную
  • Android: перехват трафика
  • Многообразие устройств

Среда разработки

Android SDK, XCode

ADB - Android Debug Bridge - устанавливается вместе с Android SDK, и позволяет управлять устройством на базе Android.

ADB позволяет:

  • аосмотреть какие устройства подключены и могут работать с ADB
  • просматривать логи
  • копировать файлы с/на аппарат
  • устанавливать/удалять приложения
  • выполнять различные скрипты управления

Логи

Verbose - вся информация с приложения Debug - логи для дебаг режима Info - информация о состоянии Warn - предупреждение о нештатных ситуациях Error - ошибка в приложении

Если баг возникает у пользователя на проде, то проверяются логи в Fabric или Firebase Crashlitics.

В Firebase Crashlitics можно смотреть статистику работы без сбоев - какой процент пользователей работает без сбоев, список ошибок которые произошли и т.д.

Crashlytics отображает:

  • Период возникновени ошибки
  • Тип ошибки
    • Crash
    • Warning
  • Версия приложения
  • Устройство
  • Операционная система
  • Идентификатор пользователя

Developer Console. Ошибки ANR и сбои

  1. Период возникновения ошибки
  2. Версия Android
  3. Версия приложения

Минусы: 1. Нет поиска по устройству 2. Убрали поиск по отчетам пользователей

Перехват трафика

  • Charles
  • Fidler

Проверяются запросы и ответы на клиенте и сервере.

Если приходит ответ в зашифрованном виде то можно селать следущее чтобы его расшифровать

  1. Настроить прокси на устройстве или эмуляторе
  2. Установить SSL сертификат для HTTPS на устройстве с которого считываются запросы
  3. Выполнить действия с устройства
  4. Изучать необходимую информацию

Тестирование API

  • Postman
    • Проверка сервера без клиента
    • Проверка получаемых данных от сервера

Аналитика

  • Firebase - Firebase Debug View
Android adb shell setprop debug.firebase.analytics.app

<package_name>

iOS
в командной строке Xcode: -FIRDebugEnabled

  • Google Analytics

adb shell setprop log.tag.GAv4 DEBUG

adb logcat -v time -s GAv4

Отправляемые события будут отображаться в консоли но в самом Google Analytics нет реал тайм борда и в лучшем случае через сутки можно будет проверить что события дошли.

  • Яндекс AppMetrica

В самом кабинете можно указать устройство версию и не нужно никаких команд запускать.

Push уведомления

  • Firebase - Firebase Debug View

  • Яндекс AppMetrica

Можно настраивать уведомления. Но иногда можно случайно отправить push на продакшен.

Нужно попросить разработчиков чтобы написали метод testPush.json, который будет отправлять push только на тестовое устройство.

Мнемоники

Помогают выполнять важные проверки.

I SLICED UP FUN

I SLICED UP FUN

Автоматизация

Monkey UI/Application Exerciser Monkey

adb shell monkey
-p your.package.name -v 500

https://developer.android.com/studio/test/monkey

Можно указать ограничения по скорости, оганичить действия только внутри вашего приложения, можно указать id и если приложение упадет можно по этом id воспроизвести действия, а также другие парамтры.

Источник:

  1. «Инструменты тестирования мобильных приложений», Ксения Апачиди
  2. Тестирование мобильных приложений: tips & tricks