Teil 6: Testen und App Store-Genehmigungen

Testen

Viele Apps (auch Android-Apps, in einigen Stores) müssen einen Genehmigungsprozess bestehen, bevor sie veröffentlicht werden. Daher ist das Testen von entscheidender Bedeutung, um sicherzustellen, dass Ihre App den Markt erreicht (geschweige denn bei Ihren Kunden erfolgreich ist). Tests können viele Formen annehmen, von Komponententests auf Entwicklerebene bis hin zur Verwaltung von Betatests für eine Vielzahl von Hardware.

Testen auf allen Plattformen

Es gibt geringfügige Unterschiede zwischen der Unterstützung von .NET auf Windows Phone-, Tablet- und Desktopgeräten sowie Einschränkungen für iOS, die verhindern, dass dynamischer Code on the fly generiert wird. Entweder planen Sie, den Code während der Entwicklung auf mehreren Plattformen zu testen, oder planen Sie zeit, um den Modellteil Ihrer Anwendung am Ende des Projekts umzugestalten und zu aktualisieren.

Es empfiehlt sich immer, den Simulator/Emulator zu verwenden, um mehrere Versionen des Betriebssystems und auch verschiedene Gerätefunktionen/-konfigurationen zu testen.

Sie sollten auch auf so vielen verschiedenen physischen Hardwaregeräten wie möglich testen.

Geräte in der Cloud

Das Mobiltelefon- und Tablet-Ökosystem wächst ständig, sodass es unmöglich ist, auf der ständig wachsenden Anzahl verfügbarer Geräte zu testen. Um dieses Problem zu lösen, bietet eine Reihe von Diensten die Möglichkeit, viele verschiedene Geräte remote zu steuern, sodass Anwendungen installiert und getestet werden können, ohne direkt in viel Hardware investieren zu müssen.

App Center Test bietet eine einfache Möglichkeit, iOS- und Android-Anwendungen auf Hunderten von verschiedenen Geräten zu testen. Weitere Informationen finden Sie unter Vorbereiten von Xamarin.Android-Apps und Vorbereiten von Xamarin.iOS-Apps.

Testverwaltung

Beim Testen von Anwendungen innerhalb Ihres organization oder beim Verwalten eines Betaprogramms mit externen Benutzern gibt es zwei Herausforderungen:

  • Verteilung : Verwalten des Bereitstellungsprozesses (insbesondere für iOS-Geräte) und Abrufen aktualisierter Softwareversionen an die Tester.
  • Feedback : Sammeln von Informationen zur Anwendungsnutzung und detaillierten Informationen zu eventuell auftretenden Fehlern.

Es gibt eine Reihe von Diensten, um diese Probleme zu beheben, indem sie eine Infrastruktur bereitstellen, die in Ihre Anwendung integriert ist, um Nutzung und Fehler zu sammeln und zu melden, und auch den Bereitstellungsprozess optimieren, um die Registrierung und Verwaltung von Testern und deren Geräten zu erleichtern.

Visual Studio App Center bietet eine Lösung für diese Probleme, indem es Die Verteilung von Testversionen, Absturzberichte und komplexe Anwendungsnutzungsinformationen bereitstellt.

Testautomatisierung

Xamarin UITest kann verwendet werden, um automatisierte Testskripts für die Benutzeroberfläche zu erstellen, die lokal ausgeführt oder in App Center Test hochgeladen werden können.

Komponententests

Touch.Unit

Xamarin.iOS enthält ein Komponententestframework namens Touch.Unit, das den Schreibtests im JUnit/NUnit-Stil folgt.

Ausführliche Informationen zum Schreiben von Tests und zum Ausführen von Touch.Unit finden Sie in der Dokumentation zu Komponententests mit Xamarin.iOS .

Andr.Unit

Es gibt eine Open-Source-Entsprechung von Touch.Unit für Android namens Andr.Unit. Sie können es von github herunterladen und über das Tool im Blog von @spouliot lesen.

App Store Genehmigungen

Apple und Microsoft betreiben den einzigen Store auf ihren Plattformen: den App Store bzw. Marketplace. Beide sperren ihre Geräte und implementieren einen strengen App-Überprüfungsprozess, um die Qualität der zum Download verfügbaren Anwendungen zu kontrollieren. Die offene Natur von Android bedeutet, dass es eine Reihe von Store-Optionen gibt, von Google Play, das weit verbreitet ist und keinen Überprüfungsprozess hat, bis hin zu Amazons Appstore für Android und hardwarespezifischen Bemühungen wie Samsung Apps, die eine begrenztere Verteilung haben und einen Genehmigungsprozess implementieren.

Das Warten auf die Überprüfung einer App kann sehr stressig sein . Geschäftsdruck bedeutet häufig, dass Anträge zur Genehmigung mit sehr geringer Fehlerspanne vor einem "gezielten" Startdatum eingereicht werden. Der Prozess selbst kann bis zu zwei Wochen dauern und ist nicht unbedingt transparent: Es gibt nur begrenztes Feedback zum Fortschritt Ihrer Bewerbung, bis sie endgültig abgelehnt oder genehmigt wird. Ablehnung kann bedeuten, dass ein Marketingfenster verpasst wird, insbesondere, wenn dies mehr als einmal geschieht und Wochen zwischen Ihrem ursprünglichen Startdatum und dem zeitpunkt der endgültigen Genehmigung der App vergehen.

Seien Sie vorbereitet

Der erste Ratschlag: Planen Sie den Start Ihrer App im Voraus und berücksichtigen Sie eine mögliche Ablehnung und erneute Übermittlung. Jeder Store erfordert, dass Sie ein Konto erstellen, bevor Sie Ihre App übermitteln . Tun Sie dies so früh wie möglich. Während die Registrierung von Google Play nur wenige Minuten dauert, wenn Ihre Apps kostenlos sind, wird der Prozess viel mehr involviert, wenn Sie sie verkaufen und Bank- und Steuerinformationen bereitstellen müssen. Die Prozesse von Apple und Microsoft sind beide viel stärker involviert als die von Google, es kann eine Woche oder länger dauern, bis Ihr Konto genehmigt wurde, also berücksichtigen Sie dieses Mal Ihre Einführungspläne.

Nachdem Ihr Konto genehmigt wurde, können Sie eine App übermitteln. Der tatsächliche Prozess zum Übermitteln von Apps wird in der folgenden Dokumentation behandelt:

Im weiteren Verlauf dieses Abschnitts werden die Punkte erläutert, die Sie berücksichtigen sollten, um sicherzustellen, dass Ihre App ohne Probleme genehmigt wird.

Qualität

Es klingt offensichtlich, aber Anwendungen werden oft abgelehnt, weil sie kein bestimmtes Qualitätsniveau erfüllen: Schließlich haben die kuratierten Geschäfte überhaupt einen Genehmigungsprozess!

Abstürze sind ein häufiger Grund für Ablehnung. Wenn es zu einfach ist, Ihre App abzustürzen, wird sie garantiert abgelehnt. Die meisten Entwickler übermitteln ihre Apps nicht mit der Erwartung, dass sie abstürzen, aber oft tun sie dies. Testen Sie Ihre App gründlich, bevor Sie sie übermitteln, und konzentrieren Sie sich nicht nur darauf, sicherzustellen, dass alles funktioniert, sondern auch, dass Sie gängige mobile Fehlerszenarien wie Netzwerkprobleme und Ressourceneinschränkungen wie Arbeitsspeicher oder Speicherplatz behandeln. Verwenden Sie sowohl den Simulator als auch physische Geräte zum Testen . Unabhängig davon, wie gut Code in einem Simulator ausgeführt wird, kann nur ein Gerät die tatsächliche Leistung einer App demonstrieren. Verwenden Sie so viele verschiedene Geräte, wie Sie finden können, und melden Sie sich, wenn möglich, ein Team von Betatestern an. Drittanbieterdienste können bei der Verwaltung der Betaverteilung und des Feedbacks helfen.

Alle mobilen Betriebssysteme beenden eine Anwendung, die nicht schnell genug gestartet wird. Die zulässige Dauer variiert, aber im Allgemeinen sollten Apps darauf abzielen, in wenigen Sekunden reaktionsfähig zu sein und Hintergrundaufgaben zu verwenden, um alle Aufgaben auszuführen, die länger dauern würden. Apps, die das Laden zu lange dauern oder bei regelmäßiger Verwendung nicht reaktionsfähig sind, werden abgelehnt. Geben Sie immer Benutzerfeedback, wenn etwas im Hintergrund geschieht, oder die App scheint abgestürzt zu sein, und wird erneut abgelehnt.

Überprüfen Ihrer Edgefälle

Eine häufige Falle für Entwickler besteht darin, Edgefälle nicht zu behandeln, insbesondere solche, die ihren Simulator oder ihr Gerät erneut konfigurieren müssen, um ordnungsgemäß zu testen. Es kann leicht vergessen werden, dass nicht jeder Kunde Ihrer App den Zugriff auf seinen Standort "zulassen" wird, da der Entwickler die Anforderung einmal angenommen hat, er nie wieder aufgefordert wird. Berechtigungen und Die Netzwerknutzung werden während des Genehmigungsprozesses besonders fokussiert, was bedeutet, dass ein kleiner Überblick in diesen Bereichen zu Ablehnung führen kann.

Die folgende Liste ist ein guter Ausgangspunkt für die Überprüfung von Edgefällen, die möglicherweise übersehen wurden:

  • Kunden können den Zugriff auf Dienste "verweigern" – insbesondere in iOS wird der Zugriff auf Daten wie Geostandortinformationen nur gewährt, wenn der Benutzer Ihrer Anwendung die Berechtigung erteilt. Anwendungstester sollten die Anwendung häufig in ihrem ursprünglichen Zustand erneut installieren und alle Berechtigungsanforderungen nicht zulassen, um sicherzustellen, dass sich die Anwendung entsprechend verhält. Schalten Sie die Berechtigung ein und aus, um das richtige Verhalten zu überprüfen, wenn Kunden ihre Meinung ändern.
  • Kunden sind überall – gehen Sie nicht davon aus, dass eine App nur in der Stadt oder dem Land verwendet wird, in dem sie entwickelt wurde! Code, der mit GPS-Koordinaten, Datums- und Uhrzeitwerten und Währungen funktioniert, kann von den Standort- und Gebietsschemaeinstellungen des Kunden beeinflusst werden. Alle Plattformen bieten einen Simulator, mit dem Sie verschiedene Standorte und Gebietsschemas angeben können. Verwenden Sie ihn zum Testen von Standorten in anderen Hemisphären und mit Kulturen, die Datumsangaben und Währungen unterschiedlich formatieren. Breiten- und Längengradwerte können positiv oder negativ sein, das Dezimaltrennzeichen kann ein Punkt oder ein Komma sein, und Datumsangaben können eine Vielzahl von Möglichkeiten formatiert werden - damit umgehen!
  • Langsame Netzwerkverbindungen – App-Entwickler arbeiten häufig in einer "idealen Welt" schneller, immer funktionierender Netzwerkkonnektivität, was in der realen Welt offensichtlich nicht der Fall ist. Tests mit langsamer Netzwerkkonnektivität (z. B. einer schlechten 3G-Verbindung) sowie ohne Netzwerkzugriff sind wichtig, um sicherzustellen, dass Sie keine fehlerhafte App versenden. Der Genehmigungsprozess umfasst immer einen Test mit dem Gerät im Flugzeugmodus. Stellen Sie also sicher, dass Sie dies selbst getestet haben.
  • Hardware variiert– Denken Sie daran, die älteste, langsamste Hardware zu testen, die Sie unterstützen möchten. Es gibt zwei Aspekte, die sich auf Ihre App auswirken können: Die Leistung, die auf einem älteren Gerät möglicherweise unbrauchbar ist, und die Unterstützung von Hardwarefeatures wie Kamera, Mikrofon, GPS, Gyroskop oder einer anderen optionalen Komponente. Anwendungen sollten ordnungsgemäß herunterfahren (und nicht abstürzen), wenn eine Komponente nicht verfügbar ist.

Richtlinien sind mehr als nur ein "Leitfaden"

Apple ist bekannt dafür, dass er strikt die Richtlinien für menschliche Schnittstellen einnimmt, da eine der wichtigsten Stärken seiner Plattform Konsistenz (und die wahrgenommene Steigerung der Benutzerfreundlichkeit) ist. Microsoft hat einen ähnlichen Ansatz mit Windows-Anwendungen verfolgt, die die Fluent Design System implementieren. Der Genehmigungsprozess für beide Plattformen beinhaltet, dass Ihre App auf ihre Einhaltung der relevanten Designphilosophie bewertet wird.

Das heißt nicht, dass Innovationen der Benutzeroberfläche nicht unterstützt oder gefördert werden, aber es gibt bestimmte Dinge, die Sie "einfach nicht tun sollten", oder Ihre App wird abgelehnt.

Unter iOS umfasst dies die missbräuchliche Verwendung von integrierten Symbolen oder die Verwendung anderer bewährter Metaphern auf nicht konsistente Weise. beispielsweise die Verwendung des Symbols "Verfassen" für alles andere als das Erstellen neuer Inhalte.

Windows-Entwickler sollten ähnlich vorsichtig sein. Ein häufiger Fehler ist, dass die Hardwaretaste "Zurück" gemäß den Richtlinien von Microsoft nicht ordnungsgemäß unterstützt wird.

Ermutigen Sie Ihre Designer, die Entwurfsrichtlinien für jede Plattform zu lesen und zu befolgen.

Implementieren Platform-Specific Features

Bei der Implementierung plattformspezifischer Dienste, insbesondere unter iOS, sind die Dinge etwas strenger. Um die automatische Ablehnung durch Apple zu vermeiden, gibt es einige Regeln, die mit den folgenden iOS-Features zu befolgen sind:

  • In-App-Käufe : Anwendungen dürfen KEINE externen Zahlungsmechanismen für digitale Produkte implementieren, einschließlich Spielwährung, Anwendungsfeatures, Zeitschriftenabonnements und vieles mehr. iOS-Apps müssen für diese Art von Funktionalität den iTunes-basierten Dienst von Apple verwenden. Es gibt eine Lücke : Apps wie der Kindle Reader und einige abonnementbasierte Apps ermöglichen es Ihnen, Inhalte an anderer Stelle zu kaufen, die an ein "Konto" angefügt werden, auf das Sie dann über die App zugreifen können. In diesem Fall darf die App jedoch keine Links oder Verweise auf den Out-of-App-Kaufprozess enthalten (oder erneut abgelehnt werden).
  • iCloud-Sicherung – Mit dem Aufkommen von iCloud sind die Prüfer von Apple viel strenger in Bezug auf die Nutzung von Speicher in Apps (um sicherzustellen, dass die Remotesicherungserfahrung des Kunden angenehm ist). Apps, die sicherungsfähigen Speicherplatz verschwenden, werden möglicherweise abgelehnt. Verwenden Sie daher den Cache-Ordner entsprechend und befolgen Sie die anderen speicherbezogenen Richtlinien von Apple.
  • Zeitungsstand - Zeitungs- und Zeitschriften-Apps eignen sich hervorragend für Apples Kiosk, aber Apps müssen mindestens ein Abonnement zur automatischen Verlängerung implementieren und Hintergrunddownloads unterstützen, um genehmigt zu werden.
  • Karten : Es ist immer häufiger, mobile Karten Überlagerungen und andere Features hinzuzufügen. Achten Sie jedoch darauf, die Karteninformationen (z. B. das Google-Logo in iOS5) nicht zu verdecken, da dies zu Einer Ablehnung führt.

Verwalten Ihrer Metadaten

Zusätzlich zu den offensichtlichen technischen Problemen, die dazu führen können, dass eine Anwendung abgelehnt wird, gibt es einige subtilere Aspekte Ihrer Übermittlung, die zu Ablehnung führen können, insbesondere um die Metadaten (Beschreibung, Schlüsselwörter und Marketingbilder), die Sie mit Ihrer Anwendung zur Anzeige im App Store oder Marketplace übermitteln.

  • Bilder: Befolgen Sie die Richtlinien der Plattform für Anwendungssymbole und Speichern von Bildern. Verwenden Sie keine markenrechtlich geschützten Bilder, wir haben gesehen, dass Apps abgelehnt wurden, weil ihre Symbole eine Zeichnung eines iPhones enthielten!
  • Marken – Vermeiden Sie die Verwendung anderer Marken als Ihrer eigenen. Apps wurden für die Erwähnung von Marken in der App-Beschreibung oder sogar in den Schlüsselwörtern auf Apples App Store verweigert.
  • Beschreibung : Verwenden Sie nicht das Wort "beta", oder geben Sie in irgendeiner Weise an, dass die App nicht für die Primetime bereit ist. Erwähnung Sie keine anderen mobilen Plattformen (auch dann nicht, wenn Ihre App plattformübergreifend ist). Stellen Sie vor allem sicher, dass die App genau das tut, was Sie sagen. Wenn Sie eine Reihe von Features in Ihrer Beschreibung auflisten, war es besser offensichtlich, wie sie jedes dieser Features verwenden sollten, oder Sie erhalten eine "Feature, die in der Beschreibung der Anwendung erwähnt ist nicht implementiert" ablehnung.

Geben Sie sich ebenso viel Aufwand in die Metadaten der Anwendung wie in die Entwicklung und das Testen. Anwendungen werden für geringfügige Verstöße in den Metadaten abgelehnt, daher lohnt es sich, sich die Zeit zu nehmen, um sie richtig zu machen.

App Stores: Nicht für jeden

Der Hauptfokus der Filialen auf jeder Plattform ist die Verbraucherverteilung - die Fähigkeit, so viele Kunden wie möglich zu erreichen. Allerdings sind nicht alle Anwendungen auf Verbraucher ausgerichtet, es gibt eine schnell wachsende Basis von internen und Extranet-ähnlichen Anwendungen, die eine begrenzte Verteilung auf Mitarbeiter, Lieferanten oder Kunden erfordern. Diese Apps sind nicht "zum Verkauf" und benötigen keine Genehmigung, da der Entwickler die Verteilung an eine geschlossene Gruppe von Benutzern steuert. Die Unterstützung für diese Art von Bereitstellung variiert je nach Plattform.

Android bietet in dieser Hinsicht die größte Flexibilität: Anwendungen können direkt über eine URL oder E-Mail-Anlage installiert werden (sofern die Konfiguration des Geräts dies zulässt). Dies bedeutet, dass es trivial ist, unternehmensinterne Anwendungen zu erstellen und zu verteilen oder Anwendungen an bestimmte Kunden oder Lieferanten zu veröffentlichen.

Apple bietet entwicklern, die im iOS Developer Enterprise Program registriert sind, eine interne Bereitstellungsoption, die den App Store Genehmigungsprozess umgeht und es Unternehmen ermöglicht, interne Apps an ihre Mitarbeiter zu verteilen. Leider erfüllt diese Lizenz nicht die Notwendigkeit einer Extranet-ähnlichen App-Verteilung an andere geschlossene Kundengruppen oder Lieferanten. Unternehmensbereitstellung (und Ad-hoc)-Bereitstellung

App Store Zusammenfassung

Der Überprüfungsprozess kann entmutigend sein, aber wie im restlichen Entwicklungslebenszyklus können Sie mit etwas Planung und Liebe zum Detail dazu beitragen, den Erfolg sicherzustellen. Es geht um einige einfache Schritte: Lesen und verstehen Sie die Richtlinien für die Benutzeroberfläche, die Sie einhalten müssen, befolgen Sie die Regeln, wenn Sie plattformspezifische Features implementieren, testen Sie gründlich (und testen Sie dann einige weitere), und stellen Sie schließlich sicher, dass Ihre Anwendungsmetadaten korrekt sind, bevor Sie übermitteln.

Ein letzter Rat an Entwickler, die auf Google Play veröffentlichen: Der fehlende Genehmigungsprozess mag so aussehen, als ob er Ihre Arbeit erleichtert - aber Ihre Kunden werden noch anspruchsvoller sein als ein Review-Team. Befolgen Sie diese Richtlinien, als ob Ihre App abgelehnt werden könnte, andernfalls werden Ihre Kunden die Ablehnung durchführen.