Android App-Testing-Tutorial mit Automatisierungs-Framework
⚡ Intelligente Zusammenfassung
Android App-Tests überprüfen einen Build in einer fragmentierten Gerätelandschaft und kombinieren Unit-, Integrations-, Betriebs- und Systemprüfungen mit Automatisierungsframeworks, die entweder auf einem Gerät oder direkt auf der JVM ausgeführt werden.
Warum Android Testen?
Android ist das größte Betriebssystem der Welt. Gleichzeitig Android ist fragmentiert: Es gibt unzählige Geräte und Android Versionen, mit denen Ihre App kompatibel sein muss.
Egal wie viel Zeit man in Design und Implementierung investiert, Fehler sind unvermeidlich und Bugs werden auftreten.
Android Teststrategie
Ein Richtig Android Die Teststrategie sollte Folgendes umfassen:
- Gerätetest
- Integrationstest
- Operationaler Test
- Systemtest
Unit-Tests
Unit-Tests sind Programmsätze, die dazu dienen, eine atomare Einheit des Quellcodes zu überprüfen, beispielsweise eine Methode oder eine Klasse.
Das Android Die Plattform ist bereits mit der JUnit Framework 3.0. Es handelt sich um ein Open-Source-Framework zur Automatisierung von Prozessen. Unit Testsund es ermöglicht Entwicklern, effektive Unit-Test-Programme zu schreiben.
Eine Ergänzung zu Unit-Tests sind Benutzeroberflächentests (UI-Tests). Diese decken die UI-Komponenten Ihrer Zielanwendung ab und stellen sicher, dass sie bei einer Abfolge von Benutzeraktionen auf dem Gerät die korrekte Ausgabe liefert.
Die gängigste Methode zum Durchführen von UI-Tests auf einem Gerät ist Android Anzeigen / Instrumente. Dies hat jedoch Leistungsprobleme. Eines der besten Tools zum Durchführen von UI-Tests Android is Robotium.
⚠️ Versionshinweis: JUnit 3 Klassen wie InstrumentationTestCase wurden mit API 24 als veraltet markiert; aktuelle Projekte verwenden AndroidX-Test, Espresso und UI Automator. Robotium ist seit 2016 nicht mehr erschienen.
Integrationstests
In IntegrationstestsAlle getesteten Module werden kombiniert und verifiziert. Android Dies bedeutet häufig die Überprüfung der Integration mit Komponenten wie Service-, Aktivitäts- und Inhaltsanbietertests.
Viele Testframeworks werden verwendet, um Integrationstests durchzuführen für Androidwie zum Beispiel Troyd, Robolectric und Robotium.
Operafunktionale Tests
OperaKonstruktive Tests, auch Funktionstests oder Akzeptanztests genannt, sind Tests auf höherer Ebene, die die Vollständigkeit und Korrektheit der Anwendung überprüfen.
In Android, Fitnesse ist ein Open-Source-Framework, das die Durchführung von operationellen Tests gegen die Zielanwendung vereinfacht.
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 Tracbegutachten um Leistungstests durchzuführen AndroidDieses Tool kann Ihnen beim Debuggen Ihrer Anwendung und beim Erstellen von Leistungsprofilen helfen. Traceview ist veraltet und wird durch the ersetzt. CPU-Profiler.
Automated Android Tests
As Android ist fragmentiert, Tests auf vielen Geräten sind notwendig, und das kostet Geld. Automatisiert Android Durch Tests lassen sich diese Kosten reduzieren.
Vorteile der Automatisierung Android testing
- 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 Anwendungen ist die Android Testframework. Es ist gut integriert mit dem Android Das SDK-Tools und seine Architektur bestehen aus drei Teilen.
- Das Anwendungspaket ist Ihre Zielanwendung, die getestet werden muss.
- InstrumentationTestRunner ist der Testfall Ein Test-Runner führt Testfälle für die Zielanwendung aus. Er umfasst:
- Testwerkzeuge: SDK-Tools zum Erstellen von Tests. Sie sind in die IDE integriert oder werden über die Befehlszeile ausgeführt.
- MonkeyRunner: Ein Tool, das APIs zum Schreiben von Programmen bereitstellt, die ein System steuern Android Gerät oder Emulator außerhalb Android Code.
- Das Testpaket ist in Testprojekte unterteilt und folgt einer Namenskonvention. Hat die zu testende Anwendung beispielsweise den Paketnamen „com.mydomain.myapp“, so sollte das Testpaket „com.mydomain.myapp.test“ heißen. Das Testpaket enthält zwei Objekte:
- Testfallklassen: Testmethoden einbeziehen, die auf der Zielanwendung ausgeführt werden sollen.
- Mock-Objekte: Fügen Sie Beispieldaten hinzu, die als Eingabebeispiele für Testfälle verwendet werden.
Android Testfallklassen
- Testfall beinhaltet JUnit auszuführende Methoden JUnit Test
- TestSuite wird verwendet, um eine Reihe von Testfällen auszuführen.
- InstrumentationTestSuite ist eine TestSuite, die Instrumentation in InstrumentationTestCase einfügt, bevor diese ausgeführt werden.
- InstrumentationTestRunner führt Testfälle auf der Zielanwendung aus.
- AndroidTestCase erweitert JUnit Testfall mit Methoden zum Zugriff auf Ressourcen wie den Aktivitätskontext.
- ApplicationTestCase überprüft die Anwendungsklassen in einer kontrollierten Umgebung.
- InstrumentationTestCase überprüft ein bestimmtes Feature oder Verhalten, beispielsweise die UI-Ausgabe der Anwendung.
- ActivityTestCase ist eine Basisklasse, die das Testen der Anwendungsaktivitäten unterstützt.
- ProviderTestCase ist eine Klasse zum Testen eines einzelnen ContentProviders.
- ServiceTestCase testet Serviceklassen in einer Testumgebung und unterstützt den Servicelebenszyklus.
- Der SingleLaunchActivityTestCase dient dazu, eine einzelne Activity mit einem InstrumentationTestCase zu testen.
- ActivityUnitTestCase wird verwendet, um eine einzelne isolierte Aktivität zu testen.
- ActivityInstrumentationTestCase2 erweitert die JUnit Die TestCase-Klasse stellt eine Verbindung zur Zielanwendung mit Instrumentierung her, sodass Sie auf GUI-Komponenten zugreifen und UI-Ereignisse wie Tastatureingaben oder Berührungen senden können.
Nachfolgend finden Sie ein Beispiel für einen ActivityInstrumentationTestCase. Er überprüft die Funktionsweise der Benutzeroberfläche einer Taschenrechner-Anwendung und die Korrektheit der UI-Ausgaben.
Roboelektrisches Test-Framework
Testen mit dem Android Das Testen von Frameworks mit einem Gerät oder Emulator ist schwierig. Das Erstellen und Ausführen von Tests ist langsam und erfordert einen hohen Entwicklungsaufwand. Um dieses Problem zu lösen, gibt es eine Alternative: das Robolectric-Testframework.
Robolectric ermöglicht es Ihnen, … Android Tests werden direkt auf der JVM durchgeführt, ohne dass ein Gerät oder ein Emulator benötigt wird.
Robolectric-Testfallklassen
Robolectric kann folgende Aktionen ausführen:
- Registrieren Sie sich und erstellen Sie eine Shadow-Klasse
- Fangen Sie das Laden von ab Android Klasse
- Verwendung Javassist, um die Methodenrümpfe von zu überschreiben Android Klasse
- Binden Sie das Shadow-Objekt an Android Klasse
Dies ermöglicht es dem zu testenden Code, ohne einen Fehler ausgeführt zu werden. Android Umwelt.
Andere Testframeworks
Neben den oben genannten Testframeworks gibt es noch viele weitere, wie zum Beispiel:
- Android Junit-Bericht, ein benutzerdefinierter Instrumentierungstestläufer für Android das XML-Berichte für die Integration mit anderen Tools generiert.
- Espresso
- Appium
Mythen von Android Tests
Viele Unternehmen entwickeln Android Tests 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 Die Geräte sind identisch, daher reicht es aus, auf Emulatoren zu testen.
Eine Anwendung kann auf Emulatoren einwandfrei funktionieren, aber auf manchen realen Geräten während der Ausführung abstürzen.
Emulatoren reichen für Ihre mobilen Tests nicht aus. Sie müssen Ihre App auf echten Geräten testen.
Mythos Nr. 2: Tests auf einigen gängigen Geräten reichen aus
Ihre Anwendung sieht auf verschiedenen Geräten unterschiedlich aus, da Hardware, Bildschirmgrößen und Speicher variieren. Testen Sie Ihre Anwendung daher auf verschiedenen Geräten, Betriebssystemversionen, Mobilfunknetzen und an unterschiedlichen Standorten.
Mythos Nr. 3: Exploratives Testen kurz vor dem Start reicht aus
- Bei den meisten Tests entwerfen wir Testfälle und führen sie anschließend aus; beim explorativen Testen erfolgen Entwurf und Ausführung gleichzeitig.
- Es gibt weder Plan noch Vorbereitung, daher führt der Tester beliebige Tests durch. Manche Funktionen werden wiederholt getestet, andere hingegen nie.
Mythos Nr. 4: Wenn es einige Fehler in der Anwendung gibt, werden die Benutzer das verstehen.
- Wenn die Anwendung nicht funktioniert und Fehler aufweist, deinstallieren die Nutzer Ihre App.
- Qualitätsprobleme sind der Hauptgrund für schlechte Bewertungen in Google Spielen Sie so, schädigen Sie Ihren Ruf und verlieren Sie das Vertrauen Ihrer Kunden.
Daher ist es unerlässlich, über ein ordnungsgemäßes Android Teststrategie vorhanden.
Best Practices in Android Tests
- Anwendungsentwickler sollten die Testfälle gleichzeitig mit dem Schreiben des Codes erstellen
- Alle Testfälle sollten zusammen mit dem Quellcode in der Versionskontrolle gespeichert werden.
- Nutzen Sie kontinuierliche Integration und führen Sie jedes Mal Tests durch, wenn sich der Code ändert
- Verlassen Sie sich nicht ausschließlich auf Emulatoren und gerootete Geräte; überprüfen Sie die Ergebnisse auf realer Hardware mit einem Inspektionsprogramm wie z. B. uiautomatorviewer





