Contactez-nous

Principe DRY (Don't Repeat Yourself) : l'importance des keywords utilisateurs

Découvrez comment le principe DRY (Don't Repeat Yourself) et les keywords utilisateurs améliorent la maintenabilité et la robustesse de vos tests Robot Framework.

Comprendre le principe DRY (Don't Repeat Yourself)

Le principe DRY, acronyme de "Don't Repeat Yourself" (Ne vous répétez pas), est un concept fondamental en développement logiciel qui vise à réduire la répétition de l'information ou du code. L'idée centrale est que chaque élément de connaissance ou de logique métier au sein d'un système ne devrait avoir qu'une seule représentation, non ambiguë et faisant autorité. Lorsque ce principe est violé (ce qu'on appelle parfois le code "WET" - Write Everything Twice, ou We Enjoy Typing), les mêmes informations ou blocs de code sont dupliqués à plusieurs endroits.

Dans le contexte de l'automatisation des tests avec Robot Framework, la répétition se manifeste souvent par des séquences d'étapes identiques ou très similaires apparaissant dans plusieurs cas de test. Par exemple, les étapes pour se connecter à une application, naviguer vers une section spécifique, ou effectuer une vérification commune pourraient être répétées maintes et maintes fois. Cette duplication a des conséquences négatives directes :

  • Maintenance accrue : Si la logique répétée doit être modifiée (par exemple, un sélecteur d'élément change, ou une étape de connexion évolue), la modification doit être appliquée manuellement à chaque endroit où le code est dupliqué. C'est une source d'erreurs, d'oublis et de perte de temps considérable.
  • Lisibilité réduite : Des blocs de code répétitifs rendent les tests plus longs, plus verbeux et plus difficiles à lire et à comprendre. Il devient plus ardu de saisir l'objectif principal de chaque cas de test.
  • Risque d'incohérence : Lors des modifications, il est facile d'introduire des variations involontaires entre les blocs de code dupliqués, conduisant à des comportements de test incohérents.

Appliquer le principe DRY dans vos tests Robot Framework n'est pas seulement une question d'élégance du code ; c'est une nécessité pour construire des suites de tests robustes, maintenables et évolutives. Robot Framework offre un mécanisme puissant pour atteindre cet objectif : les keywords utilisateurs.

Les keywords utilisateurs : la solution DRY de Robot Framework

Les keywords utilisateurs (User Keywords) sont la pierre angulaire de la factorisation du code et de l'application du principe DRY dans Robot Framework. Ils vous permettent de regrouper une séquence d'étapes (qui peuvent elles-mêmes être des keywords intégrés, des keywords de librairies, ou d'autres keywords utilisateurs) sous un nouveau nom, créant ainsi une nouvelle abstraction. Ce nouveau keyword peut ensuite être appelé à plusieurs reprises dans vos cas de test ou même dans d'autres keywords utilisateurs, tout comme n'importe quel keyword standard.

Imaginez que vous ayez plusieurs tests qui nécessitent de se connecter à votre application. Sans keywords utilisateurs, vous pourriez avoir quelque chose comme ceci :

*** Test Cases ***
Test Scénario 1
    Open Browser    https://monapp.com    Chrome
    Input Text      id:username           mon_user
    Input Text      id:password           mon_mot_de_passe
    Click Button    id:login_button
    Page Should Contain    Bienvenue mon_user
    # ... suite du test 1 ...

Test Scénario 2
    Open Browser    https://monapp.com    Chrome
    Input Text      id:username           mon_user
    Input Text      id:password           mon_mot_de_passe
    Click Button    id:login_button
    Page Should Contain    Bienvenue mon_user
    # ... suite du test 2 ...

Les cinq premières lignes sont répétées. Avec un keyword utilisateur, cela devient :

*** Keywords ***
Se Connecter Avec Identifiants Valides
    Open Browser    https://monapp.com    Chrome
    Input Text      id:username           mon_user
    Input Text      id:password           mon_mot_de_passe
    Click Button    id:login_button
    Page Should Contain    Bienvenue mon_user

*** Test Cases ***
Test Scénario 1
    Se Connecter Avec Identifiants Valides
    # ... suite du test 1 ...

Test Scénario 2
    Se Connecter Avec Identifiants Valides
    # ... suite du test 2 ...

Les avantages sont immédiats :

  • Maintenance simplifiée : Si le processus de connexion change (par exemple, l'ID du champ username devient user_login), vous ne devez modifier que le keyword Se Connecter Avec Identifiants Valides. La modification sera automatiquement répercutée partout où ce keyword est utilisé.
  • Lisibilité améliorée : Les cas de test deviennent plus courts et se concentrent sur leur logique spécifique, l'action de connexion étant clairement encapsulée. Le nom du keyword utilisateur (Se Connecter Avec Identifiants Valides) documente l'intention.
  • Réutilisabilité accrue : Ce keyword peut être utilisé dans n'importe quel autre test nécessitant une connexion.

Les keywords utilisateurs peuvent également accepter des arguments et retourner des valeurs, ce qui les rend encore plus flexibles et puissants pour créer des abstractions utiles.

Identifier les opportunités de création de keywords utilisateurs

Savoir quand et quoi extraire dans un keyword utilisateur est une compétence qui s'affine avec l'expérience. Voici quelques indicateurs et situations typiques où la création d'un keyword utilisateur est bénéfique :

Séquences d'étapes répétées : C'est le cas le plus évident. Si vous voyez exactement les mêmes deux, trois étapes (ou plus) apparaître dans plusieurs cas de test, c'est un candidat idéal pour un keyword utilisateur. Même une petite séquence répétée peut justifier un keyword si cela améliore la lisibilité.

Actions conceptuelles de haut niveau : Pensez aux actions métier que vos utilisateurs effectuent. Des actions comme "Ajouter un produit au panier", "Soumettre un formulaire de contact", "Effectuer une recherche de base" sont d'excellents candidats pour des keywords utilisateurs. Cela permet d'écrire des tests dans un langage proche de celui de votre domaine métier.

*** Test Cases ***
L'utilisateur Peut Rechercher Et Ajouter Un Article Au Panier
    Effectuer Une Recherche De Produit    ${NOM_PRODUIT}
    Vérifier Que Les Résultats De Recherche Contiennent    ${NOM_PRODUIT}
    Ajouter Le Premier Produit Au Panier
    Vérifier Que Le Panier Contient    ${NOM_PRODUIT}

Configuration et nettoyage (Setup/Teardown) : Les étapes de préparation d'un environnement de test (créer des données de test, configurer l'état initial de l'application) ou de nettoyage après un test (supprimer les données de test, fermer des connexions) sont souvent répétitives. Encapsulez-les dans des keywords utilisateurs qui peuvent ensuite être utilisés dans les sections Suite Setup, Suite Teardown, Test Setup, ou Test Teardown.

*** Settings ***
Test Setup       Préparer L'environnement Pour Le Test Utilisateur
Test Teardown    Nettoyer Les Données Utilisateur Créées

*** Keywords ***
Préparer L'environnement Pour Le Test Utilisateur
    Créer Un Nouvel Utilisateur Via API
    Se Connecter En Tant Que Nouvel Utilisateur

Nettoyer Les Données Utilisateur Créées
    Supprimer L'utilisateur Via API
    Fermer Le Navigateur

Simplification de la logique complexe : Si une vérification ou une action implique plusieurs étapes conditionnelles ou une logique complexe, l'encapsuler dans un keyword utilisateur peut masquer cette complexité et rendre le cas de test principal plus simple à lire.

N'ayez pas peur de créer des keywords utilisateurs même pour des séquences courtes si cela améliore la clarté sémantique de vos tests. L'objectif est de construire une librairie de keywords qui parlent le langage de votre application et de vos scénarios de test.

Bonnes pratiques pour la création de keywords utilisateurs

Pour tirer le meilleur parti des keywords utilisateurs et respecter le principe DRY, voici quelques bonnes pratiques à garder à l'esprit :

Nommage clair et action-orienté : Comme discuté précédemment, donnez à vos keywords des noms qui décrivent clairement ce qu'ils font. Commencez généralement par un verbe. (Ex: Valider Le Message D'erreur De Connexion).

Un seul niveau d'abstraction par keyword : Essayez de faire en sorte qu'un keyword opère à un niveau d'abstraction cohérent. Evitez de mélanger des actions de très bas niveau (comme cliquer sur un élément spécifique par son ID) avec des actions conceptuelles de haut niveau dans le même keyword. Vous pouvez avoir des keywords de haut niveau qui appellent d'autres keywords utilisateurs de plus bas niveau.

Utilisation d'arguments pour la flexibilité : Rendez vos keywords plus réutilisables en utilisant des arguments pour les données qui varient. Par exemple, au lieu d'un keyword Se Connecter En Tant Qu'Admin, créez un keyword Se Connecter En Tant Que qui prend le nom d'utilisateur et le mot de passe en arguments.

*** Keywords ***
Se Connecter En Tant Que
    [Arguments]    ${username}    ${password}
    Input Text      id:username           ${username}
    Input Text      id:password           ${password}
    Click Button    id:login_button

Gestion des valeurs de retour : Si un keyword produit un résultat qui doit être utilisé par les étapes suivantes, utilisez [Return] pour retourner cette valeur.

*** Keywords ***
Récupérer Le Solde Du Compte Utilisateur
    ${solde}=    Get Text    id:balance_display
    [Return]    ${solde}

Documentation des keywords : Utilisez le setting [Documentation] dans vos keywords utilisateurs pour décrire leur objectif, leurs arguments, et ce qu'ils retournent. Cela améliore grandement leur compréhensibilité et leur maintenabilité, et cette documentation apparaît dans les rapports et peut être utilisée par des outils comme Libdoc pour générer une documentation de vos keywords.

*** Keywords ***
Se Connecter En Tant Que
    [Arguments]    ${username}    ${password}
    [Documentation]    Effectue la connexion à l'application avec les identifiants fournis.
    ...    Arguments:
    ...    - username: Le nom d'utilisateur pour la connexion.
    ...    - password: Le mot de passe pour la connexion.
    Input Text      id:username           ${username}
    Input Text      id:password           ${password}
    Click Button    id:login_button

En internalisant le principe DRY et en maîtrisant l'art de créer des keywords utilisateurs efficaces, vous transformerez vos scripts Robot Framework en suites de tests élégantes, robustes et faciles à maintenir, même face à des applications complexes et en constante évolution.