Android Tutoriel sur les tests d'applications avec un framework d'automatisation
⚡ Résumé intelligent
Android Les tests d'applications vérifient une version sur un paysage d'appareils fragmenté, en combinant des contrôles unitaires, d'intégration, opérationnels et système avec des frameworks d'automatisation qui s'exécutent soit sur un appareil, soit directement sur la JVM.
Pourquoi Android Essai?
Android est le plus grand système d'exploitation au monde. En même temps, Android est fragmenté : il existe des tonnes d'appareils et Android versions avec lesquelles votre application doit être compatible.
Peu importe le temps que vous investissez dans la conception et la mise en œuvre, les erreurs sont inévitables et des bugs apparaîtront.
Android Stratégie de test
Un correct Android La stratégie de test devrait inclure les éléments suivants
- Test unitaire
- Test d'intégration
- OperaTest national
- test du système
Tests unitaires
Les tests unitaires sont des ensembles de programmes conçus pour vérifier une unité atomique de code source, telle qu'une méthode ou une classe.
Le Android La plateforme est pré-intégrée avec JUnit Framework 3.0. Il s'agit d'un framework open source pour l'automatisation. Tests unitaireset il permet aux développeurs d'écrire des programmes de tests unitaires efficaces.
Les tests d'interface utilisateur (UI) complètent les tests unitaires. Ils couvrent les composants d'interface utilisateur de votre application cible et vérifient qu'elle renvoie le résultat attendu pour une séquence d'actions utilisateur sur l'appareil.
La méthode courante pour effectuer des tests d'interface utilisateur sur un appareil est Android Fournisseurs d'instruments. Mais cela pose des problèmes de performances. L'un des meilleurs outils pour effectuer des tests d'interface utilisateur sur Android is Robotium.
⚠️ Note de version : JUnit 3 classes telles que InstrumentationTestCase ont été dépréciées à partir de l'API 24 ; les projets actuels utilisent AndroidTest X, Espresso et UI Automator. Robotium Aucune nouvelle sortie n'a eu lieu depuis 2016.
Tests d'intégration
In Test d'intégration, tous les modules testés unitairement sont combinés et vérifiés. Android Cela implique souvent de vérifier l'intégration avec des composants tels que les tests de service, d'activité et de fournisseur de contenu.
De nombreux frameworks de test sont utilisés pour réaliser des tests d'intégration pour Android, tels que Troyd, Robolectric et Robotium.
Operatests nationaux
OperaLes tests fonctionnels, également appelés tests d'acceptation, sont des tests de haut niveau qui vérifient l'exhaustivité et l'exactitude de l'application.
In Android, FitNesse est un framework open-source qui facilite l'exécution de tests opérationnels sur l'application cible.
Essais système
In Test du système le système est testé dans son ensemble et l'interaction entre les composants, les logiciels et le matériel est vérifiée.
In Android, Les tests système comprennent normalement
- Tests d'interface graphique
- Tests d'utilisabilité
- Des tests de performance
- Tests de résistance
Dans la liste ci-dessus, Test de performance est davantage concentré. Vous pouvez utiliser des outils comme Tracvoir pour effectuer des tests de performance sur AndroidCet outil peut vous aider à déboguer votre application et à analyser ses performances. Traceview est désormais obsolète et remplacé par Profileur de CPU.
Chaînes de vente Android Tests
As Android Le marché étant fragmenté, il est nécessaire de réaliser des tests sur de nombreux appareils, ce qui engendre des coûts. Automatisation Android Les tests permettent de réduire ces coûts.
Avantages de l'automatisation Android vers les tests
- Réduisez le temps d’exécution des cas de test
- Augmentez la productivité de votre processus de développement
- Détection précoce des bogues, économisez sur les coûts de maintenance des logiciels
- Rapidement trouvé et corrigé les bugs lors de la mise en œuvre
- Assurer la qualité des logiciels
Nous étudierons les 2 frameworks suivants
- Android Cadre de test
- Cadre de tests robotiques
Android cadre de test
L'un des cadres de test standard pour Android les applications sont Android framework de test. Il est bien intégré au Android Les outils SDK et leur architecture comportent trois parties.
- Le package d'application est votre application cible qui doit être testée.
- InstrumentationTestRunner est le Cas de test Un exécuteur de tests qui teste l'application cible. Il comprend :
- Outils d'essai : Outils SDK pour la création de tests. Ils sont intégrés à l'IDE ou exécutés en ligne de commande.
- SingeRunner : Un outil qui fournit des API pour écrire des programmes qui contrôlent un Android périphérique ou émulateur en dehors de Android code.
- Le package de test est organisé en projets de test et suit une convention d'appellation. Si l'application testée a pour nom de package « com.mydomain.myapp », le package de test doit s'appeler « com.mydomain.myapp.test ». Le package de test comprend deux objets :
- Classes de cas de test : Inclure les méthodes de test à exécuter sur l'application cible.
- Objets factices : Inclure des données fictives qui serviront d'exemples d'entrée pour les cas de test.
Android Classes de cas de test
- TestCase comprend JUnit méthodes pour exécuter JUnit tester
- TestSuite est utilisé pour exécuter un ensemble de cas de test
- InstrumentationTestSuite est une suite de tests qui injecte l'instrumentation dans InstrumentationTestCase avant de les exécuter.
- InstrumentationTestRunner exécute des cas de test sur l'application cible.
- AndroidTestCase étend JUnit Cas de test avec des méthodes d'accès aux ressources telles que le contexte d'activité.
- ApplicationTestCase vérifie les classes de l'application dans un environnement contrôlé.
- InstrumentationTestCase vérifie une fonctionnalité ou un comportement particulier, par exemple l'affichage de l'interface utilisateur de l'application.
- ActivityTestCase est une classe de base qui permet de tester les activités de l'application.
- ProviderTestCase est une classe permettant de tester un seul ContentProvider.
- ServiceTestCase teste les classes de service dans un environnement de test et prend en charge le cycle de vie des services.
- SingleLaunchActivityTestCase est utilisé pour tester une seule activité avec un InstrumentationTestCase.
- Cas de test unitaire d'activité est utilisé pour tester une activité isolée.
- Instrumentation de l'activité - Cas test 2 étend le JUnit La classe TestCase vous connecte à l'application cible grâce à l'instrumentation, vous permettant ainsi d'accéder aux composants de l'interface graphique et d'envoyer des événements d'interface utilisateur tels que des frappes au clavier ou des interactions tactiles.
Voici un exemple de cas de test d'instrumentation d'activité. Il vérifie le fonctionnement de l'interface utilisateur d'une application Calculatrice et contrôle l'exactitude des résultats affichés.
Cadre de tests robotiques
Tests utilisant le Android Tester un appareil ou un émulateur avec un framework de test s'avère complexe. La création et l'exécution des tests sont lentes et exigent un effort de développement considérable. Pour pallier ce problème, une alternative existe : le framework de test Robolectric.
Robolectric vous permet de gérer Android Effectue des tests directement sur la JVM sans avoir besoin d'un appareil ou d'un émulateur.
Classes de cas de test roboélectriques
Robolectric peut effectuer les actions suivantes :
- Inscrivez-vous et créez une classe Shadow
- Intercepter le chargement de Android classe
- Utilisations Javassist pour remplacer les corps de méthode de Android classe
- Lier l'objet Shadow à Android classe
Cela permet au code testé de s'exécuter sans Android sûr et sécurisé.
Autres cadres de test
Outre les frameworks de test mentionnés ci-dessus, il en existe beaucoup d'autres, tels que :
- Android Rapport Junit, un outil de test d'instrumentation personnalisé pour Android qui génère des rapports XML pour l'intégration avec d'autres outils.
- Espresso
- Appium
Mythes de Android Tests
De nombreuses entreprises se développent Android Tests des stratégies basées sur des idées fausses courantes. Cette section examine quelques mythes et réalités populaires de Android test.
Mythe n° 1 : Tous Android Les appareils étant identiques, les tests sur émulateurs suffisent.
Une application peut fonctionner parfaitement sur des émulateurs, mais planter lors de son exécution sur certains appareils réels.
Les émulateurs ne suffisent pas pour vos tests mobiles. Vous devez tester votre application sur de vrais appareils.
Mythe n° 2 : Tester sur quelques appareils courants suffit
Votre application s'affiche différemment selon les appareils en raison des variations de matériel, de taille d'écran et de mémoire. Testez-la sur divers appareils, systèmes d'exploitation, réseaux d'opérateurs et zones géographiques.
Mythe n° 3 : Les tests exploratoires juste avant le lancement suffisent
- Dans la plupart des tests, on conçoit des cas de test puis on les exécute ; dans les tests exploratoires, la conception et l’exécution se font simultanément.
- Il n'y a ni plan ni préparation, le testeur exécute donc les tests de son choix. Certaines fonctions sont testées à plusieurs reprises, tandis que d'autres ne le sont jamais.
Mythe n° 4 : Si l’application comporte des bugs, les utilisateurs comprendront.
- Si l'application ne fonctionne pas et comporte des bugs, les utilisateurs la désinstallent.
- Les problèmes de qualité sont la première raison des mauvaises critiques. Google Jouer, c'est nuire à sa réputation et perdre la confiance de ses clients.
Il est donc essentiel d'avoir un équipement approprié Android Stratégie de test en place.
Meilleures pratiques en Android Tests
- Les développeurs d'applications doivent créer les cas de test en même temps qu'ils écrivent le code.
- Tous les cas de test doivent être stockés dans un système de contrôle de version, avec le code source.
- Utilisez l'intégration continue et exécutez des tests à chaque fois que le code est modifié
- Évitez de vous fier uniquement aux émulateurs et aux appareils rootés ; confirmez les résultats sur du matériel réel avec un inspecteur tel que uiautomatorviewer





