Как я могу быстро автоматизировать отправку сообщений FCM или APNS? - PullRequest
0 голосов
/ 30 октября 2018

Я занимаюсь разработкой серверной службы, которая отправляет push-уведомления в мобильные приложения через FCM или APNS. Я хотел бы создать автоматический тест, который может выполняться менее чем за минуту и ​​проверяет, что сервер может успешно отправить уведомление. Обратите внимание, что мне не обязательно проверять, доставлено ли уведомление, просто что FCM или APNS успешно обработали запрос на отправку сообщения.

Я знаю, что теоретически я мог бы автоматизировать этот тест с помощью такого инструмента, как appium, и использовать тестовые перехватчики для извлечения маркера регистрации / устройства из приложения, но использование appium для проверки возможности отправки сообщения бэкэндом затруднительно. Я также пытался использовать жестко закодированный регистрационный токен, но регистрационные и токены устройства подвержены повороту, поэтому тест может внезапно прекратить прохождение. Есть ли другие варианты?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

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

  1. Может быть, мы хотим проверить, отправили ли мы запрос в FCM, когда это необходимо. Этот случай может быть выполнен на уровне юнита с использованием поддельных классов, отвечающих за отправку push.
  2. Если вы хотите конкретно проверить успешность вызова FCM, то вам на самом деле не нужен правильный токен Firebase пользовательского устройства. Согласно документации, если все настроено правильно, и вы отправляете сообщение пользователю, используя неверный токен (или даже без него), вы все равно получите http код 200. В результате вы можете использовать обычный интеграционный тест, который вызовет API Firebase и проверит код успеха (200) и поле ошибки (MissingRegistration / InvalidRegistration / NotRegistered), а если вы получили такую ​​пару - ваш запрос был успешным. Нет необходимости проверять его с правильным токеном пользовательского устройства, потому что, если все остальное правильно, результат будет таким же (но на самом деле доставлен на телефон). Документы Firebase
  3. В случае, если вы все еще хотите использовать фактический токен, вы можете создать специальный тип сборки для своих QAs, который будет отправлять их токен Firebase в специальную конечную точку на вашем сервере при каждом запуске приложения. В результате на вашем сервере всегда будет храниться недавний токен Firebase для использования в целях тестирования. Конечно, этот тест все еще может быть неудачным, но это хорошая отправная точка.
0 голосов
/ 09 ноября 2018

Вы можете написать облачные функции для достижения этого в firebase, которые могут быть переданы с помощью firebase CLI из локальной системы. Эти облачные функции могут быть написаны в Nodejs.
Вы можете использовать эту документацию для написания облачных функций.
https://firebase.google.com/docs/functions/

Эти облачные функции могут запускаться при некоторых событиях, таких как изменение в базе данных в реальном времени, при регистрации пользователя и т. Д., И вы можете получать токены из мобильного приложения, используя обратные вызовы для зарегистрированных слушателей, и мы можем использовать их для отправки уведомлений в приложение. Вы можете пройти следующий простой проект.
https://aaronczichon.de/2017/03/13/firebase-cloud-functions/

0 голосов
/ 30 октября 2018

Appium - это фреймворк автоматизации для тестирования черного ящика , поэтому в вашем случае он позволяет проверить, появляется ли уведомление на устройстве. И это все.

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

Более того, Appium не поддерживается Firebase.

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

...