Tutoriel de test d'application Android avec Automation Framework

Table des matières:

Anonim

Pourquoi tester Android?

Android est le plus grand système d'exploitation au monde. Dans le même temps, Android est fragmenté. votre application doit être compatible avec des tonnes d'appareils et de versions d'Android.

Peu importe le temps que vous investissez dans la conception et la mise en œuvre, les erreurs sont inévitables et des bogues apparaissent.

Dans ce didacticiel, vous apprendrez-

  • Pourquoi tester Android?
  • Stratégie de test Android
    • Tests unitaires
    • Tests d'intégration
    • Tests opérationnels
    • Tests système
  • TESTS AUTOMATISÉS ANDROID
    • Cadre de test Android
    • Cadre de test Robolectric
  • Mythes des tests Android
  • Bonnes pratiques en matière de tests Android

Stratégie de test Android

Une stratégie de test Android correcte doit inclure les éléments suivants

  1. Test de l'unité
  2. Test d'intégration
  3. Test opérationnel
  4. Test du système

Tests unitaires

Les tests unitaires comprennent des ensembles d'un ou plusieurs programmes conçus pour vérifier une unité atomique de code source, telle qu'une méthode ou une classe.

La plate-forme Android est livrée avec un cadre Junit 3.0 pré-intégré. C'est un framework open source pour automatiser les tests unitaires. Android Testing Framework est un outil puissant permettant aux développeurs d'écrire le programme de test unitaire efficace.

L'intégration d'Android et du framework JUnit

Les tests d'interface utilisateur (UI) sont un ajout aux tests unitaires. Ces tests concernent les composants d'interface utilisateur de votre application cible. Les tests d'interface utilisateur garantissent que votre application renvoie la sortie d'interface utilisateur correcte en réponse à la séquence d'actions utilisateur sur l'appareil.

Actions courantes de l'interface utilisateur sur l'application

Le moyen le plus courant de tester les performances de l'interface utilisateur sur l'appareil est Android Instrumentation. Mais cela a des problèmes de performances. L'un des meilleurs outils pour effectuer des tests d'interface utilisateur sur Android est Robotium.

Tests d'intégration

Dans les tests d'intégration, tous les modules testés par unité sont combinés et vérifiés. Dans Android, les tests d'intégration impliquent souvent de vérifier l'intégration avec des composants Android tels que les tests de service, les tests d'activité, les tests de fournisseur de contenu, etc.

Types de test d'intégration sur Android

Il existe de nombreux cadres de test utilisés pour effectuer des tests d'intégration pour Android tels que Troyd, Robolectric, Robotium.

Tests opérationnels

  • Les tests opérationnels sont également appelés tests fonctionnels ou tests d'acceptation. Ce sont des tests de haut niveau conçus pour vérifier l'exhaustivité et l'exactitude de l'application.
  • Sous Android, FitNesse est un framework open-source qui facilite la réalisation de tests opérationnels pour l'application cible.

Tests système

Dans le test du système, le système est testé dans son ensemble et l'interaction entre les composants, le logiciel et le matériel est vérifiée.

Sous Android, les tests système incluent normalement

  • Tests d'interface graphique
  • Tests d'utilisabilité
  • Des tests de performance
  • Tests de résistance

Dans la liste ci-dessus, les tests de performance sont plus ciblés. Vous pouvez utiliser des outils comme Traceview pour effectuer des tests de performances sur Android. Cet outil peut vous aider à déboguer votre application et à profiler ses performances.

TESTS AUTOMATISÉS ANDROID

Comme Android est fragmenté, des tests sur une multitude d'appareils sont nécessaires. Mais cela vous coûtera également de l'argent. Les tests Android automatisés peuvent aider à réduire les coûts

Avantages des tests Android automatisés

  • 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, réduction des coûts de maintenance logicielle
  • Trouver et corriger rapidement les bogues lors de la mise en œuvre
  • Assurer la qualité des logiciels

Nous étudierons les 2 frameworks suivants

  • Cadre de test Android
  • Cadre de test Robolectric

Cadre de test Android

L'un des cadres de test standard pour les applications Android est le cadre de test Android . Il s'agit d'un cadre de test puissant et facile à utiliser qui est bien intégré aux outils du SDK Android.

Architecture du cadre de test Android

  1. Le package d'application est votre application cible qui doit être testée
  2. InstrumentationTestRunner est le lanceur de scénario de test qui exécute le scénario de test sur l'application cible. Il comprend:

2a) Outils de test: Un outil SDK pour le test de construction. Ils sont intégrés dans Eclipse IDE ou exécutés en ligne de commande.

2b) MonkeyRunner: Un outil qui fournit des API pour écrire un programme qui contrôle un appareil Android ou un émulateur en dehors du code Android.

  1. Les packages de test sont organisés en projets de test. Ce package suit la convention de dénomination. Si l'application testée a un nom de package "com.mydomain.myapp", le package de test doit être "com.mydomain.myapp.test". Le package de test comprend 2 objets comme ci-dessous:

3a) Classes de cas de test: comprennent les méthodes de test à exécuter sur l'application cible.

3b) Objets simulés: comprend des données factices qui seront utilisées comme exemple d'entrée pour les cas de test.

Classes de cas de test Android

Diagramme de classes AndroidTestCase

  1. TestCase inclut des méthodes JUnit pour exécuter le test JUnit
  2. TestSuite est utilisé pour exécuter un ensemble de cas de test
  3. InstrumentationTestSuite est une TestSuite qui injecte l'instrumentation dans InstrumentationTestCase avant de les exécuter.
  4. InstrumentationTestRunner est le lanceur de cas de test qui exécute le cas de test sur l'application cible.
  5. AndroidTestCase étend JUnit TestCase. Il contient des méthodes pour accéder aux ressources telles que le contexte d'activité.
  6. ApplicationTestCase vérifie les classes Application dans un environnement contrôlé.
  7. InstrumentationTestCase vérifie une fonctionnalité ou un comportement particulier de l'application cible, par exemple, vérifier la sortie de l'interface utilisateur de l'application.
  8. ActivityTestCase est la classe de base qui prend en charge le test des activités d'application.
  9. ProviderTestCase est une classe pour tester un ContentProvider unique.
  10. ServiceTestCase est utilisé pour tester les classes de service dans un environnement de test. Il prend également en charge le cycle de vie du service.
  11. SingeLauchActivityTestCase est utilisé pour tester une seule activité avec un InstrumentationTestCase.
  12. ActivityUnitTestCase est utilisé pour tester une seule activité isolée.
  13. ActivityInstrumentationTestCase2 étend la classe JUnit TestCase. Il vous connecte à l'application cible avec l'instrumentation. Avec cette classe, vous pouvez accéder au composant GUI de l'application et envoyer un événement d'interface utilisateur (frappe ou événement tactile) à l'interface utilisateur.

Voici un exemple d'ActivityInstrumentationTestCase. Il vérifie le fonctionnement de l'interface utilisateur de l'application Calculatrice, vérifie l'exactitude des sorties de l'interface utilisateur.

Exemple de test ActivityInstrumentationTestCase2

Cadre de test Robolectric

Tester à l'aide du framework de test Android avec un appareil ou un émulateur est difficile. La création et l'exécution des tests sont lentes et nécessitent beaucoup d'efforts de développement. Pour résoudre ce problème, il existe un autre choix: le cadre de test Robolectric .

Le framework Robolectric vous permet d'exécuter des tests Android directement sur JVM sans avoir besoin d'un appareil ou d'un émulateur.

Fonctionnalités avancées de Robolectric

Classes de cas de test Robolectric

Fonctionnement de Robolectric

  • Comme indiqué ci-dessus, Robolectric peut effectuer les actions suivantes:
  • Inscrivez-vous et créez une classe Shadow
  • Intercepter le chargement de la classe Android
  • Utilise javaassist pour remplacer les corps de méthode de la classe Android
  • Lier l'objet Shadow à la classe Android
  • Cela permet au code testé de s'exécuter sans environnement Android.

D'autres cadre de test

Outre les frameworks de test mentionnés ci-dessus, il existe de nombreux autres frameworks de test tels que:

  • Android Junit Report, un testeur d'instrumentation personnalisé pour Android qui génère des rapports XML pour l'intégration avec d'autres outils.
  • Expresso
  • Appium

Mythes des tests Android

De nombreuses entreprises développent des stratégies de test Android basées sur des idées fausses courantes. Cette section examine quelques mythes et réalités populaires des tests Android.

Mythe n ° 1: tous les appareils Android sont les mêmes… un test sur des émulateurs suffit

Commençons par un exemple simple. Une application fonctionne parfaitement sur les émulateurs mais sur certains appareils réels, elle plante pendant l'exécution

L'application se bloque pendant l'exécution sur un appareil réel

Les émulateurs ne sont pas suffisants pour vos tests mobiles. Vous devez tester votre application sur de vrais appareils.

Mythe n ° 2: tester sur certains appareils courants suffit

  • Sur différents appareils, votre application est différente car différents appareils ont un matériel, des tailles d'écran, une mémoire, etc.

Mythe n ° 3: des tests exploratoires juste avant le lancement suffisent

  • Généralement, dans tous les tests, nous concevons les cas de test puis les exécutons. Mais dans les tests exploratoires, la conception et l'exécution des tests, tout se fera ensemble.
  • Dans les tests exploratoires, il n'y a pas de plan ni de préparation, puis le testeur ferait les tests qu'il souhaite faire. Certaines fonctions seront testées à plusieurs reprises, tandis que certaines fonctions ne seront pas testées complètement.

Mythe n ° 4: S'il y a des bogues dans l'application, les utilisateurs comprendront

  • Si l'application ne fonctionne pas et présente des bogues, les utilisateurs désinstallent votre application
  • Les problèmes de qualité sont la première raison d'un mauvais avis dans Google Play. Cela affecte votre réputation et vous perdez la confiance du client.

Par conséquent, il est essentiel d'avoir une stratégie de test Android appropriée en place

Bonnes pratiques en matière de tests Android

  • 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 le 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 d'utiliser des émulateurs et des appareils enracinés