Skip to content

Framework_Medium_Android est un framework d'automatisation mobile basé sur Appium, Cucumber et TestNG et qui s'exécute sur les devices et émulateurs Android.

License

Notifications You must be signed in to change notification settings

yakanamani/Framework-medium-mobile-android

Repository files navigation

Cucumber BDD Framework with Appium, TestNG, Java 11 and Allure Report for Android

Framework-medium-mobile-android est un framework d'automatisation mobile basé sur Appium, Cucumber et TestNG et qui s'exécute sur les devices et émulateurs Android.

Si vous souhaitez tester une application mobile de préférence sur Android.
🌟Si vous êtes TESTEUR AUTOMATICIEN et que vous voulez apprendre à automatiser des tests fonctionnels.
🌟Si vous êtes un RECRUTEUR pour évaluer les compétences de nos testeurs automaticiens talentueux.
🌟 Ou encore si vous êtes un PARTICULIERou une ENTREPRISE à la recherche de solution répondant à vos besoins d'automatisation en test alors ce framework est fait pour vous!

🎁 Ce framework permet d'exécuter vos tests (scénarios) en séquentiel sur le périphérique Android de votre choix, que ce soit un device physique ou un émulateur.
🎁 Il s'exécute également sur la plateforme Windows 10 et 11.
🎁Il contient plusieurs modèles et bonnes pratiques comme le Page Object Model, le page Factory qui vous permettent d'avoir un framework assez Robuste, Réutisable, Maintenable et Rapide.
🎁Il offre également des Logs qui vous fournissent une traçabilité, des informations pertinentes sur l'exécution de vos tests et aident à déboguer le framework en cas d'échec des tests.
🎁Il contient aussi du reporting avec Allure report pour vous permettre d'avoir une visibilité de la couverture des tests effectués avec succès et ceux qui ont échoués.

🎯Sommaire:

🏷️Architecture et Présentation du framework
🏷️Technologies et outils utilisés
🏷️Fonctionnalités
🏷️Environnement de développement
🏷️Installation du framework
🏷️Pré-requis
🏷️Mise à jour du fichier testng.xml
🏷️Exécution du framework
🏷️Reporting
🏷️Mise à jour et adaptation du Framework
🏷️Déboggage et Maintenance

🎯Architecture et Présentation du Framework

📦framework-medium-mobile-android
┣ 📂src
┃ ┣ 📂main
┃ ┃ ┣ 📂java
┃ ┃ ┃ ┣📂FrameworkMediumAndroid.utils
┃ ┃ ┃ ┃ ┗ 📜CapabilitiesManager.java
┃ ┃ ┃ ┃ ┗ 📜DriverManager.java
┃ ┃ ┃ ┃ ┗ 📜GlobalParams.java
┃ ┃ ┃ ┃ ┗ 📜PropertyManager.java
┃ ┃ ┃ ┃ ┗ 📜ServerManager.java
┃ ┃ ┃ ┃ ┗ 📜TestUtils.java
┃ ┃ ┣ 📂resources
┃ ┃ ┃ ┗ 📜config.properties
┃ ┃ ┃ ┗ 📑log4j2.xml
┃ ┣ 📂test
┃ ┃ ┣ 📂java
┃ ┃ ┃ ┣📂FrameworkkMediumAndroid
┃ ┃ ┃ ┃ ┣ 📂pages
┃ ┃ ┃ ┃ ┃ ┗ 📜BasePage.java
┃ ┃ ┃ ┃ ┃ ┗ 📜LoginPage.java
┃ ┃ ┃ ┃ ┃ ┗ 📜MenuPage.java
┃ ┃ ┃ ┃ ┃ ┗ 📜ProductDetailsPage.java
┃ ┃ ┃ ┃ ┃ ┗ 📜ProductsPage.java
┃ ┃ ┃ ┃ ┃ ┗ 📜SettingsPage.java
┃ ┃ ┃ ┃ ┃ ┣ 📂runners
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MytestngRunnerTest.java
┃ ┃ ┃ ┃ ┃ ┣ 📂stepdef
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Hooks.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜LoginStepDef.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductStepDef.java
┃ ┃ ┃ ┃ ┃ ┗ 📜Main.java
┃ ┃ ┣ 📂resources
┃ ┃ ┃ ┃ ┣ 📂app
┃ ┃ ┃ ┃ ┃ ┗ 📑Android.SauceLabs.Mobile.Sample.app.2.7.1.apk
┃ ┃ ┃ ┃ ┗ 📑allure.properties
┃ ┃ ┃ ┃ ┗ 📑Login.feature
┃ ┃ ┃ ┃ ┗ 📑Products.feature
┃ ┃ ┣ 📂Test-output
┃ ┃ ┃ ┣ 📂YYYY-MM-DD
┃ ┃ ┃ ┃ ┣ 📂Device_Name
┃ ┃ ┃ ┃ ┃ ┣ 📂Logs
┃ ┃ ┃ ┃ ┃ ┗ 📑Application.log
┃ ┃ ┃ ┃ ┃ ┗ 📑Server.log
┃ ┃ ┃ ┣ 📂allure-report
┃ ┃ ┃ ┣ 📂allure-results
┃ ┃ ┃ ┣ 📂reports
┃ ┃ ┃ ┃ ┣ 📂cucumber
┃ ┃ ┃ ┃ ┃ ┗ 📑report.html
┃ ┃ ┃ ┃ ┃ ┗ 📑report.json
┃ ┃ ┃ ┃ ┃ ┗ 📑report.xml
┣ 📑pom.xml
┣ 📑README.md
┣ 📑testng.xml

🎯Technologies et outils utilisés

➡️ IntelliJ - IDE
➡️ Appium - Mobile Automation library
➡️ Maven - Build automation tool
➡️ Java - Programming language
➡️ Cucumber - BDD
➡️ TestNG - Unit testing framework
➡️ Log4J - Logging framework
➡️ Allure Reports - Reporting framework

🎯Fonctionnalités

✅ Abstraction layer pour les intérations UI (click, sendkeys, ...)
✅ Paramétrisation par les fichier TestNG XML et config.properties
✅ Abstraction layer pour les jeux de données
✅ Abstraction layer pour les textes statiques
✅ Exécution sur devices physiques (et/ou Emulateurs/Simulateurs ) Android et iOS
✅ Démarrage automatique programmé du serveur Appium
✅ Cucumber-HTML-Reporter plugin
✅ Gestion des logs avec Log4J2 Logging framework

🎯Environnement de développement

Logiciel version Description Windows Macbook
Java JDK JAVA 11 Dowloadable here X X
Android SDK via Android studio current available Dowloadable here X X
Node.js 18.15.0 Dowloadable here X X
npm 9.5.0 Downloaded with node.js X X
appium 2.0.0-beta.59 terminal: npm install -g appium@next X X
UiAutomator current available terminal: appium driver install uiautomator X X
appium client (wd) current available terminal: npm install wd X X
maven 3.8.6 Downloadable here X X
Allure current available Downloadable here X X

🎯Installation du framework

Prérequis

🟥 NB: POUR EXÉCUTER CE FRAMEWORK, VOUS DEVEZ AVOIR UNE BONNE CONNEXION INTERNET !

  • Devices
    • 📌Device physique

      Description Obligatoire
      Mode développeur activé sur le device x
      Débogage usb activé x
      Connexion internet activée x
      Device déverouillé x
      Device connecté au poste via usb x
    • 📌Emulateur :

      • L'émulateur doit être lancé et en bon état de marche

🎯Mise à jour du fichier testng.xml

  • Remplir les informations concernant le device utilisé pour les tests automatisés
    Les informations concernant les caractéristiques du device sont a modifier dans le fichier testng.xml (path_du_repertoire_du_framework/testng.xml)

    1. Mettre a jour le paramètre udid: Il est récupérable depuis le terminal (Le device doit etre connecté a l'ordinateur(device physique) ou démarré (device virtuel))
          # Terminal  
          adb devices
    2. Mettre à jour le paramètre deviceName
    3. Mettre à jour le paramètre virtualDevice Il prendra pour valeur true or "false"
      • true = emulator
      • false = real device
  • exemple

        <parameter name="platformName" value="Android"/>
        <parameter name="udid" value="virtual_device_udid"/>
        <parameter name="deviceName" value="virtual_device_name"/>
        <parameter name="virtualDevice" value="true"/>
  • 📌Paramètres obligatoires :
    • udid
    • deviceName
    • virtualDevice
    • systemPort
    • chromeDriverPort
  • 🟥Important : la valeur choisie pour chacun des paramètres suivants doit être unique et différente des autres valeurs
    • systemPort
    • chromeDriverPort

🎯Exécution du framework

  • Depuis l'IDE:
    • Option 1:
      Depuis un éditeur de code, lancer l'exécution du fichier main.java
      (chemin d'accès : src/test/java/FrameworkMediumAndroid/Main.java)
    • Option 2 :
      Depuis un éditeur de code, lancer l'exécution du fichier testng.xml
  • Depuis la CLI (Command Line Interface = invite de commandes):
    Commandes a exécuter depuis un terminal:
  cd project_repository
  mvn clean test

🎯Reporting

Les différents rapports et artefacts resultants de l'exécution des tests seront disponibles dans le dossier: Rapport disponible :

  • Test-output
    • reports/cucumber-report/_cucumber.html
    • allure-report/_index.html

🎯Mise à jour et adaptation du Framework

🪙Ajout d'une nouvelle application

  1. Ajouter la(les) nouvelle(s) application(s) dans le dossier apps (chemin d'accès: src/test/resources/apps)

  2. Mettre a jour les informations de l'application dans le fichier config.properties(chemin d'accès: src/main/resources/config.properties)

    Variable value
    androidAppLocation apk_path
    androidAppActivity apk_activity_name
    androidAppPackage apk_package_name

🪙Ajout de nouveaux scénarios

  1. Ajouter le nouveau feature file dans le dossier src/test/resources suivant le template suivant:
@test
Feature: write here your feature title

Scenario: write here scenario title 
Given I do first step
When I do second step next
Then thrid step should be expected result
@test
Feature: Login scenarios

Scenario Outline: write here scenario title (scenario with datas)
Given this first step
When I use this data: "<username>"
And this data: "<password>"
Then I should get this data: "<err>"
Examples:
| username | password | err |
| invalidUsername | secret_sauce | Username and password do not match any user in this service. |
  1. Définir les methodes de "steps definition" dans le dossier stepdef (chemin d'accès : src/test/java/FrameworkMediumAndroid/stepdef)
  2. En utilisant le Page Object Model design, créer les pages contentant les object spécifiques dans le dossier pages (Chemin d'accès: src/test/java/FrameworkMediumAndroid/pages)
  3. Utiliser les "objets" créés pour la redaction des methodes de step definition

🎯Déboggage et Maintenance

🔴Débogage

  • Erreur suite à une tentative de Build module : Vérifier que l'environnement de travail et l'IDE sont bien paramétrés pour Java 11
  • Erreur suite à une tentative de maven compile : Vérifier que l'environnement de travail et l'IDE sont bien paramétrés pour Java 11

🔴Maintenance

  • Dépendances: Régulièrement vérifier le fichier pom.xml pour s'assurer que les dependances sont a jour, si non les mettre a jour. Site de téléchargement des dépendances maven : https://mvnrepository.com

About

Framework_Medium_Android est un framework d'automatisation mobile basé sur Appium, Cucumber et TestNG et qui s'exécute sur les devices et émulateurs Android.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published