Android APP-Test-Tutorial mit Automation Framework
Warum Android Testen?
Android ist das größte Betriebssystem der Welt. Gleichzeitig Android ist fragmentiert. Es gibt Unmengen von Geräten und Android Versionen, mit denen Ihre App kompatibel sein muss.
Es spielt keine Rolle, wie viel Zeit Sie in Design und Implementierung investieren, Fehler sind unvermeidlich und Bugs werden auftreten.
Android Teststrategie
Eine korrekte Android-Teststrategie sollte Folgendes umfassen
- Gerätetest
- Integrationstest
- Operationaler Test
- Systemtest
Unit-Tests
Unit-Tests umfassen Sätze aus einem oder mehreren Programmen, die dazu bestimmt sind, eine atomare Einheit des Quellcodes zu überprüfen, beispielsweise eine Methode oder eine Klasse.
Android Die Plattform ist bereits integriert Juni 3.0-Framework. Es handelt sich um ein Open-Source-Framework zur Automatisierung Unit Tests. Android Testing Framework ist ein leistungsstarkes Tool für Entwickler zum Schreiben eines effektiven Unit-Testprogramms.
Eine Ergänzung zum Unit-Test sind User Interface (UI)-Tests. Diese Tests beziehen sich auf UI-Komponenten Ihrer Zielanwendung. UI-Tests stellen sicher, dass Ihre Anwendung als Reaktion auf die Reihenfolge der Benutzeraktionen auf dem Gerät die richtige UI-Ausgabe zurückgibt.
Die übliche Methode zur Durchführung von UI-Tests auf Geräten ist Android Anzeigen / Instrumente. Dies hat jedoch Leistungsprobleme. Eines der besten Tools zum Durchführen von UI-Tests Android is Ein Roboter.
Integrationstests
In Integrationstests, alle Unit-getesteten Module, werden kombiniert und verifiziert. In AndroidBei Integrationstests wird häufig die Integration mit überprüftAndroid Komponenten wie Diensttests, Aktivitätstests, Inhaltsanbietertests usw
Es gibt viele Test-Frameworks, die zur Durchführung von Integrationstests verwendet werden Android wie Troyd, Robolectric, Robotium.
Operafunktionale Tests
- OperaFunktionelle Tests werden auch als Funktionstests oder Akzeptanztests bezeichnet. Dabei handelt es sich um hochrangige Tests zur Überprüfung der Vollständigkeit und Richtigkeit der Anwendung.
- In Android, Fitnesse ist ein Open-Source-Framework, das die Durchführung von Betriebstests für die Zielanwendung erleichtert.
Systemtests
In Systemtest Dabei wird das System als Ganzes getestet und das Zusammenspiel der Komponenten, Software und Hardware überprüft.
In Android, Systemtests umfassen normalerweise
- GUI-Tests
- Usability-Tests
- Leistungstests
- Stresstests
In der obigen Liste, Performance Testing wird stärker in den Fokus gerückt. Sie können Tools wie verwenden Traceview um einen Leistungstest durchzuführen Android .Dieses Tool kann Ihnen beim Debuggen Ihrer Anwendung und beim Profilieren ihrer Leistung helfen.
Automatisiertes ANDROID-TESTING
Da Android fragmentiert ist, ist das Testen auf einer Vielzahl von Geräten notwendig. Aber das kostet auch Geld. Automatisiert Android Tests können helfen, Kosten zu senken
Vorteile automatisierter Android-Tests
- Reduzieren Sie die Zeit für die Ausführung von Testfällen
- Steigern Sie die Produktivität Ihres Entwicklungsprozesses
- Frühzeitige Fehlererkennung, Kosteneinsparung bei der Softwarewartung
- Fehler bei der Implementierung schnell gefunden und behoben
- Stellen Sie die Qualität der Software sicher
Wir werden die folgenden 2 Frameworks untersuchen
- Android Testframework
- Robolectric Testing-Framework
Android Testrahmen
Eines der Standard-Testframeworks für Android Anwendung Android Testrahmen. Es handelt sich um ein leistungsstarkes und benutzerfreundliches Test-Framework, das gut in das integriert ist Android SDK-Tools.
- Anwendungspaket ist Ihre Zielanwendung, die getestet werden muss
- InstrumentationTestRunner ist das Testfall Läufer, der einen Testfall für die Zielanwendung ausführt. Es enthält:
2a) Testwerkzeuge: Ein SDK-Tool zum Erstellen von Tests. Sie sind integriert Eclipse IDE oder als Befehlszeile ausführen.
2b) MonkeyRunner: Ein Tool, das APIs zum Schreiben von Programmen bereitstellt, die eine steuern Android Gerät oder Emulator außerhalb Android Code.
- Testpaket sind in Testprojekten organisiert. Dieses Paket folgt der Namenskonvention. Wenn die zu testende Anwendung den Paketnamen „com.mydomain.myapp“ hat, sollte das Testpaket „com.mydomain.myapp.test“ lauten. Das Testpaket enthält die folgenden zwei Objekte:
3a) Testfallklassen: umfassen Testmethoden, die in der Zielanwendung ausgeführt werden sollen.
3b) Scheinobjekte: Enthält Scheindaten, die als Beispieleingabe für Testfälle verwendet werden.
Android Testfallklassen
- Testfall Dazu gehören JUnit auszuführende Methoden JUnit Test
- TestSuite wird verwendet, um eine Reihe von Testfällen auszuführen
- InstrumentationTestSuite ist eine TestSuite, die Instrumentierung in InstrumentationTestCase einfügt, bevor sie ausgeführt wird.
- InstrumentationTestRunner ist der Testfall-Läufer, der Testfälle für die Zielanwendung ausführt.
- AndroidTestfall erweitert JUnit Testfall. Es enthält Methoden für den Zugriff auf Ressourcen wie den Aktivitätskontext.
- Anwendungstestfall überprüft die Anwendungsklassen in einer kontrollierten Umgebung.
- InstrumentationTestCase überprüft eine bestimmte Funktion oder ein bestimmtes Verhalten der Zielanwendung, z. B. überprüft die UI-Ausgabe der Anwendung.
- Aktivitätstestfall ist eine Basisklasse, die das Testen der Anwendungsaktivitäten unterstützt.
- ProviderTestCase ist eine Klasse zum Testen eines einzelnen ContentProviders.
- ServiceTestCase wird zum Testen von Serviceklassen in einer Testumgebung verwendet. Es unterstützt auch den Lebenszyklus des Dienstes.
- SingeLauchActivityTestCase wird verwendet, um eine einzelne Aktivität mit einem InstrumentationTestCase zu testen.
- ActivityUnitTestCase wird zum Testen einer einzelnen isolierten Aktivität verwendet.
- ActivityInstrumentationTestCase2 erstreckt sich der JUnit TestCase-Klasse. Es verbindet Sie mit der Zielanwendung mit Instrumentierung. Mit dieser Klasse können Sie auf die GUI-Komponente der Anwendung zugreifen und UI-Ereignisse (Tastendruck- oder Touch-Ereignisse) an die Benutzeroberfläche senden.
Unten sehen Sie ein Beispiel für einen ActivityInstrumentationTestCase. Es überprüft die UI-Funktion der Rechner-Anwendung und die Richtigkeit der UI-Ausgaben.
Roboelektrisches Test-Framework
Testen mit Android Das Testen des Frameworks mit einem Gerät oder Emulator ist schwierig. Das Erstellen und Ausführen von Tests ist langsam und erfordert viel Entwicklungsaufwand. Um dieses Problem zu beheben, gibt es eine andere Möglichkeit – Roboelektrik Testrahmen.
Mit dem Robolectric-Framework können Sie ausführen Android Tests Direkt auf JVM ohne die Notwendigkeit eines Geräts oder eines Emulators.
Robolectric-Testfallklassen
- Wie oben gezeigt, kann Robolectric folgende Aktionen ausführen:
- Registrieren Sie sich und erstellen Sie eine Shadow-Klasse
- Fangen Sie das Laden von ab Android Klasse
- Verwendet Javaassist, um die Methodenkörper von zu überschreiben Android Klasse
- Binden Sie das Shadow-Objekt an Android Klasse
- Dadurch kann der zu testende Code ohne ausgeführt werden Android Umwelt.
Andere Test-Framework
Neben den oben genannten Test-Frameworks gibt es viele andere Test-Frameworks wie:
- Android Junit-Bericht, ein benutzerdefinierter Instrumentierungstestläufer für Android das XML-Berichte für die Integration mit anderen Tools generiert.
- Expresso
- Appium
Mythen von Android Testen
Viele Unternehmen entwickeln Android Testen Strategien, die auf weit verbreiteten Missverständnissen basieren. In diesem Abschnitt werden einige populäre Mythen und Realitäten untersucht Android Testen.
Mythos Nr. 1: Alle Android Geräte sind gleich ... Tests mit Emulatoren reichen aus
Beginnen wir mit einem einfachen Beispiel. Eine Anwendung funktioniert auf Emulatoren einwandfrei, auf einigen echten Geräten stürzt sie jedoch während der Ausführung ab
Emulatoren sind nicht ausreichend für Ihre mobilen Tests. Sie müssen Ihre App auf echten Geräten testen.
Mythos Nr. 2: Es reicht aus, auf einigen gängigen Geräten zu testen
- Auf unterschiedlichen Geräten sieht Ihre Anwendung unterschiedlich aus, da unterschiedliche Geräte über unterschiedliche Hardware, Bildschirmgrößen, Speicher usw. verfügen. Sie müssen Ihre Anwendung auf unterschiedlichen Geräten, Betriebssystemversionen, Trägernetzwerken und Standorten testen.
Mythos Nr. 3: Explorative Tests kurz vor dem Start reichen aus
- Im Allgemeinen entwerfen wir bei allen Tests die Testfälle und führen sie dann aus. Beim explorativen Testen werden Testdesign und Testausführung jedoch gemeinsam durchgeführt.
- Beim explorativen Testen gibt es keinen Plan und keine Vorbereitung, dann führt der Tester die Tests durch, die er durchführen möchte. Einige Funktionen werden wiederholt getestet, während andere nicht vollständig getestet werden.
Mythos Nr. 4: Wenn es in der Anwendung Fehler gibt, werden die Benutzer es verstehen
- Wenn die Anwendung nicht funktioniert und Fehler aufweist, deinstallieren Benutzer Ihre App
- Qualitätsprobleme sind der erste Grund für schlechte Bewertungen bei Google Play. Dies beeinträchtigt Ihren Ruf und Sie verlieren das Vertrauen Ihrer Kunden.
Daher ist es wichtig, eine geeignete Android-Teststrategie zu haben
Best Practices in Android Testen
- Anwendungsentwickler sollten die Testfälle gleichzeitig mit dem Schreiben des Codes erstellen
- Alle Testfälle sollten zusammen mit dem Quellcode versioniert gespeichert werden
- Nutzen Sie kontinuierliche Integration und führen Sie jedes Mal Tests durch, wenn sich der Code ändert
- Vermeiden Sie die Verwendung von Emulatoren und gerooteten Geräten