Тестирование пермишенов

Тестирование пермишенов

t.me/qa_chillout

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


Основные типы разрешений

  1. Чувствительные разрешения (доступ к данным пользователя): камера, микрофон, геолокация, контакты, календарь.
  2. Системные разрешения (функционал устройства): уведомления, Bluetooth, хранилище файлов.
  3. Фоновые разрешения: использование геолокации в фоновом режиме, синхронизация данных.
  4. Разрешения для внешних API: доступ к сторонним сервисам (например, Google или Facebook).


Управления разрешениями приложений

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

На Android:

1 - В момент запроса:

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

  • разрешить доступ.
  • отклонить запрос.


2 - В системных настройках устройства:

  • Через пункт "Приложения":

1) Найти нужное приложение.

2) Перейти в раздел "Разрешения".

3) Просмотреть и изменить предоставленные разрешения.

  • Через пункт "Конфиденциальность":

Открыть общий список разрешений (например, "Камера", "Местоположение"). И в нем можно увидеть, сколько приложений имеют доступ к каждому из них.


На iOS:

1 - В момент запроса:

При первом обращении приложения к данным (например, фото, микрофон) появляется диалоговое окно, где пользователь может:

  • разрешить доступ.
  • отклонить запрос.

2 - В системных настройках устройства:

  • В разделе конкретного приложения:

Перейти в настройки нужного приложения и там уже можно просмотреть и изменить предоставленные разрешения (например, доступ к геолокации или камере).

3 - В разделе "Конфиденциальность и безопасность":

Открыть список категорий разрешений (например, "Контакты", "Камера"). А в нем уже можно увидеть, какие приложения имеют доступ к каждой категории и изменить настройки.



Почему важно тестировать разрешения

1 - Влияние на пользовательский опыт

Некорректная работа с разрешениями может вызвать негатив у пользователя.

2 - Безопасность

Несанкционированный доступ может привести к утечке данных.

3 - Соответствие требованиям платформы

Операционные системы (Android, iOS) накладывают строгие правила на работу с разрешениями.

4 - Регуляторные требования

GDPR, CCPA и другие законы обязывают правильно обрабатывать пользовательские данные.


Чек-лист

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

  • Проверить поведение приложения при запросе разрешения

Сообщение о запросе разрешения появляется корректно, пользователь может с ним провзаимодействовать.

  • Функция, к которой выдано разрешение, корректно работает и ее поведение соответствует выданному разрешению.

Например, если разрешение на доступ к камере выдано, то приложение сможет её использовать.

  • Поведение приложения при отказе в разрешении

Если вы запретили доступ к камере, контактам и тд, то доступа к запрещенному разделу у вас не будет (например, не будет доступа к камере), а также отобразится соответствующее сообщение об отказе с кнопкой перехода в системные настройки.

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

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

  • Проверить работу функций, которые не требуют разрешения

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

2. Тестирование UX/UI

  • Сообщение о запросе разрешений должно содержать понятный текст.
  • Всегда стоит объяснять пользователю, зачем требуется это разрешение (особенно для чувствительных данных).
  • Кнопки должны быть интерактивными, и текст на них — понятным пользователю.

3. Проверка ошибок

  • "Случайный" отказ от разрешения

Если пользователь запретил доступ к камере при первом запросе, а затем решил выдать разрешение, повторно открыв камеру в приложении, запрос должен быть отображен снова, и после выдачи разрешения камера должна начать работать корректно без необходимости перезапуска приложения.

  • Отзыв разрешения вручную

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

  • Закрытие приложения во время запроса

Если в процессе запроса разрешения пользователь свернул, закрыл или выгрузил приложение из памяти, при следующем запуске приложения разрешение должно быть запрошено заново.

4. Тестирование в разных сценариях

  • При первом запуске приложения (холодный старт) приложение должно запросить все необходимые разрешения.
  • После обновления приложения все разрешения должны быть запрошены заново только в том случае, если они были изменены в новой версии (чаще всего при обновлении пермишены не сбрасываются).
  • При возврате на экран из настроек устройства, где были изменены разрешения, приложение должно правильно обработать изменения и запросить разрешения, если это необходимо.
  • После удаления и повторной установки приложения, оно должно запросить все необходимые разрешения снова, как при первом запуске.

5. Пермишен на гео

Разрешения "Allow While Using App", "Allow Once" и "Don't Allow" на iOS и Android касаются специфического доступа к геолокации. Эти разрешения требуют особого внимания, так как они регулируют, как приложение может использовать местоположение пользователя в разных ситуациях:

  • "Allow While Using the App" — предоставляет доступ к геолокации только в момент активного использования приложения. Это разрешение не позволяет приложению отслеживать местоположение пользователя, когда приложение работает в фоновом режиме.
  • "Allow Once" — позволяет приложению использовать геолокацию только один раз, и каждый раз, когда требуется доступ к местоположению, пользователь должен снова подтвердить разрешение.
  • "Always Allow" — даёт приложению доступ к геолокации в любое время, включая фоновый режим, даже когда приложение не активно используется.

Также при тестировании пермишена на гео стоит не забывать о возможности выбора точности местоположения - точное(precise on) и примерное(precise off на ios или approximate на android). В таком случае координата пользователя учитывается точная или примерная в области пользователя.

6. Кроссплатформенное тестирование

На iOS

Выдача разрешений на доступ к фотографиям имеет несколько особенностей. Когда приложение пытается получить доступ к фото или камере, iOS отображает системное диалоговое окно с запросом на разрешение. Это может быть доступ только к фотографиям (например, для выбора фото из галереи) или к камере (для съемки фото или видео). В случае с фотографиями пользователю может быть предложено несколько вариантов разрешений:

  • "Don't Allow" — отказ от доступа.
  • "Limit Access" — разрешение только на выбор фото из галереи.
  • "Allow Full Access" — полный доступ к фотографиям на устройстве.


На Android

Рекомендуется проверить сценарии с разделенными разрешениями (runtime permissions), где запрашиваются только нужные функции.

  • Убедиться, что тестируются как старые, так и новые версии Android (API < 23 и API >= 23).

В Android также есть несколько типов разрешений (например, на камеру):

  • "While using the app" — доступ к камере и фото предоставляется только во время использования приложения.
  • "Only this time" — доступ разрешается лишь на одну сессию, после чего нужно снова запрашивать разрешение.
  • "Don't allow" — доступ к камере полностью отключается, и приложение не может использовать камеру.


И важно еще помнить про доступ к хранилищу (для доступа к фотографиям и видео)

  1. В старых версиях Android (до API 30) разрешение на доступ к хранилищу предоставляло приложению доступ ко всем файлам, включая фотографии.
  2. В новых версиях Android (API 30 и выше) используется механизм Scoped Storage, где приложения получают доступ только к определенным файлам, созданным или явно выбранным пользователем.


Что точно важно проверить:

  1. Разумеется, корректность работы приложения в случае, если пользователь выбирает каждый из этих вариантов разрешений.
  2. Приложение должно правильно обрабатывать отказ от разрешения, повторно запрашивать его, если это необходимо, и не предоставлять доступ в случае, если разрешение было отклонено или запрещено.
  3. Проверить поведение приложения при смене типа разрешения, например, когда пользователь сначала разрешает камеру "на этот раз", а затем изменяет разрешение на "при использовании приложения".
  4. Если пользователь выдает доступ только к определенным фотографиям, убедиться, что приложение получает доступ исключительно к выбранным фото и не может видеть или использовать другие фото в галерее.


7. Проверка переходов

  • Если разрешение отклонено, пользователь должен быть перенаправлен в настройки устройства (при необходимости).
  • На экран-подсказку, объясняющий, как вручную предоставить разрешение (если такой экран кастомно добавлен в приложении).

8. Логирование

  • Убедиться, что все ошибки и действия пользователя с разрешениями логируются (если конечно же такое предусмотрено проектом).
  • Логи не содержат чувствительных данных.


Инструменты для тестирования разрешений

  1. Симуляторы и эмуляторы в Android Studio позволяют проводить тестирование на разных версиях Android.
  2. Проверка в Xcode на симуляторах iOS.
  3. Физические устройства для проверки фич, которые не работают на эмуляторах (например, камера, датчики).


Разрешения на Android

Сетевые разрешения

  • Доступ к информации о сетевом подключении (например, роуминг, используемая сеть).
  • Доступ к информации о состоянии Wi-Fi.
  • Открытие сетевых соединений.

Геолокация

  • Доступ к точному местоположению через GPS.
  • Доступ к примерному местоположению через Wi-Fi или мобильные сети.

Устройство и звонки

  • Доступ к информации о состоянии телефона (номер, статус вызова).
  • Инициация телефонных звонков.
  • Чтение и изменение журнала звонков.

Память

  • Чтение данных с внешнего хранилища (например, SD-карты).
  • Запись данных во внешнее хранилище.

Камера и микрофон

  • Доступ к камере устройства.
  • Доступ к микрофону для записи звука.

Уведомления и системные функции

  • Получение уведомлений после загрузки системы.
  • Управление виброоткликом устройства.
  • Отображение окон поверх других приложений.
  • Запрет устройства на переход в спящий режим.

Bluetooth

  • Подключение к устройствам Bluetooth.
  • Управление настройками Bluetooth (например, включение/выключение).

SMS

  • Отправка SMS-сообщений.
  • Чтение входящих SMS.
  • Получение SMS.

Контакты

  • Чтение контактов устройства.
  • Добавление или редактирование контактов.

Календарь

  • Доступ к календарю.
  • Изменение событий в календаре.

Системные настройки

  • Доступ к уведомлениям.
  • Изменение конфигурации устройства.
  • Игнорирование оптимизации батареи.

Датчики и здоровье

  • Доступ к данным датчиков здоровья.
  • Определение активности пользователя (ходьба, бег и т.д.).

Фоновые процессы

  • Запуск фоновых сервисов.

С детальным описанием пермишенов на Android можно ознакомиться на официальном сайте https://developer.android.com/reference/android/Manifest.permission


Разрешения на iOS

На iOS разрешения также организованы по категориям, и их предоставление требует явного согласия пользователя. Ниже представлен список часто используемых разрешений.

Сетевые разрешения

  • Доступ к интернету.
  • Использование сети Wi-Fi.

Геолокация

  • Доступ к местоположению при использовании приложения.
  • Доступ к местоположению в фоновом режиме.
  • Доступ к примерному местоположению.

Камера и фотографии

  • Доступ к камере устройства.
  • Ограниченный доступ к выбранным фотографиям.
  • Полный доступ к фотографиям на устройстве.

Микрофон

  • Доступ к микрофону для записи звука.

Уведомления

  • Разрешение на отправку push-уведомлений.
  • Доступ к уведомлениям с возможностью изменения их настроек.

Контакты

  • Доступ к контактам устройства.
  • Чтение, добавление или редактирование контактов.

Календарь

  • Доступ к календарю устройства.
  • Изменение событий в календаре.

Напоминания

  • Чтение или создание напоминаний.

Здоровье и фитнес

  • Доступ к данным здоровья (например, шаги, сердечный ритм).
  • Использование данных активности пользователя.

Мультимедиа

  • Доступ к мультимедийной библиотеке (например, музыка).
  • Установка обоев.

Системные функции

  • Доступ к Bluetooth-устройствам.
  • Использование Face ID или Touch ID для аутентификации.
  • Доступ к локальным файлам и папкам.

SMS и звонки

  • Доступ к SMS для автоматического ввода кодов.
  • Управление телефонными звонками (например, через VoIP).

Датчики и устройства

  • Доступ к гироскопу и акселерометру.
  • Использование данных о приближении устройства.

Фоновые процессы

  • Запуск фоновых задач.
  • Доступ к обновлению контента в фоновом режиме.

Apple-специфичные разрешения

  • Доступ к Apple Music и медиатеке.
  • Использование Siri и обработка пользовательских запросов.
  • Сбор персональных данных для таргетированной рекламы (App Tracking Transparency (ATT)). Это системное разрешение, которое Apple ввела начиная с iOS 14.5.


Рекомендации

  1. Проверяйте, что всегда объясняется пользователю причина запроса разрешения.
  2. Запрашивайте разрешения только тогда, когда они действительно необходимы. Например, запрос камеры — только при попытке сделать фото.
  3. Помните о конфиденциальности пользователей. Не стоит запрашивать лишние разрешения, которые не нужны для работы приложения. А также разрешения заранее.
  4. Постарайтесь обеспечить доступность приложения даже без разрешений. Предлагайте по возможности альтернативные пути выполнения задачи, если пользователь отказывает в разрешении.

Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page