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





