Ответ
Тестирование push-уведомлений охватывает их доставку, отображение, функциональность и работу в различных состояниях системы.
Основные области проверки:
-
Доставка и отображение:
- Уведомление приходит при наступлении целевого события (новое сообщение, напоминание).
- Корректность содержимого: заголовок, текст, иконка (app icon и custom image).
- Наличие и корректность звука и вибрации (согласно настройкам).
- Отображение в шторке уведомлений и в центре уведомлений ОС.
-
Интерактивность и действия:
- Тап по уведомлению открывает приложение на правильном экране (deep linking).
- Работают ли action-кнопки в уведомлении (например, "Ответить", "Отметить как прочитанное").
- Правильная группировка уведомлений (например, по чатам).
-
Работа в разных состояниях приложения:
- Приложение активно и на переднем плане.
- Приложение свёрнуто или находится в фоне.
- Приложение полностью закрыто.
- Устройство в режиме "Не беспокоить" (Do Not Disturb).
-
Настройки системы и особенности ОС:
- Поведение при отключении уведомлений для приложения в настройках ОС.
- Влияние режимов энергосбережения (Battery Optimization) на доставку.
- Особенности разных версий iOS и Android.
- Локализация текста уведомлений.
Пример отправки тестового уведомления на Android через ADB:
# Отправка уведомления с данными
adb shell am broadcast -a com.example.app.PUSH_TEST
--es "title" "Test Title"
--es "message" "Test message body"
--es "type" "news"
Для iOS используйте сертификаты и payload, отправляемые через APNs (Apple Push Notification service) в sandbox-режиме.
Ответ 18+ 🔞
Да ты посмотри, какие нам тут танцы с бубном устраивают эти пуш-уведомления! Целая наука, блядь, а не фича. Сейчас разложу, как не сойти с ума, проверяя эту дичь.
Ну, поехали. Первым делом, конечно, доставка и показ. Главный вопрос — прилетело или нет? Если событие наступило (тебе письмо пришло или напоминалка сработала), а уведомление где-то в параллельной вселенной зависло — это пиздец, а не фича. Смотрим, чтобы всё на месте было: заголовок, текст, иконка (и родная, и кастомная, если есть). Звук должен быть тот, что заказывали, вибрация — как в настройках. И, само собой, эта хрень должна красуется в шторке и в центре уведомлений системы. Если нет — начинаем материться.
Дальше — интерактивность. Тыкнул на уведомление — приложение должно открыться ровно на том экране, где нужно, а не на главной с предложением зарегаться снова. Это называется deep linking, и если он не работает, то это просто пизда, а не уведомление. Action-кнопки типа «Ответить» или «Удалить» тоже должны шевелиться. И смотри, чтобы уведомления от одного чата, например, в кучку собирались, а не спамили по одному. Группировка, ёпта!
А теперь самое весёлое — состояния приложения. Тут три слона:
- Приложение открыто и у тебя перед носом. Уведомление может приходить тихо, а может и не приходить вовсе — зависит от логики. Проверяй.
- Приложение свёрнуто или в фоне. Вот тут оно должно прилетать в шторку обязательно, как гром среди ясного неба.
- Приложение убито, закрыто, похоронено. Уведомление всё равно должно прорваться, как назойливый комар, иначе какой в нём смысл?
- И отдельная песня — режим «Не беспокоить». Уведомление либо проходит с оговорками, либо нет — нужно смотреть по требованиям.
И, конечно, настройки системы — наш главный враг. Выключил уведомления для приложения в настройках телефона? Всё, пиши пропало, ни хуя не прилетит. Режим энергосбережения может эту хуйню задушить в зародыше. На разных версиях андроида и iOS одни и те же пушки могут вести себя, как два разных зверя. И да, если приложение мультиязычное — текст в пушах тоже должен переводиться, а не светить «Hello, Ivan» пользователю из Урюпинска.
Чё по тестам? На андроиде можно адб-командой впендюрить тестовое уведомление, чтобы не ждать, пока бекенд проснётся:
# Отправка уведомления с данными
adb shell am broadcast -a com.example.app.PUSH_TEST
--es "title" "Test Title"
--es "message" "Test message body"
--es "type" "news"
На iOS всё сложнее, там нужно через APNs в песочнице с сертификатами танцевать. Короче, ёперный театр.
Вот так вот, блядь. Кажется, просто — «ну пришло и пришло», а на деле — волнение ебать, и терпения нужно овердохуища.