Contactez-nous

Stratégies de débogage : `Log To Console`, `Pause Execution`, analyse des logs

Maîtrisez les techniques de débogage essentielles dans Robot Framework : Log To Console, Pause Execution et l'analyse détaillée des fichiers de logs pour des tests robustes.

Tracer l'exécution : les keywords `Log` et `Log To Console`

L'une des premières lignes de défense lors du débogage de tests Robot Framework est l'utilisation de messages de log pour tracer l'exécution et inspecter les valeurs des variables à des points clés. Robot Framework offre deux keywords principaux à cet effet : Log et Log To Console, tous deux issus de la librairie standard BuiltIn.

Le keyword Log écrit un message dans le fichier log.html généré à la fin de l'exécution. C'est très utile pour documenter les étapes du test ou enregistrer des informations qui seront analysées post-exécution. Vous pouvez spécifier un niveau de log (comme INFO, DEBUG, WARN, ERROR, HTML) pour contrôler la visibilité et la mise en forme du message. Par exemple :

*** Test Cases ***
Mon Test Avec Log
    ${MA_VARIABLE}    Set Variable    Valeur importante
    Log    La valeur de ma variable est : ${MA_VARIABLE}    level=INFO
    Log    Message HTML important    level=HTML

Le niveau DEBUG est particulièrement utile pour des informations de débogage détaillées qui ne sont pas toujours nécessaires dans les rapports standards.

Le keyword Log To Console, comme son nom l'indique, affiche le message directement dans la console (sortie standard) pendant l'exécution du test. C'est idéal pour obtenir un retour immédiat sur ce qui se passe, sans avoir à attendre la fin de l'exécution pour consulter le fichier log.html. Cela peut être particulièrement utile pour suivre la progression de tests longs ou pour déboguer des problèmes qui empêchent la génération correcte des logs. Sa syntaxe est simple :

*** Test Cases ***
Mon Test Avec Log Console
    ${URL_API}    Set Variable    https://api.example.com/data
    Log To Console    Appel de l'API à l'URL : ${URL_API}
    # ... la suite du test ...
    Log To Console    Réponse de l'API reçue.

Utiliser judicieusement ces deux keywords permet de créer des points de contrôle informatifs tout au long de vos scripts, facilitant grandement l'identification des zones problématiques et la compréhension du flux d'exécution.

Interrompre et inspecter : `Pause Execution` et alternatives

Parfois, l'affichage de logs ne suffit pas et il devient nécessaire de mettre l'exécution en pause pour inspecter l'état de l'application sous test ou l'environnement à un moment précis. Le keyword Pause Execution, généralement fourni par la librairie Dialogs, est conçu pour cela. Lorsqu'il est rencontré, l'exécution du test s'interrompt et une boîte de dialogue s'affiche, attendant une action de l'utilisateur (typiquement, cliquer sur "OK" ou "Resume") pour continuer.

*** Settings ***
Library    Dialogs
Library    SeleniumLibrary

*** Test Cases ***
Test Avec Pause
    Open Browser    https://www.google.com    Chrome
    Input Text    name=q    Robot Framework
    Pause Execution    Vérifiez le champ de recherche avant de continuer.
    Click Button    name=btnK
    Close Browser

Pendant cette pause, vous pouvez utiliser les outils de développement de votre navigateur pour inspecter le DOM, vérifier les styles CSS, exécuter des commandes JavaScript dans la console, ou simplement observer l'état visuel de la page. C'est un excellent moyen de déboguer des interactions complexes ou des problèmes d'interface utilisateur.

Une alternative ou un complément est le keyword Debug fourni par certaines librairies, notamment SeleniumLibrary (si le keyword est implémenté en Python). Lorsqu'il est appelé, il peut lancer le débogueur Python (pdb) à cet endroit du code de la librairie, permettant une inspection encore plus profonde. Cela nécessite une certaine familiarité avec Python et le code source de la librairie concernée.

# Exemple conceptuel, la disponibilité et le comportement exact dépendent de la librairie
*** Test Cases ***
Test Avec Debug Selenium
    Open Browser    https://example.com    Chrome
    # Supposons une action complexe ici
    Comment    Le keyword Debug peut être appelé ici si disponible dans une fonction Python sous-jacente
    # SeleniumLibrary.Debug # Ceci est un exemple, la manière de l'appeler peut varier
    Close Browser

Si vous avez besoin d'interagir plus dynamiquement pendant une pause, par exemple pour entrer une valeur ou choisir une option, la librairie Dialogs offre également des keywords comme Get Value From User ou Get Selection From User. Ces derniers peuvent être utilisés pour guider le test ou injecter des données en cours de route, ce qui peut être utile dans des scénarios de débogage exploratoire.

L'art d'analyser les fichiers de logs : `log.html` et `report.html`

Après chaque exécution, Robot Framework génère des fichiers de résultats, dont les plus importants pour le débogage sont log.html et report.html. Le fichier log.html est une mine d'or d'informations, fournissant une trace chronologique détaillée de chaque suite, test, keyword exécuté, et de leurs arguments et statuts.

Dans log.html, vous pouvez naviguer à travers l'arborescence des tests. Chaque keyword exécuté est listé, et vous pouvez déplier les détails pour voir les arguments passés, les messages de log internes (y compris ceux ajoutés avec le keyword Log), et le temps d'exécution. En cas d'erreur, le message d'erreur complet est affiché, souvent accompagné d'une trace (stack trace) si l'erreur provient d'une librairie Python. Les keywords qui échouent sont clairement marqués en rouge, ce qui permet de localiser rapidement la source du problème. De plus, si configuré (par exemple avec SeleniumLibrary et Register Keyword To Run On Failure Capture Page Screenshot), des captures d'écran automatiques peuvent être intégrées directement dans le log au point de l'échec.

Le fichier report.html offre une vue plus synthétique des résultats, idéale pour une vue d'ensemble de la santé de vos suites de tests. Il présente des statistiques sur les tests passés/échoués, les tests par tag, par suite, etc. Bien que moins détaillé pour le débogage d'un problème spécifique que log.html, il aide à identifier des tendances ou des zones de l'application particulièrement problématiques.

N'oubliez pas le fichier output.xml. Bien qu'il ne soit pas destiné à une lecture humaine directe, c'est le fichier source à partir duquel log.html et report.html sont générés. Il contient toutes les informations d'exécution dans un format structuré (XML) et peut être utilisé par d'autres outils pour une analyse personnalisée, ou par Robot Framework lui-même pour des opérations comme la ré-exécution des tests échoués (--rerunfailed).

Outils et options complémentaires pour un débogage efficace

Au-delà des keywords spécifiques, Robot Framework offre des options en ligne de commande qui peuvent grandement faciliter le débogage. L'option --dryrun (ou -d est pour outputdir, --dryrun est sa propre option) est très utile : elle permet de vérifier la syntaxe de vos tests et la résolution des keywords sans réellement les exécuter. Robot Framework va parser les fichiers, vérifier que tous les keywords sont trouvés, mais ne va pas exécuter leur logique métier. C'est un excellent moyen de s'assurer que la structure de base de vos tests est correcte avant un lancement complet.

robot --dryrun chemin/vers/vos_tests/

L'option --loglevel en ligne de commande permet de contrôler la verbosité des logs. Par exemple, lancer les tests avec --loglevel DEBUG inclura tous les messages de niveau DEBUG (y compris ceux des librairies) dans log.html, ce qui peut fournir des détails cruciaux sur le fonctionnement interne des keywords. Les niveaux disponibles sont typiquement TRACE, DEBUG, INFO (défaut), WARN, ERROR.

robot --loglevel DEBUG chemin/vers/vos_tests/

Vous pouvez également changer le niveau de log dynamiquement pendant l'exécution d'un test en utilisant le keyword Set Log Level de la librairie BuiltIn. Cela peut être utile pour augmenter temporairement la verbosité autour d'une section de code particulièrement délicate.

Set Log Level    DEBUG
# ... code suspect ici ...
Set Log Level    INFO

L'intégration avec un IDE comme Visual Studio Code, via des extensions telles que "Robot Framework Language Server", offre également des fonctionnalités de débogage. Celles-ci peuvent inclure la coloration syntaxique des erreurs, l'autocomplétion des keywords (évitant les erreurs "Keyword not found"), et parfois même la possibilité de définir des points d'arrêt et d'inspecter des variables si la librairie sous-jacente (souvent en Python) le permet. Ces outils d'IDE sont un complément puissant aux techniques de débogage natives de Robot Framework.