Azure DevOps und App Center anstelle von Testfarmen: Vereinfachen und beschleunigen Sie die mobile Entwicklung mit Cloud-Diensten

Hochwertige Tests gewährleisten die Geschwindigkeit und den stabilen Betrieb mobiler Anwendungen. Eine Vielzahl von Geräten, Betriebssystemen und deren Versionen erhöhen jedoch die Testfarmen, erhöhen die Entwicklungskosten und erfordern viel Zeit und Mühe. In diesem Artikel zeigen wir Ihnen, wie Sie die Testkosten mithilfe des Cloud-Dienstes von Visual Studio App Center senken können, der mehr als viertausend Geräte mit verschiedenen Betriebssystemen kombiniert und die Verteilung mithilfe der Azure DevOps-Plattform vereinfacht.



Wie man mobile Anwendungen testet und wie ein Entwickler einem Landwirt ähnelt


Eines der Hauptprobleme der mobilen Entwicklung ist der überfüllte Markt. Laut Studien von Adweek, Sensor Tower und Think with Google erreichen 80% der Anwendungen Benutzer aufgrund schlechter Qualität nicht.



Der Erfolg der meisten Champion-Apps ist flüchtig. Für einen Monat werden die Top 25 um 74% aktualisiert. Es stellt sich heraus, dass drei Viertel der Führungskräfte innerhalb von 30 Tagen ihre Position verlieren! Einer der Hauptgründe für Enttäuschungen sind Geschwindigkeitsprobleme: 68% der Benutzer verlassen die Anwendung und wählen eine andere, wenn sie nicht innerhalb von sechs Sekunden geladen wurde.

Die Anwendung sollte jedoch nicht nur schnell geladen werden, sondern auch ordnungsgemäß funktionieren. Die Einführung von Updates ohne komplexe Tests für alle möglichen Arten von Geräten und Betriebssystemen ist daher ein ungerechtfertigtes Risiko. In der Praxis ist dies jedoch nicht so einfach: Die unglaubliche Menge an Smartphones, Tablets, Betriebssystemen und deren Versionen zwingt uns dazu, riesige Testmatrizen zu erstellen.



Wenn wir mobile Betriebssysteme in Betracht ziehen, sind die Dinge mit iOS mehr oder weniger nicht schlecht. Zum Beispiel saßen die meisten Benutzer im letzten Jahr ruhig auf iOS 12. Aus Sicht der Tests ist es gut, dass alle Geräte von einem einzigen Hersteller freigegeben wurden.



Android ist komplizierter: Es gibt viele Arten von Betriebssystemen und deren Versionen, unter denen es schwierig ist, die Hauptführer herauszufinden. Und jeder Hersteller (Samsung, Xiaomi, Sony usw.) hat seine eigenen nicht standardmäßigen Starter, Hacks, Änderungen im Betriebssystem und in den Diensten. Aus diesem Grund können mobile Testfarmen Dutzende bis Hunderte von Geräten enthalten. Zum Beispiel auf dem Foto - eine mobile Testfarm von einem der Spieleentwickler.



Bauernhöfe benötigen fortlaufende Unterstützung. Die Geräte müssen auf dem neuesten Stand gehalten werden und regelmäßig zu den Standardeinstellungen zurückkehren, wobei die Abschreibungen zu berücksichtigen sind. Geräte in Farmen werden abgeschrieben und sind veraltet. Sie müssen sie ständig aktualisieren, um mit den Geräten Schritt zu halten, die Ihre Anwendungsgruppe verwendet. Und am wichtigsten ist, dass es schwierig ist, einem verteilten Team von Entwicklern und Testern in verschiedenen Städten Zugang zu einer solchen Farm zu gewähren. 



Nach der Durchführung von "Heim" -Tests müssen Sie die Anwendung senden, um sie auf realen Geräten zu testen. Der beste Weg ist, Ihren Mitarbeitern oder externen Personen, z. B. Fans der Anwendung und Fans neuer Produkte, frühzeitig Zugriff auf die Beta-Version zu gewähren. Benutzer erhalten die frühesten Versionen, Entwickler haben die Möglichkeit, alles zu testen, was sie wollen. In dieser Phase benötigen wir komplexe Analysen: Welche Funktionen verwendet der Benutzer, welche Bildschirme werden am häufigsten aufgerufen, wie viel Zeit verbringt er dort?

App Center - eine Alternative zu Farmen




Microsoft selbst stand vor dem Problem, mobile Anwendungen zu testen: Irgendwann überstieg die Anzahl der bei MS entwickelten Anwendungen einhundert. Um diese Aufgabe zu vereinfachen, hat ein Cloud-basiertes Unternehmen von Xamarin den App Center-Clouddienst erstellt: Er enthält Tausende von realen Geräten, auf denen Entwickler Tests ausführen können, ohne sich Gedanken über den Kauf und die Wartung ihrer eigenen Farm machen zu müssen.

App Center kann mit GitHub, Bitbucket, GitLab oder Azure DevOps verbunden werden. Visual Studio App Center deckt alle gängigen Entwicklungsframeworks ab, sodass Sie Anwendungen für alle gängigen Plattformen erstellen und testen können.

Es ist, als ob sich das Gerät in Ihrer Infrastruktur befindet, sodass Sie den Prozess der kontinuierlichen Integration (kontinuierliche Integration) organisieren können: Der Entwickler schreibt den Code in das Projekt ein, sobald die Anwendung automatisch erstellt wird, sich auf die Testgeräte ausbreitet und Tests gestartet werden. 

Vorteile von App Center




Mehr als viertausend Geräte in der Cloud. Dies sind echte lebende Geräte. Jedes Modell wird in mehreren Exemplaren präsentiert. Während der Tests können Sie Screenshots machen und die Anwendung mit den Augen der Benutzer betrachten. Zu jedem Gerät gibt es detaillierte Informationen: Wer hat es hergestellt, welche Ressourcen hat es, welche CPU-Auslastung, Geschwindigkeit der Anwendungsausführung.



Das Vorhandensein des SDK - Software Development Kit , das in die Anwendung eingebettet ist und Daten sammelt: Wie erfolgreich die Installation und der Start sind, wie viele Fehler, Abstürze. Auf Geräten, auf die etwas gefallen ist, können Sie Speicherauszüge sammeln und beobachten, was während des Anwendungstests passiert ist. Dies erleichtert die Fehlerbehebung in der Anwendung erheblich. 



Detaillierte Testberichte.Wenn der Test nicht mit einem Fehler funktioniert, wird ein Screenshot vom Bildschirm des Geräts erstellt, auf dem der Test ausgeführt wird, in dem Moment, in dem der Test über etwas stolpert. Und wir sehen, ob die Anwendung funktioniert oder nicht und wo sie aufgrund eines Testlaufs auf Probleme stößt.



Sammlung von Gerätebetriebsprotokollen , Speicherabbildern, Stapelspuren und Testberichten zur Diagnose und Behebung von Problemen. Sie können in Geräte eindringen, die Protokolle auspumpen und untersuchen, wie stark der Prozessor belastet war und wie viel Speicher belegt war. Mit solchen Dingen können Sie schnell verstehen, was das Problem war, warum die Anwendung abgestürzt ist oder der Test fehlgeschlagen ist.



Anwendungsnutzungsanalyse: Wie schnell es reagiert, wie lange es dauert, zwischen Bildschirmen zu wechseln, welche Pfade Benutzer innerhalb der Anwendung durchlaufen und zu Bildschirmen gelangen. Sie können herausfinden, auf welchen Plattformen und Betriebssystemversionen Ihre Zielgruppe die Anwendung verwendet. Dies hilft, das Publikum und die Geräte zu sehen und zu verstehen, welche Funktionen diese Geräte problemlos nutzen können. Und im Allgemeinen kann die Anwendung auf Benutzergeräten korrekt funktionieren. Mit solchen Analysen können Sie Tests für verschiedene Plattformen priorisieren und die Testmatrix reduzieren.



Einzelner automatisierter Vertriebsprozess. Wenn die Anwendung für mehrere Märkte geschrieben wurde, z. B. für iOS und Android, müssen Sie beim Veröffentlichen der Anwendung viel manuelle Arbeit leisten. Das App Center kann die Verteilung automatisieren. Sobald die Anwendung alle Tests bestanden hat, wird der resultierende Build entweder automatisch oder nach Genehmigung durch den Entwickler an die Stores gesendet.



Automatische Updates werden nach jedem Commit an Betatester und interne Benutzergruppen gesendet. Es muss nichts manuell gesendet werden. Darüber hinaus erhalten Sie schnelles Feedback von Testern.

Erste Schritte mit dem App Center


Registrieren Sie sich beim Service und erhalten Sie eine kostenlose Testphase. Mal sehen, wie es in der realen Welt aussieht.



Die Weboberfläche des App Centers ist einfach.



Das Erstellen einer neuen Anwendung ist nicht weniger einfach: Wir geben den Namen, die Plattform und das Betriebssystem an.



Wir geben an, in welchem ​​Repository der Code liegt, wonach die automatische Synchronisation beginnt.



Bei der Entwicklung für iOS ist normalerweise ein MacBook erforderlich, um die Anwendung zu erstellen. Appcenter lässt jedoch zu, dass Sie es nicht haben. Er stellt eine spezielle virtuelle Maschine unter OSX mit allen erforderlichen Tools bereit. Sie können Bibliotheken hinzufügen, wenn Sie etwas anderes als ein sauberes System benötigen.



Ein Fenster mit einem Terminal wurde geöffnet. Es ist zu sehen, was in der virtuellen Maschine passiert. Pakete werden hinzugefügt und mit NuGet installiert. Sobald die virtuelle Maschine bereit ist, beginnt der Kompilierungs- und Assemblierungsprozess. Übrigens, wenn es ein Problem mit dem Build gibt, können Protokolle einfach von dieser Schnittstelle heruntergeladen werden.

Wie erfolgt die Kompilierung? Microsoft hat mit Apple verhandelt und eine Lizenz für virtuelle MacOS-Instanzen erhalten, die in der virtuellen Maschine ausgeführt werden, um Builds zu erstellen. Aus Sicht der Lizenzen ist also alles sauber, Microsoft hat sich um alles gekümmert!



Der Build ist fertig, es ist Zeit, die Anwendung zu testen. Öffnen Sie das Geräteset und wählen Sie das Gerät aus.



Für jedes Gerät können Sie die Modellfunktionen, Spezifikationen, die Version des Betriebssystems, die Anzahl der gleichzeitig in der Cloud verfügbaren Geräte und andere Parameter anzeigen.



Sobald Ihre Testgeräte erstellt wurden, werden die Tests nacheinander auf jedem dieser Geräte ausgeführt . In der Basisversion wird das Testen standardmäßig in einem einzelnen Thread durchgeführt. Sie können die Testmatrix variieren, indem Sie einige Tests auf einem großen Satz von Geräten ausführen, andere auf einem kleinen.

Die geschätzte Zeit für den Abschluss des Tests beträgt eine Minute pro Anwendungsbildschirm. Wenn Sie 30-40 Bildschirme haben, dauert der Test für jedes Gerät etwa 30-40 Minuten. Um dies zu beschleunigen, können Sie Tests in mehreren Threads gleichzeitig auf mehreren Geräten durchführen. Für diese Option müssen Sie extra bezahlen.



Hier können Sie die automatische Verteilung nach Bestehen der Tests konfigurieren: Die Version wird automatisch in den Anwendungsspeichern angeordnet.



Wenn Sie die Anwendung an einer Gruppe von Benutzern testen müssen, erstellen wir vor der Freigabe auf dem Markt Gruppen, die zu Mitarbeitern oder Benutzern passen, die der Anwendung treu sind. Sobald wir die Verteilung durchführen, erhalten alle eine E-Mail mit einem eindeutigen Link zum Herunterladen der neuen Version. Nach solchen Tests können Sie Telemetrie von "Testbenutzern" sammeln und sehen, wie die Anwendung auf ihrer Hardware funktioniert.



Hier verbinden Sie sich mit Marktplätzen.



Um die Anwendung zu diagnostizieren, müssen Sie das SDK verbinden. Und alle Stellen des Codes, an denen etwas fallen kann, umgeben versuchen und fangen. Wenn die Anwendung auf dem Benutzergerät abstürzt, können Sie Absturzabbilder empfangen und Diagnosen durchführen.



Analytics zeigt, wie Benutzer Anwendungen ausführen: Legen Sie dasselbe SDK ab und sehen Sie, welche Ereignisse in der Anwendung in welcher Reihenfolge zwischen den Bildschirmen angezeigt werden.



Eine Option zum Sammeln von Daten, Metriken und allen Arten von Overhead-Informationen. Wie schnell die Anwendung geöffnet wird, wie sie funktioniert. All dies erfolgt auf der Basis von Azure Cosmos DB, wo Sie recht erweiterte Analysen ansehen können.



Mit dem SDK können Benutzer Push-Benachrichtigungen senden, um Aufmerksamkeit zu erregen oder über neue Versionen der Anwendung zu informieren. Nicht nur praktisch, sondern auch vorteilhaft: Solche Nachrichten sind um ein Vielfaches billiger als SMS.



Innerhalb der Anwendung können Benutzer nach verschiedenen Kriterien segmentiert werden: Gerätetypen, Geografie usw. und Marketingaktivitäten basierend auf den resultierenden Gruppen durchführen.

Azure DevOps-Kernkomponenten


App Center-Funktionen - Geräte in den Clouds, Builds, Tests und Softwareverteilung - sind nur ein Teil des Entwicklungsprozesses, den Azure DevOps ergänzt. Auf dieser Plattform können Sie Dashboards und Taskboards erstellen, Wissen über das Projekt im Wiki speichern und das Repository für Dateien und Artefakte verwenden. Wenn Sie mit einem komplexen Förderer für die Softwareherstellung arbeiten müssen, können Sie hier Pipelines konfigurieren und angeben, wo sich die Builds befinden sollen.



  • Boards - eine Reihe von Tools für die Planung von Arbeiten, Diskussionen, Überwachung usw. Kanban-Boards, Dashboards, Scrum-Boards - all dies kann leicht an die Besonderheiten des Projekts und die Funktionen des Teams angepasst werden.
  • Pipelines — . . Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android iOS, Kubernetes.
  • Repos — Git. Marketplace - REST API. .
  • Artifacts — - Maven, npm, NuGet Python . CI/CD.

App Center Azure DevOps


Wenn Sie sich bei Appcenter.ms registrieren, können Sie alle Funktionen des App Centers zwei Monate lang kostenlos nutzen. Nach dem Testzeitraum kostet ein Build 40 US-Dollar pro Monat, Sie können ihn jedoch unbegrenzt oft ausführen. Dies ist eindeutig rentabler als eine eigene mobile Testfarm.

Azure DevOps ist ein völlig kostenloser Dienst, wenn Sie ein Team von maximal fünf Entwicklern haben oder ein OpenSource-Projekt durchführen. Repositories, Code-Repositories, Pipelines, Boards - all dies wird kostenlos zur Verfügung gestellt. 

Wenn Sie mehr darüber wissen oder die Plattform jetzt nutzen möchten, interessieren Sie sich für Dev Bootcamp - unseren Online-Marathon für Entwickler. Während der Veranstaltung25-29 , , , Open Source-, OpenSource . Microsoft, . , !

All Articles