Accueil/Compétences/Robot Framework
Logo Robot Framework

Robot Framework

Un framework d'automatisation générique et open-source pour les tests d'acceptance, le développement piloté par les tests (ATDD) et l'automatisation des processus robotiques (RPA).

Pour les non-initiés

Qu'est-ce que Robot Framework ?

Imaginez que vous devez vérifier régulièrement que toutes les fonctionnalités d'un site web ou d'une application fonctionnent correctement. Au lieu de le faire manuellement à chaque fois, Robot Framework agit comme un robot qui suit une liste d'instructions pour effectuer ces vérifications à votre place.

Sa grande force est que ces instructions sont écrites dans un langage proche de l'anglais, ce qui les rend faciles à lire et à comprendre, même pour des personnes non techniques comme des chefs de projet ou des experts métier. C'est ce qu'on appelle une approche par "mots-clés" (keywords).

Ce que Robot Framework apporte à votre projet

  • Collaboration améliorée : Les tests sont compréhensibles par toute l'équipe (développeurs, testeurs, managers), ce qui facilite la communication.
  • Flexibilité : Il peut tester presque tout : sites web, applications mobiles, API, bases de données, etc.
  • Gain de temps : Il automatise les tâches répétitives, libérant du temps pour des activités à plus forte valeur ajoutée.
  • Qualité accrue : En exécutant des tests de manière fiable et répétée, il aide à livrer des produits plus stables.
Pour les développeurs

Fonctionnement technique

Robot Framework est un framework modulaire et extensible basé sur Icône PythonPython. Son architecture repose sur une syntaxe tabulaire et l'utilisation de mots-clés pour décrire les étapes des tests.

Caractéristiques principales

  • Syntaxe lisible (Gherkin-like) : Utilise des fichiers texte simples avec une structure claire.
  • Approche par mots-clés : Les tests sont composés de mots-clés qui peuvent être de haut ou bas niveau.
  • Extensibilité : Un large écosystème de bibliothèques (ex: Icône SeleniumSelenium, Requests) et la possibilité de créer ses propres bibliothèques en Python.
  • Data-driven : Facilite la création de tests qui s'exécutent avec différentes données d'entrée.
  • Rapports détaillés : Génère des rapports et des logs clairs et complets après chaque exécution.

Exemples pratiques

Test d'interface web (Selenium)

Exemple de test web
*** Settings *** Documentation Exemple de test web avec SeleniumLibrary. ... Ce test vérifie la fonctionnalité de recherche sur Wikipedia. Library SeleniumLibrary *** Variables *** ${BROWSER} Chrome ${WIKIPEDIA_URL} https://fr.wikipedia.org/ *** Test Cases *** Rechercher sur Wikipedia [Documentation] Ouvre Wikipedia, recherche "Robot Framework" et vérifie le titre. [Tags] web smoke Given le navigateur est ouvert sur la page d'accueil de Wikipedia When je recherche "Robot Framework" Then la page de résultats pour "Robot Framework" doit s'afficher *** Keywords *** Le navigateur est ouvert sur la page d'accueil de Wikipedia Open Browser ${WIKIPEDIA_URL} ${BROWSER} Wait Until Page Contains Wikipédia Je recherche "${term}" Input Text id=searchInput ${term} Click Button xpath=//button[@type="submit"] La page de résultats pour "${term}" doit s'afficher Wait Until Page Contains ${term} Title Should Be ${term} — Wikipédia [Teardown] Close Browser

Test d'API (REST)

Exemple de test d'API
*** Settings *** Documentation Exemple de test d'API avec RequestsLibrary. ... Ce test vérifie une API publique de "todos". Library RequestsLibrary Library Collections *** Variables *** ${API_URL} https://jsonplaceholder.typicode.com *** Test Cases *** Vérifier la récupération d'une tâche [Documentation] Récupère une tâche (todo) par son ID et valide son contenu. [Tags] api Create Session json_placeholder ${API_URL} ${response}= GET On Session json_placeholder /todos/1 Should Be Equal As Strings ${response.status_code} 200 ${data}= Convert To Dictionary ${response.json()} Dictionary Should Contain Key ${data} userId Dictionary Should Contain Key ${data} title Should Be Equal As Numbers ${data}[id] 1 Should Be A Boolean ${data}[completed]

Test Data-Driven

Exemple de test data-driven
*** Settings *** Documentation Exemple de test data-driven. ... Ce test valide les identifiants de connexion. Library SeleniumLibrary Test Template Tenter de se connecter avec des identifiants invalides *** Test Cases *** USERNAME PASSWORD Identifiants vides ${EMPTY} ${EMPTY} Utilisateur valide, mdp incorrect user wrongpassword Utilisateur incorrect, mdp valide invaliduser password123 *** Keywords *** Tenter de se connecter avec des identifiants invalides [Arguments] ${username} ${password} # Supposons que nous sommes sur une page de connexion # Open Browser http://example.com/login chrome Input Text id=username ${username} Input Text id=password ${password} Click Button id=login-button Page Should Contain Identifiants invalides # [Teardown] Close Browser

Bonnes pratiques

  • Organisation : Structurez vos projets en séparant les tests, les ressources (mots-clés réutilisables) et les données.
  • Nommage : Utilisez des noms clairs et descriptifs pour les suites, les tests et les mots-clés.
  • Abstraction : Créez des mots-clés de haut niveau qui décrivent "quoi" tester, et des mots-clés de bas niveau qui décrivent "comment".
  • Indépendance : Assurez-vous que les tests sont indépendants et peuvent être exécutés dans n'importe quel ordre. Utilisez `[Setup]` et `[Teardown]` pour initialiser et nettoyer.
  • Variables : Externalisez les données de test (URLs, identifiants) dans des fichiers de variables pour plus de flexibilité.
Applications concrètes

Cas d'usage

Tests de régression de bout en bout

Automatiser des scénarios utilisateurs complets (ex: connexion, ajout au panier, paiement) pour s'assurer que les nouvelles fonctionnalités ne cassent pas l'existant.

Automatisation des Processus (RPA)

Automatiser des tâches manuelles et répétitives comme la saisie de données, la génération de rapports ou la migration de contenu entre systèmes.

Validation d'API et de microservices

Vérifier que les API REST ou SOAP répondent correctement, respectent les contrats et s'intègrent bien les unes avec les autres.

Tests multi-plateformes

Écrire des tests qui peuvent être exécutés sur différents navigateurs (web), appareils (mobile avec Appium) ou même des applications de bureau.