# Основные проверки при тестировании мобильного приложения

![http://apps.testinsane.com/mindmaps/uploads/html/Mobile%20Testing.html](https://lh3.googleusercontent.com/zCEGij6Czp_ZbLUbd2FF8cxsCWyTVQZzt2yPI4rO9h1HcPIlWFa3DN_X98m4k7522p4nA3OOe1RPDLT5ooNTS3CvLLZLZ1YE2grZKm9UNACqR1NO9rgHNUh-U-deAdqrgyfjpfi_)

![https://www.istqb.org/certifications/mobile-tester](https://lh4.googleusercontent.com/FXMIUoBn80ckGlWV-HxPLRrlDGtO4XnOBBEoGgc4t9t3gVI2m0Y048GEjoGV7FWP5I189Ma1YiecY4C75EjcW0xL1fRGRhRXL2oVJu3C9BkWKskOVT2AqNGPsVXb3XBFY1ZMK8E9)

В описанный ниже чек-лист вошли только общие характеристики. Естественно, в тестируемом приложении может быть функциональность, для которой нужно применять отдельный подход и создать отдельные сценарии. То же самое верно для производительности, удобства использования, безопасности и прочего тестирования, которое необходимо вашему приложению. Чек-лист состоит из восьми разделов:

* Функциональное тестирование;
* Тестирование совместимости;
* Тестирование безопасности;
* Тестирование локализации и глобализации;
* Тестирование удобства использования;
* Стрессовое тестирование;
* Кросс-платформенное тестирование;
* Тестирование производительности.

**Функциональное тестирование**: В данном пункте нам важно убедиться, что наш продукт соответствует нужной функциональной спецификации, упомянутой в документации по разработке.

* Установка/удаление/накатка версий;
* Запуск приложения (отображение Splash Screen);
* Работоспособность основного функционала приложения;
  * Авторизация (по номеру телефона/через соц. сети/e-mail);
  * Регистрация (по номеру телефона/через соц. сети/e-mail);
  * Онбординг новых пользователей;
  * Валидация обязательных полей;
  * Навигация между разделами приложения;
  * Редактирование данных в профиле пользователя;
  * Проверка оплаты;
  * Тестирование фильтров;
  * Бонусы;
* Корректное отображение ошибок;
* Работа с файлами (отправка/получение/просмотр);
* Тестирование тайм-аутов;
* Тестирование заглушек (не соединения с интернетом/нет, например, товаров и т.д);
* Тестирование pop-up, алертов;
* Тестирование WebView;
* Скролл/свайп элементов;
* Тестирование PUSH уведомлений;
* Сворачивание/разворачивание приложения;
* Разные типы подключений (сотовая связь/Wi-Fi);
* Ориентация экрана (альбомная/портретная);
* Темная/светлая темы;
* Реклама в приложении;
* Шаринг контента в соц. сети;
* Работа приложения в фоне;
* Пагинация страниц;
* Политики конфиденциальности и прочие ссылки на документы.

**Тестирование совместимости**: Тестирование совместимости используется, чтобы убедиться, что ваше приложение совместимо с другими версиями ОС, различными оболочками и сторонними сервисами, а также аппаратным обеспечением устройства.

* Корректное отображение гео;
* Информации об операциях (чеки и т.д.);
* Различные способы оплаты (Google Pay, Apple Pay);
* Тестирование датчиков (освещенности, температуры устройства, гироскоп и т.д.);
* Тестирование прерываний (входящий звонок/смс/push/будильник/режим «Не беспокоить» и т.д.);
* Подключение внешних устройств (карта памяти/наушники и т.д.).

**Тестирование безопасности**: Данная проверка нацелена на поиск недостатков и пробелов с точки зрения безопасности приложения.

* Тестирование разрешений (доступ к камере/микрофону/галерее/и т.д.);
* Данные пользователя (пароли) не передаются в открытом виде;
* В полях, с вводом пароля и подтверждением пароля, данные скрываются астерисками.

**Тестирование локализации и глобализации**: Тестирование интернационализации/глобализации приложения включает тестирование приложения для различных местоположений, форматов дат, чисел и валют, а также замену фактических строк псевдостроками. Тестирование локализации включает тестирование приложения с локализованными строками, изображениями и рабочими процессами для определенного региона.

* Все элементы в приложении переведены на соответствующий язык;
* Тексты зашиты внутри приложения и пользователь в настройках приложения может выставить необходимый язык;
* Тексты зависят от языка в системных настройках;
* Тексты приходят с сервера;
* Корректное отображение форматов дат (ГОД - МЕСЯЦ - ДЕНЬ или ДЕНЬ - МЕСЯЦ - ГОД.);
* Корректное отображение времени в зависимости от часового пояса.

**Тестирование удобства использования**

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

* Корректное отображение элементов на устройствах с различными разрешениями экранов;
* Все шрифты соответствуют требованиям;
* Все тексты правильно выровнены;
* Все сообщения об ошибках верные, без орфографических и грамматических ошибок;
* Корректные заголовки экранов;
* В поисковых строках присутствуют плейсхолдеры;
* Неактивные элементы отображаются серым;
* Ссылки на документы ведут на соответствующий раздел на сайте;
* Анимация между переходами;
* Корректный возврат на предыдущий экран;
* Поддерживаются основные жесты при работе с сенсорными экранами (swipe back и т.д.);
* Пиксель-перфект.

**Стрессовое тестирование**: Стрессовое тестирование направлено на определение эффективности производительности приложения в условиях повышенной нагрузки. Стресс-тест в этом контексте ориентирован только на мобильные устройства.

* Высокая загрузка центрального процессора;
* Нехватка памяти;
* Загрузка батареи;
* Отказы;
* Низкая пропускная способность сети;
* Большое количество взаимодействий пользователя с приложением (для этого может понадобиться имитация реальных условий состояния сети).

**Кросс-платформенное тестирование**: Важный вид тестирования, который необходимо проводить для понимания того, будет ли должным образом отображаться тестируемый продукт на различных платформах, используемых целевой аудиторией.

* Работоспособность приложения на различных устройствах разных производителей

**Тестирование производительности**: Если пользователь устанавливает приложение, и оно не отображается достаточно быстро (например, в течение трех секунд), оно может быть удалено в пользу другого приложения. Аспекты потребления времени и ресурсов являются важными факторами успеха для приложения, и для измерения этих аспектов проводится тестирование производительности.

* Время загрузки приложения;
* Обработка запросов;
* Кэширование данных;
* Потребление ресурсов приложением (например расход заряда батареи).

Помимо прочего, можно использовать **эвристики и мнемоники**: I SLICED UP FUN, COP FLUNG GUN, SFDPOT, LONG FUN CUP.

*Примечание: в свете последних анонсов раскладных смартфонов и Android 12L, следует также при необходимости учитывать такие кейсы.*

*Примечание (1): Внимательно изучаем изменения в новых релизах Android и iOS.* [*Ссылка для Android*](https://developer.android.com/about/versions)*, выбираем интересующую версию и читаем New features and APIs и Behavior changes.* [*Ссылка для iOS*](https://developer.apple.com/documentation/ios-ipados-release-notes)*.*

Источники:

* [Чек-лист тестирования мобильных приложений](https://habr.com/ru/post/534190/)

Доп. материал:

* [Core app quality](https://developer.android.com/docs/quality-guidelines/core-app-quality)
* [Большой гайд по тестированию Android-приложений](https://testengineer.ru/bolshoj-gajd-po-testirovaniyu-android-prilozhenij/)
* [Тестирование мобильных приложений: особенности и примеры](https://www.youtube.com/watch?v=vGTMsTec2RE)
* [Тестирование Мобильных Приложений - урок 1 в открытом курсе по Тестированию Программного Обеспечения](https://www.youtube.com/watch?v=Ts9Q2I3DmkM)
* [Распространенные баги на iOS](https://telegra.ph/bagi-na-iOS-02-05)
* [Распространенные баги на Android](https://telegra.ph/bagi-na-android-10-07)
* [ISTQB Mobile Application Testing](https://www.istqb.org/certification-path-root/mobile-application-testing.html)
* [Mobile App Testing Tutorials (A Complete Guide With 30+ Tutorials)](https://www.softwaretestinghelp.com/beginners-guide-to-mobile-application-testing/)
* [Как найти баги в приложении. Интенсив для тестировщиков.](https://www.youtube.com/watch?v=b0YrQehCj0o)
* [Жизнь без AppStore и Google Play: работаем с Huawei Mobile Services и AppGallery](https://habr.com/ru/post/551262/)
* [Особенности тестирования Android без Google-сервисов](https://habr.com/ru/company/surfstudio/blog/559106/)
* YaTalks 2021. Mobile: [Моделирование угроз для мобильных приложений](https://www.youtube.com/watch?v=0AQlKbskhkM\&t=16024s) + [презентация](https://disk.yandex.ru/i/kLk2Nscwqnto2Q)
* [Как тестировать мобильные игры](https://dou.ua/forums/topic/34948/)
* [Free Mobile App Testing Tutorial](https://www.guru99.com/mobile-testing.html)
* [Как тестировать мобильное приложение](https://www.youtube.com/watch?v=sCpY9E9oKW4)
* [Простые мобильные баги: примеры](https://www.youtube.com/watch?v=cqF99cqtcTw)
* [Чеклист по UX из 30 пунктов для мобильных приложений](https://habr.com/ru/company/edison/blog/474472/)
* Больше чек-листов и идей можно найти в разделе полезных ресурсов
