Ответ
Тестирование push-шлюза (FCM, APNs, WebPush) включает проверку интеграции серверной части, клиентского приложения и самой службы доставки.
1. Тестирование серверного API (отправка уведомления):
- Валидация запроса: Проверка обязательных полей (
deviceToken,message,title), типов данных и лимитов размера. -
Обработка ответов:
// Пример теста на Node.js с использованием Jest it('should send push and return 200 for valid token', async () => { const mockResponse = { success: true, messageId: 'msg_123' }; pushService.send = jest.fn().mockResolvedValue(mockResponse); const result = await sendPushNotification({ token: 'valid_fcm_token', title: 'Hello', body: 'Test message', data: { screen: 'Home' } // deep link payload }); expect(result.status).toBe('sent'); expect(pushService.send).toHaveBeenCalledWith( expect.objectContaining({ token: 'valid_fcm_token' }) ); }); - Обработка ошибок: Тестирование ответов шлюза на невалидные, устаревшие или несуществующие токены.
it('should handle invalid token error', async () => { pushService.send = jest.fn().mockRejectedValue( new Error('Invalid registration token') ); await expect(sendPushNotification({token: 'invalid'})) .rejects.toThrow('Invalid registration token'); });
2. Тестирование клиентского приложения (получение и отображение):
- Состояния приложения: Уведомление должно приходить и корректно обрабатываться, когда приложение:
- Активно (foreground).
- Свёрнуто (background).
- Закрыто (terminated).
- Действия по тапу: Проверка, что нажатие на уведомление открывает нужный экран (deep linking).
- Кастомизация: Проверка отображения иконки, звука, вибрации.
3. Сквозное (E2E) тестирование и мониторинг:
- Реальные устройства/эмуляторы: Использование инструментов вроде Appium для автоматизации проверки получения уведомления на эмуляторе Android/iOS.
- Метрики доставки: Мониторинг ключевых показателей — процент успешной доставки, задержка (latency), количество открытий.
- Условия сети: Тестирование при нестабильном соединении, переходе между Wi-Fi и мобильным интернетом.