Das Testen einer App auf Android oder iOS ist nicht sehr unterschiedlich. Der Zweck ist derselbe, das gewünschte Ergebnis ist das gleiche und der Prozess ist ähnlich. Der Hauptunterschied tritt auf, wenn wir die Details betrachten. Das habe ich in diesem Artikel vor.
Bevor wir eintauchen, wollen wir über einige Grundlagen des Testens sprechen. Es ist unmöglich, unsere Optionen zu überprüfen, es sei denn, wir kennen und verstehen das vollständige Bild.
Was Android auszeichnet, sind die unzähligen Möglichkeiten. Unter iOS gibt es iPhone, iPad und iPod Touch. Sie unterscheiden sich, aber der gemeinsame Faktor zwischen iOS-Geräten ist die Pixeldichte, die Bildschirmauflösung, die Prozessorgeschwindigkeit, die Speichergröße usw..
Im Fall von Android gibt es Tausende von Kombinationen, wenn wir dieselben Faktoren betrachten, Bildschirmauflösung und -größe, Prozessorgeschwindigkeit, Speichergröße und, umso mehr, die Fragmentierung des Betriebssystems.
Apropos Betriebssystemversionen: Es ist nicht ungewöhnlich, dass Netzbetreiber und Telefonhersteller nicht zu lange nach Veröffentlichung des Produkts keine Updates mehr veröffentlichen. Ist das ein Problem? Ja. Werfen Sie einen Blick auf die offiziellen Statistiken zum Android-Marktanteil von Google, um sich ein Bild von der Größenordnung des Problems zu machen.
In absteigender Reihenfolge des Marktanteils haben wir Jelly Bean (4.1-4.3), Lebkuchen (2.3) und Ice Cream Sandwich (4.0)..
Vergleichen Sie das mit der Akzeptanzrate von Apples iOS 7. Ende Januar dieses Jahres waren 80% der iOS-Geräte mit iOS 7 ausgestattet. Beachten Sie, dass iOS 7 im September 2013 veröffentlicht wurde. Das ist ein wesentlicher Unterschied.
Haben Sie jemals eine wirklich schlechte Android-Anwendung verwendet? Schlimmer als eine völlig schlechte Anwendung ist eine wirklich großartige, die einige hartnäckige Fehler aufweist.
Ich denke, ein großer Faktor bei guten Tests ist es, darauf zu achten, was Sie verwenden, mögen und hassen. Hass ist ein starkes Wort, aber ich bin mir sicher, dass es immer etwas gibt, das auffällt.
Stellen Sie sich folgende Fragen:
Nehmen wir Bezug auf das Marktchart für Android-Betriebssysteme, das wir zuvor gesehen haben. Es ist unrealistisch, wenn Sie an das Testen denken, dass Sie jedes Gerät und jede Variante von Android unterstützen.
Mein Punkt ist, dass wir über die Verteilung nachdenken müssen. Was macht unsere App und wie sieht der Zielmarkt aus? Ist es ein Spiel oder eine Dienstprogrammanwendung??
Wenn es sich um ein Spiel handelt, liegt der Fokus möglicherweise nur auf neueren und höherwertigen Geräten. Eine Dienstprogrammanwendung könnte jedoch von einem breiteren Publikum verwendet werden und muss auf einer breiteren Palette von Geräten funktionieren.
Ein Problem, dem die meisten von uns begegnen, ist, dass wir unseren Projekten zu nahe sind. Wir wissen, wie wir unsere App zum Scheitern bringen können und wie sie funktioniert. Aus diesem Grund versuche ich absichtlich, mich auf die eines Benutzers zu konzentrieren. Ich stelle Benutzer in zwei große Kategorien ein, die Button Masher und das Nutzer.
Der Button Masher ist der Typ von Benutzer, der gerade anfängt, auf den Bildschirm zu tippen, hier eine Schaltfläche, dort eine Schaltfläche. "Der letzte Knopf hat nichts getan. Ich drücke noch einen."
Was wir von diesem Benutzertyp lernen können ist, wo wir intensive Prozesse in unserer App haben. Wenn etwas passiert und eine andere Anforderung oder Aktion erfolgt, spitzen wir den Prozessor an oder füllen den Speicher des Geräts auf? Fällt die Anwendung aus??
Die andere Frage, die an die Oberfläche gestellt wird, lautet: "Wie gut informieren wir den Benutzer darüber, was los ist." Warum haben sie einen anderen Knopf gedrückt anstatt zu warten? Können wir dies durch Anzeige eines Ladebildschirms beheben??
Der Benutzer hat Absicht. Ein besserer Weg, um diesen Benutzertyp zu erklären, wäre die Verwendung von Anwendungsfällen. Es gibt eine bestimmte Aufgabe, die sie erfüllen möchten, und einen bestimmten Ablauf, dem sie nachgehen wollen.
Wir können lernen, wie klar die App ist, um eine Person durch einen Prozess oder eine Aktion zu führen. Es zeigt uns, wo sich ein Benutzer verliert und welche Bereiche mehr Aufmerksamkeit oder Verfeinerung erfordern.
Wir haben über unseren Zweck und verschiedene Benutzertypen gesprochen, aber was? sind unsere Möglichkeiten und wie sollten wir sie testen? Zum Glück gibt es viele. Und ich empfehle Ihnen, so viele wie möglich zu machen.
Wenn Sie nicht den Luxus haben, in die QS-Abteilung oder ein Testlabor gehen zu können, können Sie einen Freund anrufen. Sie brauchen Augen und Sie brauchen Geräte.
Beim Testen von mobilen Apps kann das Volumen einen Unterschied machen, insbesondere wenn Sie verschiedene Geräte erwerben können.
Automatisiertes Testen ist dein Freund. Während eine komplette Anwendung nichts Zeit für eine praktische Anwendung hat, ist es auch wichtig zu sehen, was unter der Haube passiert und wie Ihre App programmgesteuert auf bestimmte Situationen oder auf Stress reagiert.
Noch wichtiger ist jedoch, dass Sie mit Unit-Tests sofort testen können, was vor dem Release viel Zeit beim Testen und bei der Qualitätssicherung sparen kann.
Das Android-SDK wird mit dem Android-Testframework geliefert, das aus einer Test-API besteht, die auf JUnit und Monkeyrunner basiert.
Die Android JUnit-Erweiterung ermöglicht Entwicklern das Schreiben von Komponententests gegen Android-Komponenten und die Android-API mit vorgefertigten komponentenspezifischen Testfallklassen.
Monkeyrunner ist eine auf Python basierende API, mit der Sie Programme schreiben können, die ein Gerät aus der Perspektive eines Benutzers steuern. Das bedeutet, dass Sie Tests erstellen können, die auf zahlreichen Geräten oder Emulatoren ausgeführt werden, die mit Ihrer App interagieren, Tastatureingaben senden und Screenshots erstellen.
Es gibt viele Test-Frameworks. Einige der beliebtesten sind Robolectric und Robotium.
Robolectric ist ein Gerätetest-Framework, das in Ihrer IDE ausgeführt wird. Dies ist ideal für die Überprüfung des vorgefertigten Codes. Robotium führt Tests gegen die Android-API in Emulatoren durch. Während der Abschluss der Tests mehr Zeit in Anspruch nimmt, wird Ihr Anwendungscode viel mehr einem realen Test mit Geräten und der API unterzogen.
Eine andere interessante Option ist Espresso. Im Vergleich zu den beiden vorigen beiden Optionen hat dies einen ganz besonderen Zweck. Es ist eine API, um Tests mit der Android-Benutzeroberfläche auszuführen.
Alle oben genannten Optionen sind großartig, aber wenn Sie eine Hybrid-App erstellen, können Sie sie möglicherweise nicht verwenden. Appium ist ein plattformübergreifendes Automatisierungsframework, mit dem Sie Tests für die beiden wichtigsten mobilen Plattformen mit der gewünschten Sprache erstellen können.
Es ist auch sehr hilfreich, einige Statistiken zu sehen und, was noch wichtiger ist, Fehler- und Absturzprotokolle zu sammeln. Dies ist besonders nützlich, wenn viele Benutzer Ihre Anwendung testen, da das Sammeln von Protokollen von jedem einzelnen Benutzer umständlich werden kann.
Neben der Nachverfolgung der App-Nutzung können Sie mit Google Analytics auch Ausnahmen senden. Flurry ist eine weitere getestete Option. Sie sind schon lange dabei und ihre Berichte und Absturzberichte sind etwas detaillierter.
Google hilft zwar nicht während der Entwicklungsphase Ihrer Anwendung, sammelt aber auch Absturzberichte für Apps im Play Store.
Wir möchten alle 400 Geräte zum Testen haben, wie diese umfangreichen Testlabors, die wir online gesehen haben. Das ist jedoch nicht realistisch. Um dieses Problem zu lösen, stehen viele Services zur Verfügung, wenn Sie bereit sind, in Tests zu investieren.
Diese Services reichen von Einzeltests in realen Situationen bis hin zu vollautomatischen Tests auf Hunderten von Geräten. Wenn Sie bereit sind, dafür zu zahlen, ist es verfügbar.
Ich habe keine Erfahrung mit den meisten davon, aber die, die ich verwendet habe, ist User Testing. Es ist sehr hilfreich zu sehen, wie eine Person Ihrem Testskript folgt, während sie Ihre Anwendung durchläuft und Ihnen ihre Gedanken gibt.
Dies sind einige zu berücksichtigende Dienste:
Zu oft bin ich auf die Situation gestoßen, in der QS und Testing nachträglich wirkten. In der Realität ist dies wahrscheinlich der wichtigste Teil des Entwicklungsprozesses.
Android mit seinen vielen Geschmacksrichtungen mag einschüchternd wirken, aber wenn man es fast programmgesteuert anspricht, wird es wirklich nur ein Teil des Prozesses. Es ist die zusätzliche Zeit und Mühe wert. Qualitäts-Apps passieren nicht einfach.