Die Revolution der Android-App-Tests mit Delm
Delm verbessert die Effizienz von App-Tests, indem es Deep Links für bessere Abdeckung und Zuverlässigkeit verwendet.
― 7 min Lesedauer
Inhaltsverzeichnis
Mobile-Apps sind überall. Sie helfen uns bei Aufgaben wie Chatten und Lesen. Aber sicherzustellen, dass diese Apps gut funktionieren, ist echt schwierig. Viele Entwickler nutzen Test-Tools, um Probleme in ihren Apps zu finden, aber diese Tools übersehen oft wichtige Teile der App wegen versteckter Features oder Schleifen im Programm. Das kann viel Zeit verschwenden, da Tester immer wieder die gleichen Seiten durchforsten.
Um dieses Problem zu beheben, stellen wir eine neue Methode vor, die Deep Links in Android-Apps nutzt. Deep Links sind spezielle Links, die Benutzer direkt zu spezifischen Seiten innerhalb einer App bringen können. Indem wir diese Deep Links im Testprozess verwenden, haben wir ein Tool namens Delm entwickelt, was für Deep Link-enhanced Monkey steht.
Das Problem mit aktuellen Test-Tools
Probleme in einer App zu finden, wird immer wichtiger. Apps werden schnell aktualisiert, und wenn sie nicht wie erwartet funktionieren, kann das die Benutzer frustrieren und dazu führen, dass sie die App verlassen. Android-Apps sind sehr komplex und haben viele Bildschirme, mit denen die Nutzer interagieren. Die Herausforderung für Entwickler ist es, sicherzustellen, dass jeder Teil der App getestet wird, bevor sie live geht.
Aktuelle GUI (Graphical User Interface) Test-Tools decken oft nicht alle Teile der App ab. Forschungen zeigen, dass bestehende Tools im Allgemeinen nur weniger als 20 % der Aktivitäten einer App abdecken. Die niedrige Codeabdeckung bedeutet, dass viele potenzielle Probleme unentdeckt bleiben, was das Benutzererlebnis schädigen kann.
Ein Grund, warum diese Tools Schwierigkeiten haben, ist, dass einige App-Features schwer zu finden sind. Zum Beispiel können Aktivitäten tief in der App vergraben sein, sodass Nutzer viele Seiten durchgehen müssen, um sie zu erreichen. Zudem sind einige Aktivitäten hinter verwirrenden Benutzeroberflächen versteckt, was es den Test-Tools schwer macht, sie auszulösen. Zuletzt stecken viele Tools oft in Schleifen fest und überprüfen die gleichen Seiten immer wieder, ohne voranzukommen.
Unsere Lösung: Delm
Delm zielt darauf ab, diese Herausforderungen zu bewältigen, indem es Deep Links in den Testprozess integriert. So funktioniert es:
Statische Analyse: Delm überprüft zuerst den Code der App, um Informationen über ihre Struktur und die verfügbaren Deep Links zu sammeln.
Dynamische Erkundung: Während des Tests, wenn Delm in einer Schleife feststeckt oder eine Aktivität verpasst, nutzt es Deep Links, um zu unerforschten Bereichen der App zu springen. Das hilft, Zeit bei wiederholten Tests zu sparen.
Aktivitätskontext-Mock-Up: Bevor eine Aktivität ausgelöst wird, bereitet Delm den erforderlichen Kontext vor. Das bedeutet, es überprüft, dass alle notwendigen Informationen bereit sind, um Fehler beim Starten einer Aktivität zu vermeiden.
Durch die Kombination dieser Strategien verbessert Delm die Abdeckung der Aktivitäten der App erheblich und hilft Entwicklern, mehr potenzielle Probleme zu finden.
Die Bedeutung des Kontexts in Android-Apps
Jede App hat verschiedene Kontexte, die ihre Aktivitäten verbinden. Diese Kontexte helfen, den Zustand der App zu erhalten und sicherzustellen, dass sie sich wie erwartet verhält. Einige wichtige Kontexte sind:
- ICC-Nachrichten: Das sind Nachrichten, die verschiedenen Komponenten innerhalb der App helfen, miteinander zu kommunizieren.
- Gerätekonfiguration: Dazu gehören Details wie Bildschirmgrösse und -format, die beeinflussen können, wie die App angezeigt wird.
- Aktivitätsstapel: Das ist die Reihenfolge, in der Aktivitäten gestartet werden. Den Stack zu verstehen, ist wichtig, um reibungslos zwischen Aktivitäten hin und her zu navigieren.
- Globale Daten: Das sind wichtige Informationen, die in der gesamten App geteilt werden, wie Benutzereinstellungen.
Damit Delm neue Aktivitäten erfolgreich starten kann, muss es all diese Kontexte berücksichtigen. Das ist entscheidend, um Fehler und falsche Positivmeldungen während des Tests zu vermeiden.
Wie Deep Links die GUI-Tests verbessern
Deep Links ermöglichen es Delm, die üblichen Pfade, die Benutzer durch die App nehmen würden, zu umgehen. Anstatt durch viele Aktivitäten zu navigieren, kann Delm eine Aktivität direkt über ihren Deep Link auslösen. Das ist besonders nützlich für diese schwer erreichbaren Seiten, die oft in traditionellen Tests vernachlässigt werden.
Deep Link Extraktion und Bindung
Delm kann die Deep Links finden, die bereits im Code der App definiert sind, und sie mit den Aktivitäten verbinden. Wenn einige Aktivitäten keine Deep Links haben, kann Delm diese Links hinzufügen, sodass sie in Zukunft leichter zugänglich sind, ohne grossen Aufwand.
Geführte Erkundung
Wenn Delm merkt, dass das Test-Tool feststeckt oder zu lange auf einer Seite verbringt, kann es automatisch zu einer anderen Aktivität springen. Diese Methode hält den Testprozess flüssig und effizient. Das Tool konzentriert sich nicht nur darauf, Bugs zu finden, sondern sorgt auch dafür, dass der Test kontinuierlich ohne unnötige Verzögerungen voranschreitet.
Effektivität bei Real-World-Tests
Um zu bewerten, wie gut Delm funktioniert, haben wir es mit industriellen Apps getestet. Hier sind einige wichtige Ergebnisse:
Abdeckung: Delm erreichte eine signifikante Abdeckung von Aktivitäten und Methoden und übertraf traditionelle Tools. Zum Beispiel deckte es 27,2 % der Aktivitäten in Closed-Source-Apps ab, was deutlich höher ist als bei anderen Basis-Tools.
Crash-Erkennung: Delm zeigte auch bessere Fähigkeiten zur Crash-Erkennung. Es identifizierte mehr Abstürze, ohne falsche Positivmeldungen zu erzeugen, was bedeutet, dass es echte Probleme genau markierte, ohne gesunde Aktivitäten fälschlicherweise als problematisch zu kennzeichnen.
Vorteile für Entwickler
Für App-Entwickler ist der Hauptvorteil von Delm die Zuverlässigkeit. Mit höherer Abdeckung und genauer Crash-Erkennung können Entwickler ihre Apps mit Vertrauen veröffentlichen, da sie gründlich getestet wurden.
Zusätzlich spart Delm Zeit. Durch das effiziente Navigieren in versteckten Bereichen der App und das Vermeiden von Schleifen können sich Entwickler auf die Behebung echter Probleme konzentrieren, anstatt Stunden mit wiederholten Tests zu verbringen.
Herausforderungen, die angegangen werden müssen
Trotz seiner Vorteile hat Delm auch seine Herausforderungen. Ein grosses Hindernis ist die Abhängigkeit von Metadaten der GUI der App. Wenn eine App komplexe Schnittstellen verwendet oder mit speziellen Frameworks wie WebView gebaut wurde, könnte Delm Schwierigkeiten haben, die notwendigen Informationen zuzugreifen.
Darüber hinaus können die Sicherheitsmassnahmen einiger Apps die Modifizierung ihres Codes verhindern, was Delms Fähigkeit einschränkt, neue Deep Links zu binden oder die App korrekt zu analysieren.
Zukünftige Richtungen
Es gibt mehrere Wege, wie Delm in Zukunft verbessert werden kann. Ein potenzieller Bereich, auf den man sich konzentrieren könnte, ist die Verbesserung der Handhabung von Deep Links, um dynamischere Testszenarien zu ermöglichen. Zudem könnte der Einsatz von Computer Vision-Techniken zur Analyse der GUI die Abhängigkeit von statischen Metadaten weiter reduzieren und bessere Tests komplexer Apps ermöglichen.
Darüber hinaus wird es entscheidend sein, einen Weg zu finden, wie Delm die App erkunden kann, ohne sie modifizieren zu müssen. Das könnte die Entwicklung von Methoden umfassen, die es Delm ermöglichen, innerhalb der bestehenden Struktur der App zu funktionieren und nahtlose Testlösungen bereitzustellen.
Fazit
Delm stellt einen bedeutenden Fortschritt beim Testen von Android-Anwendungen dar. Durch die effektive Nutzung von Deep Links und Kontextanalysen verbessert es die Abdeckung, reduziert die Zeit, die in Schleifen verschwendet wird, und verbessert die Crash-Erkennung. Während mobile Anwendungen weiterhin komplexer werden, werden Tools wie Delm entscheidend sein, um sicherzustellen, dass diese Apps zuverlässig funktionieren und die Erwartungen der Nutzer erfüllen. Mit fortlaufenden Verbesserungen und Anpassungen hat Delm das Potenzial, die Standards für das Testen von Android-Apps neu zu definieren.
Titel: Enhancing GUI Exploration Coverage of Android Apps with Deep Link-Integrated Monkey
Zusammenfassung: Mobile apps are ubiquitous in our daily lives for supporting different tasks such as reading and chatting. Despite the availability of many GUI testing tools, app testers still struggle with low testing code coverage due to tools frequently getting stuck in loops or overlooking activities with concealed entries. This results in a significant amount of testing time being spent on redundant and repetitive exploration of a few GUI pages. To address this, we utilize Android's deep links, which assist in triggering Android intents to lead users to specific pages and introduce a deep link-enhanced exploration method. This approach, integrated into the testing tool Monkey, gives rise to Delm (Deep Link-enhanced Monkey). Delm oversees the dynamic exploration process, guiding the tool out of meaningless testing loops to unexplored GUI pages. We provide a rigorous activity context mock-up approach for triggering existing Android intents to discover more activities with hidden entrances. We conduct experiments to evaluate Delm's effectiveness on activity context mock-up, activity coverage, method coverage, and crash detection. The findings reveal that Delm can mock up more complex activity contexts and significantly outperform state-of-the-art baselines with 27.2\% activity coverage, 21.13\% method coverage, and 23.81\% crash detection.
Autoren: Han Hu, Han Wang, Ruiqi Dong, Xiao Chen, Chunyang Chen
Letzte Aktualisierung: 2024-04-30 00:00:00
Sprache: English
Quell-URL: https://arxiv.org/abs/2404.19307
Quell-PDF: https://arxiv.org/pdf/2404.19307
Lizenz: https://creativecommons.org/licenses/by/4.0/
Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.
Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.