如何快速自动发送FCM或APNS消息?

时间:2018-10-30 03:57:56

标签: android firebase push-notification automated-tests apple-push-notifications

我正在开发一个后端服务,该服务通过FCM或APNS将推送通知发送到移动应用程序。我想创建一个可以在一分钟内运行并验证服务器可以成功发送通知的自动化测试。请注意,我不一定要检查通知是否已传递,仅是FCM或APNS已成功处理了发送消息的请求。

我知道,从理论上讲,我可以使用诸如appium之类的工具来自动化该测试,并使用测试挂钩从该应用中检索注册/设备令牌,但是使用appium来测试后端是否可以发送消息似乎很麻烦。我也尝试过使用硬编码的注册令牌,但是注册令牌和设备令牌很容易旋转,因此测试可能会突然停止通过。还有其他选择吗?

3 个答案:

答案 0 :(得分:2)

首先,我会考虑我们要涵盖的情况。

  1. 也许,我们想检查是否在需要时向FCM发送了请求。这种情况可能在单元级别完成,模拟类负责发送推送。
  2. 如果您要测试FCM调用是否成功,则实际上并不需要用户设备的正确Firebase令牌。根据文档,如果一切配置正确,并且您使用不正确的令牌(甚至没有令牌)向用户发送消息,您仍将获得http代码200。因此,您可以使用通常的集成测试,该测试将调用Firebase API并检查成功代码(200)和错误字段(MissingRegistration / InvalidRegistration / NotRegistered),如果您获得了这样的一对-您的请求已成功。无需使用正确的用户设备令牌对其进行测试,因为如果其他所有操作都正确,则结果将是相同的(但实际上已传递到电话中)。 Firebase docs
  3. 如果您仍然想使用实际令牌,则可以为QA创建特殊的构建类型,该类型将在每个应用启动时将其Firebase令牌发送到服务器上的特殊端点。因此,您将始终在服务器上存储一个最新的Firebase令牌,以用于测试目的。当然,该测试可能仍然很不稳定,但这是一个很好的起点。

答案 1 :(得分:1)

Appium是用于黑盒测试的自动化框架,因此,在您的情况下,它可以检查通知是否在设备上弹出。就是这样。

Appium无法访问您的应用程序代码,您可以通过它发送adb命令,但是基本上,直到将其公开到应用程序的UI层之前,它都无法使用令牌。

此外,Firebase不支持Appium。

我建议您研究Espresso,在这里编写可直接访问应用程序代码的测试。

答案 2 :(得分:0)

您可以在firebase中编写云功能来实现此功能,可以使用firebase CLI从本地系统推送该功能。此云功能可以在Nodejs中编写。
您可以阅读此文档来编写云功能。
https://firebase.google.com/docs/functions/

这些云功能可以在某些事件(例如,用户注册时更改实时数据库)中触发。等等,您可以使用已注册的侦听器上的回调从移动应用程序获取令牌,我们可以使用它们将通知推送到应用程序。您可以通过以下简单的项目。
https://aaronczichon.de/2017/03/13/firebase-cloud-functions/