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.

  • (I.e. Pourquoi c'est important: Android Il fonctionne sur d'innombrables combinaisons d'appareils et de versions, les problèmes de compatibilité sont donc quasi certains.
  • ☑️ Quatre niveaux de test : Les tests unitaires, d'intégration, opérationnels et système permettent chacun de détecter une classe de défauts différente.
  • ✅ Cadre embarqué : Le Android Le cadre de test s'appuie sur JUnit et l'instrumentation.
  • 🧪 Alternative à la JVM : ombres Robolectric Android classes permettant aux suites de s'exécuter sur la JVM sans périphérique ni émulateur.
  • ️ Ensemble d'outils plus large : Espresso, UI Automator et Appium étendre la couverture au-delà des classes intégrées.
  • (I.e. Mythes à éviter : L'utilisation d'émulateurs seuls, de quelques combinés ou de tests exploratoires de dernière minute peut entraîner des défauts en production.

Android Tutoriel sur les tests d'applications : niveaux de test, frameworks d'automatisation et couverture des appareils

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

  1. Test unitaire
  2. Test d'intégration
  3. OperaTest national
  4. 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.

Actions courantes de l'interface utilisateur sur un Android application telles que toucher, taper et glisser

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.

Types de tests d'intégration sur Android tests couvrant les services, les activités et les fournisseurs 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.

  1. Le package d'application est votre application cible qui doit être testée.
  2. 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.
  3. 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

AndroidDiagramme de classe TestCase montrant le JUnit et hiérarchie des cas de test d'instrumentation

  1. TestCase comprend JUnit méthodes pour exécuter JUnit tester
  2. TestSuite est utilisé pour exécuter un ensemble de cas de test
  3. InstrumentationTestSuite est une suite de tests qui injecte l'instrumentation dans InstrumentationTestCase avant de les exécuter.
  4. InstrumentationTestRunner exécute des cas de test sur l'application cible.
  5. AndroidTestCase étend JUnit Cas de test avec des méthodes d'accès aux ressources telles que le contexte d'activité.
  6. ApplicationTestCase vérifie les classes de l'application dans un environnement contrôlé.
  7. InstrumentationTestCase vérifie une fonctionnalité ou un comportement particulier, par exemple l'affichage de l'interface utilisateur de l'application.
  8. ActivityTestCase est une classe de base qui permet de tester les activités de l'application.
  9. ProviderTestCase est une classe permettant de tester un seul ContentProvider.
  10. ServiceTestCase teste les classes de service dans un environnement de test et prend en charge le cycle de vie des services.
  11. SingleLaunchActivityTestCase est utilisé pour tester une seule activité avec un InstrumentationTestCase.
  12. Cas de test unitaire d'activité est utilisé pour tester une activité isolée.
  13. 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.

Exemple ActivityInstrumentationTestCase2 vérifiant la sortie de l'interface utilisateur de la calculatrice sur Android

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 :

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.

Android Boîte de dialogue de plantage de l'application affichée lors de l'exécution sur un appareil réel

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

FAQ

Non. Les projets modernes utilisent AndroidTest X avec JUnit 4 et AndroidJUnitCoureur. Le JUnit Les 3 classes de cas de test décrites ici ont été dépréciées à partir de l'API 24 et ne restent que pour les suites héritées.

L'apprentissage automatique répare les localisateurs après une modification de la mise en page, regroupe les rapports de plantage et d'ANR en double et prédit quels tests une modification va casser afin qu'une suite plus courte s'exécute par commit.

Copilot génère les modèles onView et check communs à partir d'un scénario décrit. Il ne peut pas connaître vos identifiants de vue ni le timing ; exécutez donc chaque suggestion une seule fois et ajustez d'abord les correspondances.

Espresso Testé au sein de votre propre application, UI Automator est rapide et stable. Compatible avec les applications, il convient aux notifications, aux paramètres et aux boîtes de dialogue système. De nombreuses suites utilisent les deux.

L'API ActivityScenario dans AndroidLe test X, généralement associé à une règle de scénario d'activité, permet de faire passer une activité par des états de cycle de vie définis sans étendre une classe de cas de test obsolète.

Commencez par un modèle d'entrée de gamme, un de milieu de gamme et un modèle phare récent, couvrant une plage de deux ou trois ans. Android versions, plus une tablette. Ajoutez des tests cloud sur l'appareil avant la sortie au lieu d'acheter du matériel supplémentaire.

Elles s'exécutent sur la JVM de la machine de compilation avec des classes fantômes au lieu d'un appareil physique ; il n'y a donc ni packaging, ni installation, ni démarrage via émulateur. Cela les rend utilisables à chaque commit.

GoogleEnsemble de bibliothèques de test actuel de . Il comprend JUnit et extensions de vérité, scénario d'activité, Espresso et UI Automator derrière un groupe de dépendances qui fonctionne sur les appareils, les émulateurs et Robolectric.

Résumez cet article avec :