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 :

  • 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.

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 :