Webinaire ouvert "Introduction à l'automatisation des tests d'applications mobiles sur Sélénium et Appium"



Bonjour à tous! A la veille du lancement du cours Mobile QA Engineer, nous avons eu une leçon traditionnelle ouverte. Il y avait tellement d'informations que le webinaire a duré deux jours ( Jour 1 , Jour 2 ). En fait, il s'agissait d'un véritable Mobile QA intensif de deux jours , qui sera utile à tous ceux qui ont l'intention de devenir un professionnel dans le sens de tests automatisés d'applications mobiles sur Android et iOS.



Conférencier - Dmitry Yarygin, ingénieur de test QA avec 8 ans d'expérience, dont 5 sur un contrat avec Google .

Lors du webinaire, nous avons examiné:

  • ce qui est testé en général et pourquoi l'automatisation est nécessaire;
  • bases Java minimales pour l'automatisation (variables, objets, classes, POO);
  • Qu'est-ce que Webdriver et Appium;
  • Comment trouver des objets dans une application Web à l'aide de divers localisateurs;
  • Automatisation d'une application Web (connexion sur Facebook) à l'aide d'Appium et d'un émulateur Android, et bien plus encore.

Soit dit en passant, si vous souhaitez tirer le meilleur parti de ces webinaires, installez les applications suivantes avant de commencer à regarder:

  1. Android Studio
  2. Appium Desktop .

Historique et caractéristiques des tests mobiles


Les tests mobiles en tant que classe sont apparus vers 2007 - c'est à cette époque que le premier iPhone a été annoncé, ce qui a complètement changé toute l'industrie. Oui, les tests mobiles existaient jusqu'en 2007, mais les applications de l'époque étaient assez simples et primitives. Après 2007, le développement sur iOS et Android est devenu particulièrement actif, ce qui, à son tour, ne pouvait qu'affecter les tests.

Bien sûr, les tests mobiles ont leurs propres spécificités et diffèrent du bureau:



Malgré l'apparente simplicité et la petite taille des gadgets utilisés, dans Mobile QA, vous devez couvrir beaucoup de choses avec des tests (parfois il y en a encore plus par rapport aux tests de bureau). Et qui a dit que ce serait facile?

Types d'applications mobiles


Les applications mobiles sont:

  1. Natif (natif).
  2. Hybride (hybride).
  3. Applications Web (Web).

Regardez maintenant l'application suivante:



Et dites-moi, qu'est-ce que c'est: une application hybride, native ou web?

La réponse est:
Texte masqué
c'est une application web

Initialement, il est entendu que l'application Web est lancée et fonctionne dans le navigateur, respectivement, tous les éléments d'interface sont exécutés, comme on dit, dans un style Web.
Quant aux applications hybrides, il s'agit essentiellement d'une tentative de «bourrer» une application Web dans un conteneur spécial et de l'exécuter dans ce conteneur, en l'embellissant légèrement pour qu'elle ressemble à une native.

Exemples d' applications hybrides :



Les applications hybrides ne diffèrent pas par leur beauté particulière: les boutons sont toujours basés sur le Web, les liens sont affichés au format Web, etc.

Examinons les caractéristiques des applications hybrides:



Et maintenant un exemple d'application «native» de l'AppStore:



Faites attention à la qualité de l'interface de cette application et au fait que tous les éléments ressemblent «natifs», car la fonctionnalité est entièrement intégrée au système d'exploitation. En gros, une application native est une application développée en tenant compte des technologies "natives", dans notre cas, c'est Xcode pour iOS.

Les principaux paramètres des applications mobiles


Les paramètres sont les suivants:

  • performance
  • compatibilité
  • écran (tours, modes),
  • géolocalisation
  • mode hors ligne
  • interaction avec le système de fichiers,
  • travailler avec des contacts
  • synchronisation
  • travailler avec la mémoire
  • batterie.

Caractéristiques du test des applications mobiles


Maintenant, familiarisons-nous avec les fonctionnalités de test des applications pour les appareils mobiles:



Interaction des testeurs et des développeurs


En principe, l'interaction ne diffère pratiquement pas de l'interaction dans un environnement normal en ce qui concerne les tests de bureau. Tout de même:

  1. le développeur crée de nouvelles fonctionnalités;
  2. le testeur teste les fonctionnalités sur divers appareils;
  3. au fur et à mesure que les bogues sont détectés, le testeur crée des rapports de bogues et affiche les zones de problèmes des développeurs;
  4. le développeur corrige des bogues;
  5. le développeur renvoie l'application pour des tests supplémentaires;
  6. s'il n'y a pas de problème, l'application est prête à être publiée.



POO pour le testeur


Et maintenant OOP en 5 minutes )). Donc, si vous prévoyez de faire des tests automatisés, vous devez savoir:

  • classes, objets, méthodes;
  • héritage;
  • chaînes, entiers;
  • polymorphisme;
  • Tableaux
  • redéfinition / surcharge;
  • constructeurs;
  • interfaces.

Si en un mot et sans termes complexes, la POO (programmation orientée objet) est une combinaison de données et de code pour les traiter dans un seul objet.



L'héritage est un mécanisme de langage qui vous permet de créer une nouvelle classe basée sur une classe existante.

L'encapsulation est un mécanisme de langage qui restreint l'accès aux composants d'un objet (variables et méthodes) et les rend accessibles uniquement à l'intérieur de l'objet (privé). En d'autres termes, masquer une implémentation de classe.

Le polymorphisme est la capacité d'une classe descendante à modifier l'implémentation de la classe parente, mais en préservant l'interface.

Passons maintenant de la théorie à la pratique , ce qui vous aidera à comprendre les bases de la POO.

Interactif


Tout d'abord, ouvrez le lien suivant . Nous avons le code Java suivant dans lequel il existe trois classes principales:

1. Principal:

public class Main { public static void main (String[]args) { Cat cat = new Cat (); cat.setAge (5); cat.setName ("Alisa"); System.out.println (cat.getName ()); System.out.println (cat.getAge ()); } } 

2. Animal:

 public class Animal { private String name; private int age; public Animal() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 

3. chat:

 public class Cat extends Animal { private String name; public String getName() { return "Cat name is: " + name; } public void setName(String name) { this.name = name; } } 

Main est la classe principale requise pour exécuter d'autres classes. La classe animale répertorie des attributs tels que l'âge et le nom de l'animal. La classe Cat hérite de toutes les propriétés de la classe Animal (Cat étend Animal), mais remplace les méthodes existantes pour travailler avec notre classe.



Essayez maintenant de résoudre vous-même le problème suivant:

  • faire la classe Dog , héritant de la classe Animal ;
  • créer une méthode getName() dans la classe Dog qui affiche “Dog name is: [ ]” ;
  • créer une méthode setName() dans la classe Dog qui renvoie le nom;
  • dans la classe Main , créez une instance de la classe Dog , définissez le nom à l'aide de setName() et exécutez la méthode getName() pour obtenir le nom.

La solution au problème .

Automatisation Quand est-il nécessaire et quand n'est-il pas nécessaire?


Nous avons besoin d'automatisation dans les cas suivants:

  • application complexe avec un grand nombre d'écrans;
  • grand arsenal d'appareils;
  • mises à jour fréquentes;
  • un grand nombre d'utilisateurs;
  • l'application fonctionne dans de nombreux pays et marchés d'applications;
  • la vitesse des tests est importante;
  • des tests de performances sont nécessaires.

Lorsque l'automatisation n'est pas nécessaire:

  • un ou deux écrans dans l'application;
  • l'application fonctionne dans un pays, sur un marché;
  • mises à jour rares;
  • petit nombre d'utilisateurs;
  • les coûts d'automatisation dépasseront le budget.

Automatisation: principes et moyens


Principes d'automatisation:

  1. Recherchez un objet sur l'écran de l'application actuelle.
  2. Vérifiez son état, assurez-vous qu'il est disponible.
  3. Effectuez des actions avec l'objet.

Classification d'automatisation:

  1. Outils d'automatisation qui n'ont pas besoin d'accéder au code source (Webdriver, Appium).
  2. Outils d'automatisation nécessitant un accès au code source (Espresso, KIF).

L'automatisation est, bien sûr, excellente, mais vous devez toujours vous rappeler que tout ne peut pas être "automatisé".

Automatisation avec Appium


Appium est un serveur basé sur le protocole WebDriver (WebDriver est un cadre pour automatiser les applications Web). Appium accepte les demandes du côté client, les convertit et les transfère vers l'émulateur ou l'appareil.



Lors de l'exécution, Appium vous permet de voir toutes les requêtes qui se produisent du client vers le serveur:





Quelle est la configuration de l'environnement système Appium:



Mes amis, nous n'avons parlé que de la première partie du webinaire , nous vous recommandons donc de bien regarder la vidéo dans l'enregistrement afin de ne rien manquer. Il sera également question d'annotations dans les tests, d'initialisation d'Appium pour les applications natives, de recherche d'éléments utilisant Appium sur Android. En outre, assurez-vous de consulter la deuxième partie de la leçon ouverte, qui donnera des connaissances pratiques déjà plus approfondies dans le domaine de l'automatisation en général et Appium en particulier.

Et, bien sûr, inscrivez-vous au cours Mobile QA Engineer , qui commence très bientôt!

Source: https://habr.com/ru/post/fr472736/


All Articles