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

7
我正在开发一个后端服务,可以通过FCM或APNS向移动应用程序发送推送通知。我想创建一个自动化测试,可以在不到一分钟的时间内运行,并验证服务器是否成功发送了通知。请注意,我不一定需要检查通知是否已被传递,只需验证FCM或APNS是否已成功处理发送消息的请求。
理论上,我知道可以使用像appium这样的工具来自动化此测试,并使用测试钩子从应用程序中检索注册/设备令牌,但似乎使用appium测试后端是否能够发送消息很麻烦。我还尝试过使用硬编码的注册令牌,但是注册和设备令牌容易更改,因此测试可能会突然停止通过。是否有其他选择?
3个回答

4

首先,我们需要考虑要覆盖哪种场景。

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

1

Appium是一个自动化框架,用于进行黑盒测试。在您的情况下,它允许检查设备是否弹出通知。

Appium无法访问您的应用程序代码,您可以通过它发送adb命令,但基本上没有办法处理令牌,直到将其暴露给您的应用程序的UI层为止。

此外,Firebase不支持Appium。

我建议您查看Espresso,在那里您可以编写具有对应用程序代码的直接访问权限的测试。


我实际上正在尝试测试后端,而不是应用本身。目标是测试后端能否在没有移动应用的情况下发送通知。 - Scott Kausler
这就是问题所在:Appium只允许端到端的UI测试,无法测试应用程序后端。 - dmle

0
您可以使用Firebase编写云函数来实现此操作,这些函数可以使用Firebase CLI从本地系统推送。这些云函数可以使用Nodejs编写。您可以查看以下文档了解编写云函数的详细信息。
https://firebase.google.com/docs/functions/

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接