End-to-End-Test-Push-Nachrichten mit Firebase Cloud Messaging | von Josef Raska Februar 2022
Eine der Herausforderungen der mobilen Entwicklung ist der Umgang mit Integrationen von Drittanbietern und insbesondere das automatische Testen solcher Integrationen. Push-Messaging mit FCM ist ein solcher Fall, in dem die Auswirkungen von Integrationsstörungen hoch sein können, insbesondere während einer Kampagne oder der Ausstellung einer Notfallkorrektur. Sehen wir uns an, wie wir Tests vollständig automatisieren können, um sicherzustellen, dass unsere FCM-Integrationen nie wieder fehlschlagen.

Firebase Cloud Messaging ist zum De-facto-Standard für Push-Messaging für Android-Anwendungen geworden. Es ist eine plattformübergreifende Messaging-Lösung, mit der Sie Nachrichten zuverlässig und kostenlos versenden können.
Der gesamte Ablauf von Push-Benachrichtigungen wird erklärt Hier.
- Die Anwendung erhält über das Firebase SDK ein Push-Token vom FCM-Back-End.
- Die Anwendung überträgt dieses Token an den Anwendungsserver.
- Die Serveranwendung löst eine Push-Nachricht mit dem geladenen Token und der HTTP-Anforderung an das FCM-Backend aus.
- Eine Push-Nachricht erreicht die Anwendung und löst die gewünschte Aktion aus.
Der Durchfluss umfasst mehrere bewegliche Teile, und das Testen kann schwierig und zeitaufwändig sein. Noch wichtiger ist, dass es lange dauern kann, bis eine der Integrationen fehlschlägt, bis dies erkannt wird, und es kann im ungünstigsten Moment passieren, wenn Sie Ihren Benutzern tatsächlich Push-Nachrichten senden möchten.
Wenn wir den Nachrichtenfluss von Ende zu Ende zuverlässig testen wollen, müssen wir dafür mehrere Probleme lösen.
- Synchronisieren Sie das Senden und Empfangen von Push-Nachrichten.
- Haben Sie ein Gerät, das ein FCM-Token empfängt.
- Verwenden Sie einen Token mit FCM-Hintergrund, um eine Push-Nachricht auszulösen.
- Lassen Sie den Test auf die Push-Nachricht warten.
- Stellen Sie sicher, dass die Anwendung die richtige Push-Nachricht erhalten hat.
Problem 1 kann gelöst werden, indem der instrumentelle Test der Anwendung in den Hintergrund der Anwendung gestellt wird und mit dem FCM-Hintergrund kommuniziert wird. Auf diese Weise vermeiden wir den zusätzlichen beweglichen Teil des Anwendungshintergrunds und integrieren die vollständige Flusskontrolle in unseren Test.
Problem 2 – die Notwendigkeit eines echten Geräte-Tokens kann durch die Verwendung von gelöst werden Firebase-Testlabor physische Geräte über Gcloud-CLI ich Gradle-Widget Tests durchzuführen. Ein instrumentiertes Testpaket, das auf einem tatsächlichen Gerät ausgeführt wird, verfügt unmittelbar nach dem Start der App über ein Push-Token, und wir können das Token direkt in unserem Testcode verwenden.
Darauf folgt Fehlerbehebung 3 – Ausführen eines Push durch das FCM-Backend. Alles, was wir dafür brauchen, ist ein Push-Token und eine einfache Nachrüstung PushServerClientwas umsetzen wird FCM-HTTP-Protokoll. Dann müssen wir den FCM-Autorisierungsschlüssel in unserem Gerätetest bestehen, was durch Weiterleitung von a erfolgen kann Instrumentelles Testargument auf das Gerät über gcloud Parameter von Umgebungsvariablen er fügte hinzu Widget Gradle.
Es kann einige Zeit dauern, bis das FCM-Backend eine Push-Nachricht sendet und die Anwendung sie im Testlabor empfängt. Wir müssen sicherstellen, dass der Test nicht weiter behauptet, bevor die Nachricht eintrifft, um sicherzustellen, dass der Test zuverlässig ist.
Am Ende sieht der Test so aus:
Aus der abschließenden Behauptung können wir ersehen, dass der gesamte Kurs wie erwartet verlaufen ist. Dieser Test bestätigt, dass die Anwendung ausgeführt wird Einstellungsfenster bevor Sie zu navigieren über den Bildschirm nachdem eine Push-Nachricht mit dieser tiefen Verbindung eintrifft. (Video vom Test)
Wir haben jetzt einen vollautomatisierten Test, der den Ablauf des Empfangs von Push-Nachrichten aus dem FCM-Hintergrund durchläuft und überprüft, ob die Anwendung sie ordnungsgemäß verarbeitet.
Die durch eine Push-Nachricht ausgelöste Aktion hängt weitgehend von Ihrer Anwendung ab, sodass die Art und Weise, wie Sie überprüfen, ob sie korrekt behandelt werden, unterschiedlich sein wird. Hier ist entscheidend, dass die Push-Nachricht ankommt und die Anwendung entsprechend darauf reagiert.
Unzuverlässigkeit ist immer ein Problem, wenn es um Tests geht, die sich wie dieses in ein Live-Backend eines Drittanbieters integrieren lassen. Das Referenz-Repo wurde implementiert metrischer Testdie uns eine gute Antwort auf diese Frage geben kann.
Die Tests wurden zuverlässig einen Monat lang auf 2 verschiedenen Firebase Test Lab Geräten mit durchgeführt 260 erfolgreiche Läufe in Folge.
Somit ist die Antwort klar – Ja, der Test ist zuverlässig und funktioniert derzeit gut mit dem P90 1,6 Sek und weniger als 0,6 s für die mittlere Zeit. Dies bedeutet, dass die Dauer mit anderen Espresso UI-Tests vergleichbar ist und sich gut in jedes Testpaket einfügen lässt.
Das Testen der Automatisierung Ihrer Push-Nachrichten-Szenarien kann Ihnen viele Risiken zu geringen Kosten ersparen und Ihre Push-Nachrichten-Integration zum Vergnügen für eine sichere Wiederholung machen. Ingenieure können sogar Tests verwenden, um neue Push-Szenarien zu testen und die TDD-Form ohne die mühsamen manuellen HTTP-Anforderungen des FCM-Backends zu erreichen.
Wie testen Sie Ihre Drittanbieter-Integrationen? Automatisieren Sie Tests? Lass es mich in den Kommentaren wissen.
Viel Glück beim Codieren!