Passer au contenu principal

Comment exécuter par lots différentes variantes de votre scénario de test

Écrit par Ines

Ce guide vous accompagne dans les tests pilotés par les données avec Thunders : exécuter plusieurs fois le même scénario de test avec des données différentes issues de fichiers CSV ou Excel (.xlsx), telles que des URL, des navigateurs, des identifiants ou toute autre variable utilisée par votre test.

Présentation

Avec les tests pilotés par les données, vous téléversez un ou plusieurs fichiers de données (CSV ou Excel .xlsx) en tant que ressources de test. Chaque ligne d’un fichier de données définit une itération de test unique. Lorsque vous déclenchez une exécution depuis la plateforme Thunders ou depuis la CI, chaque ligne devient une exécution de test distincte, regroupée sous un seul lot.

Ce guide couvre les quatre modes d’exécution pris en charge :

  • Exécuter un seul scénario de test avec son propre fichier de données associé

  • Exécuter plusieurs scénarios de test, chacun avec son propre fichier de données associé

  • Exécuter les scénarios de test sélectionnés avec un seul fichier de données partagé

  • Exécuter des tests pilotés par les données depuis la CI

Ceci est idéal pour :

  • Tester le même flux sur plusieurs navigateurs ou appareils

  • Exécuter un test de connexion avec différents identifiants d'utilisateur

  • Valider une page sur plusieurs URL

  • Tout scénario dans lequel vous souhaitez paramétrer votre scénario de test

Étape 1 : Créez votre fichier de données (CSV ou Excel)

Créez un fichier CSV dans lequel chaque ligne représente une variante de test.

Vous pouvez aussi utiliser un classeur Excel (.xlsx). Il accepte les mêmes colonnes, les mêmes colonnes _ et la même limite de 1 000 lignes qu'un fichier CSV. La première ligne contient les noms des colonnes, et chaque ligne suivante correspond à une exécution. Thunders lit uniquement la première feuille de calcul. Si cette feuille contient un tableau Excel, Thunders lit le premier tableau : sa ligne d'en-tête donne les noms des colonnes, et sa ligne de total est ignorée. Thunders lit chaque cellule telle qu'Excel l'affiche : une cellule texte 01234 garde son zéro initial, et une cellule de date garde son format d'affichage. Si Thunders ne peut pas lire un fichier CSV ou Excel comme fichier de données, le fichier est quand même enregistré comme ressource de test, et un avertissement en donne la raison. Vous ne pouvez pas utiliser ce fichier pour une exécution par lot : le lancement est refusé. L'ancien format .xls n'est pas pris en charge.

Il existe deux types de colonnes :

Colonnes de données

Il s'agit des colonnes dont les noms correspondent aux variables de votre scénario de test (sans les crochets []). Leurs valeurs remplacent les variables de votre scénario de test avec la priorité la plus élevée.

Par exemple, si votre étape de test indique :

Accédez à [ENVIRONMENT_URL] et connectez-vous avec [USERNAME]

Votre fichier CSV doit comporter des colonnes nommées ENVIRONMENT_URL et USERNAME :

ENVIRONMENT_URL,USERNAME
https://staging.example.com,alice
https://production.example.com,bob

Colonnes natives (remplacements navigateur/environnement)

Les colonnes préfixées par _ remplacent les paramètres d'exécution ligne par ligne. Utilisez-les pour faire varier le navigateur, la résolution, l'environnement ou d'autres paramètres d'exécution d'une ligne à l'autre.

Colonne

Description

Exemples de valeurs

_rowname

Nom d'affichage de la ligne dans les résultats

Chrome Login, Mobile Safari

_browserType

Moteur de navigation

Chromium, Chrome, Firefox, Safari

_resolution

Taille de la fenêtre d'affichage

1920x1080, 375x812

_deviceType

Catégorie d'appareil

Desktop, Mobile, Tablet

_deviceName

Appareil spécifique

iPhone 14, Pixel 7

_location

Géolocalisation du navigateur

ParisSelfHosted

_locale

Langue du navigateur

en-US, fr-FR, de-DE

_darkTheme

Mode sombre

true, false

_javascript

JavaScript activé

true, false

_ignoreHttpsErrors

Ignorer la validation HTTPS

true, false

_avoidDetection

Mode furtif

true, false

_deviceScaleFactor

Densité de pixels

1, 2, 3

_forcedColors

Mode couleur forcé

active, none

_username

Nom d'utilisateur d'authentification HTTP

admin

_password

Mot de passe d'authentification HTTP

secret123

_proxy

Serveur proxy

_highlightElements

Mettre en évidence les actions

true, false

_environmentId

Remplacer l'environnement

UUID de l'environnement

_personaId

Remplacer le persona

UUID du persona

_devicePoolId

Remplacer le pool d'appareils

UUID du pool d'appareils

_deviceSkuId

Remplacer le SKU d'appareil dans le pool

UUID du SKU d'appareil

Toute autre colonne commençant par _ est rejetée et le lancement est refusé.

Exemple complet de fichier CSV

Voici un fichier CSV qui teste un flux de connexion sur 3 navigateurs avec différents utilisateurs :

ENVIRONMENT_URL,USERNAME,PASSWORD,_rowname,_browserType,_resolution
https://app.example.com/login,alice,pass123,Chrome Desktop,Chrome,1920x1080
https://app.example.com/login,bob,pass456,Firefox Desktop,Firefox,1440x900
https://app.example.com/login,charlie,pass789,Safari Mobile,Safari,375x812

Cela génère 3 exécutions de test :

  1. Chrome Desktop : connexion en tant qu'alice sur Chrome en 1920x1080

  2. Firefox Desktop : connexion en tant que bob sur Firefox en 1440x900

  3. Safari Mobile : connexion en tant que charlie sur Safari en 375x812

Étape 2 : Importez le fichier de données en tant que ressource de test

Téléversez votre fichier CSV dans votre projet via l'application web Thunders :

  1. Ouvrez votre projet

  2. Accédez à l'onglet Ressources de test

  3. Cliquez sur Téléverser et sélectionnez votre fichier de données

  4. Notez le nom de référence généré qui s'affiche dans la liste des ressources (par exemple FILE_LOGINS_CSV)

Le nom de référence suit le modèle : FILE_<NOM_FICHIER>_<EXTENSION>

  • Le nom de fichier est mis en majuscules

  • Les tirets, espaces, points et parenthèses sont remplacés par des traits de soulignement

  • Les traits de soulignement consécutifs sont réduits à un seul

Exemples :

  • logins.csv devient FILE_LOGINS_CSV

  • test-data.csv devient FILE_TEST_DATA_CSV

  • my users (v2).csv devient FILE_MY_USERS_V2_CSV

La page Fichiers de Test d'un projet, vide, avec le bouton Téléverser un Fichier de Test.
La fenêtre Téléverser des Fichiers de Test. Glissez les fichiers dans la zone de dépôt, ou cliquez dessus pour les sélectionner.

Associez le fichier de données à un scénario de test

Un scénario de test peut être associé à l'un des fichiers de données du projet. Définissez l'association une fois et ce scénario s'exécutera toujours avec ce fichier, une exécution par ligne. Définissez-la depuis l'un ou l'autre de ces endroits ; les deux ouvrent le même sélecteur : les ressources de test CSV et Excel du projet, chacune avec son nombre de lignes, ainsi que Téléverser pour ajouter un fichier CSV ou Excel et l'associer en une seule fois.

  • Depuis le scénario de test : ouvrez le scénario de test et utilisez le champ Fichier de données du panneau Propriétés.

  • Depuis la liste des scénarios de test : utilisez la colonne Fichier de données pour définir, changer ou Effacer le fichier sur n'importe quelle ligne. C'est la façon la plus rapide de paramétrer de nombreux scénarios sans les ouvrir un par un.

Le champ Fichier de données du panneau Propriétés d'un scénario de test. Son sélecteur liste les fichiers CSV avec leur nombre de lignes et l'option Téléverser.
La colonne Fichier de données de la liste des scénarios de test. Le sélecteur d'une ligne est ouvert et liste les fichiers CSV du projet avec leur nombre de lignes.

Seules les ressources de test .csv et .xlsx peuvent être associées. Un fichier bloque le lancement s'il a été supprimé, s'il ne contient aucune ligne de données, s'il dépasse 1 000 lignes, ou si son nombre de lignes ne peut pas être lu. La pastille devient rouge dans ce cas et le lancement est alors refusé dans son intégralité.

Le champ Fichier de données affiche une pastille rouge pour un fichier de 1001 lignes. Le message indique que le fichier dépasse la limite de 1000 lignes.
Le champ Fichier de données affiche une pastille rouge pour un fichier sans ligne de données. Le message indique qu'aucune ligne d'exécution n'a été détectée.

Étape 3 : Exécutez le lot

La façon de lancer dépend de l'endroit où se trouve le fichier : associé à chaque scénario de test, ou choisi une seule fois pour tout le lancement.

3.1) Un scénario de test, avec son propre fichier de données

Ouvrez le scénario de test : Exécuter est un bouton scindé. La partie principale démarre toujours une seule exécution sans données, même lorsqu'un fichier est associé. Le chevron ouvre Exécuter avec le fichier de données, qui affiche le nombre d'exécutions et démarre une exécution par ligne.

Le bouton scindé Exécuter avec son menu ouvert. La ligne Exécuter avec le fichier de données affiche le fichier associé et son nombre de lignes.

Lorsqu'un fichier est associé, le menu l'affiche sous forme de pastille ; cliquez sur la pastille pour sélectionner un autre fichier sans quitter le bouton Exécuter. Elle ouvre le même sélecteur que le panneau Propriétés et la liste des scénarios de test : ce que vous sélectionnez ici devient l'association du scénario de test.

Le menu Exécuter avec la pastille du fichier ouverte. Le sélecteur liste les fichiers CSV du projet, et le fichier associé porte une coche.

Si aucun fichier n'est associé, cette ligne affiche Sélectionner et ouvre le sélecteur au lieu de lancer l'exécution.

Le menu Exécuter d'un scénario de test sans fichier associé. La ligne Exécuter avec le fichier de données affiche Sélectionner, et le sélecteur liste les fichiers CSV du projet.

Les lignes s'exécutent en parallèle dans la limite de votre offre (2 exécutions simultanées sur Starter, 10 sur les offres payantes), ou du nombre de lignes si celui-ci est inférieur.

3.2) Plusieurs scénarios de test, chacun avec son propre fichier de données

Cochez les scénarios dans la liste des Scénarios de test, cliquez sur Exécuter, puis laissez le champ Données de test vide. Chaque scénario sélectionné auquel un fichier de données est associé s'exécute une fois par ligne de son propre fichier ; ceux qui n'en ont pas s'exécutent une seule fois, sans données.

Des scénarios de test sont cochés dans la liste des scénarios de test, puis lancés. Certaines lignes ont un fichier associé dans la colonne Fichier de données, les autres affichent Sélectionner.

Un Groupe de Tests fonctionne de la même façon lorsque le champ Données de test est vide : chaque scénario membre auquel un fichier est associé s'exécute une fois par ligne de son propre fichier, et se démultiplie au sein d'un seul passage du groupe.

Le prérequis du groupe fait exception. Il s'exécute une seule fois, même si un fichier lui est associé. Un prérequis est une porte d'entrée plutôt qu'un scénario : il sert à placer l'environnement dans l'état dont le reste du groupe a besoin. Le répéter à chaque ligne de données referait cette préparation pour rien et multiplierait la taille de tout le lancement.

3.3) Utiliser un seul fichier de données partagé pour les scénarios sélectionnés

Utilisez le champ Données de test lorsque tous les scénarios de test sélectionnés doivent utiliser le même fichier de données pour ce lancement :

  1. Cliquez dans le champ et tapez /. La liste affiche les ressources de test CSV et Excel du projet.

  2. Tapez une partie du nom du fichier pour filtrer la liste, puis sélectionnez le fichier.

Pour utiliser un nouveau fichier, joignez-le depuis le champ. Thunders le téléverse et le sélectionne. Si le texte du champ ne correspond à aucun fichier de données, le champ affiche une erreur et Exécuter reste désactivé. Sélectionnez un fichier dans la liste, ou videz le champ. La fenêtre de planification d'un groupe de tests contient le même champ.

Un fichier choisi ici s'applique à tous les scénarios de test sélectionnés et remplace tout fichier qui leur serait associé.

La fenêtre Paramètres d'exécution. Le champ Données de test contient /contact, et sa liste affiche nous_contacter.csv et contact-4-columns.xlsx.

3.4) Depuis un pipeline CI

Les pipelines lancent les tests via POST /api/ci/run, qui prend en charge les deux modèles. Transmettez testAssetReferences pour appliquer un seul fichier à tout ce que l'appel sélectionne, l'équivalent du 3.3 :

{
"ProjectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"TestCaseIds": [
"a836fadc-377a-46fe-96b0-21f37c626bf9"
],
"EnvironmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"PersonaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"BrowserSettings": {
"Location": "ParisSelfHosted",
"browserType": "Chromium",
"DeviceType": "Desktop",
"Resolution": "1440x900"
},
"TestAssetReferences": ["FILE_LOGINS_CSV"]
}

Les paramètres BrowserSettings du corps de la requête servent de valeurs par défaut. Toute colonne native du CSV (comme _browserType) remplace la valeur par défaut correspondante pour cette ligne précise.

Les références peuvent aussi être placées entre crochets : [FILE_LOGINS_CSV].

Pour que chaque scénario de test utilise son propre fichier associé (l'équivalent du 3.2, un seul appel CI plutôt qu'un appel par scénario), envoyez applyRememberedDataFiles sans référence de fichier :

{
"projectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"testCaseIds": ["a836fadc-377a-46fe-96b0-21f37c626bf9"],
"testSetIds": [],
"environmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"personaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"applyRememberedDataFiles": true
}

À garder en tête :

  • L'option est facultative et désactivée par défaut. Un pipeline qui n'envoie pas le paramètre se comporte exactement comme aujourd'hui : aucune exécution existante ne se multiplie soudainement.

  • Elle est ignorée, silencieusement, si la requête transporte déjà ses propres données. Si le même appel transmet aussi testAssetReferences (ou variables), ce sont ces données qui l'emportent : tous les scénarios sélectionnés s'exécutent avec le fichier transmis et aucun fichier associé n'est consulté.

  • Elle couvre les scénarios de test et les groupes de tests dans une même requête (testCaseIds et testSetIds). Le plafond de 1 000 exécutions et le refus global du lancement s'appliquent à l'ensemble de ce que l'appel sélectionne.

En-têtes

En-tête

Valeur

Authorization

Bearer YOUR_THUNDER_TEST_TOKEN

X-MS-API-ROLE

M2M

Content-Type

application/json

Étape 4 : Combiner plusieurs fichiers de données (facultatif)

Vous pouvez référencer plusieurs fichiers CSV dans une seule requête. Leurs lignes sont concaténées en un seul lot avec un index continu.

"TestAssetReferences": ["FILE_DESKTOP_BROWSERS_CSV", "FILE_MOBILE_DEVICES_CSV"]

Si desktop-browsers.csv comporte 3 lignes et mobile-devices.csv 2 lignes, le lot obtenu contiendra 5 exécutions de test indexées de 1 à 5.

Cela est utile pour organiser vos données de test en groupes logiques (par exemple un CSV par catégorie d'appareils, un par région, un par rôle d'utilisateur).

Étape 5 : Examinez les résultats

Après l'exécution, chaque ligne apparaît comme une exécution de test distincte dans l'onglet Test Runs. Vous pouvez les identifier grâce à :

  • Info du Lot : le nom du fichier de données et la ligne, par exemple logins.csv · 2/3. La ligne est la valeur de la colonne _rowname (ou une valeur par défaut telle que 1/3, 2/3, 3/3 si aucun _rowname n'a été fourni). La colonne est masquée par défaut : affichez-la depuis Affichage > Colonnes affichées. Pour ne voir que les exécutions d'un fichier de données, filtrez la colonne sur le nom du fichier.

  • Remplacements de données du lot : les valeurs de variables injectées pour cette ligne précise

La liste des exécutions avec trois exécutions. La colonne Info du Lot affiche contact-4-columns.xlsx et le nom de la ligne. Une infobulle affiche les données de la ligne plain.

Chaque exécution conserve aussi le fichier de données dont elle provient. Ouvrez l'exécution : son panneau Propriétés affiche une pastille Fichier de données en lecture seule, avec le nom du fichier et son nombre de lignes. Vous savez ainsi toujours quel jeu de données a produit un résultat.

Le panneau Propriétés d'une exécution de test. Le champ Fichier de données, en lecture seule, affiche le fichier de l'exécution et son nombre de lignes.

Exemple GitHub Actions

Voici un workflow GitHub Actions qui déclenche un lot de variantes de test. Ajoutez "applyRememberedDataFiles": true et retirez TestAssetReferences pour que chaque scénario utilise plutôt son propre fichier associé.

POST /api/ci/run renvoie un runId et l'exécution se poursuit de façon asynchrone : cette étape ne fait que la démarrer. Pour attendre le résultat et récupérer le rapport JUnit, interrogez GET /api/ci/run/{runId} ; le modèle complet se trouve dans CI/CD.

name: Run Thunders Batch Tests

on:
workflow_dispatch:

jobs:
run-batch-tests:
runs-on: ubuntu-latest
steps:
- name: Run Batch Test Variations
uses: fjogeleit/http-request-action@v1
with:
url: 'https://api.thunders.ai/api/ci/run'
method: 'POST'
customHeaders: >
{
"Authorization": "Bearer ${{ secrets.THUNDER_TEST_TOKEN }}",
"X-MS-API-ROLE": "M2M",
"Content-Type": "application/json"
}
data: >
{
"ProjectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"TestCaseIds": ["a836fadc-377a-46fe-96b0-21f37c626bf9"],
"EnvironmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"PersonaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"BrowserSettings": {
"Location": "ParisSelfHosted",
"browserType": "Chromium",
"DeviceType": "Desktop",
"Resolution": "1440x900"
},
"TestAssetReferences": ["FILE_LOGINS_CSV", "FILE_MOBILE_CSV"]
}

Référence rapide

Concept

Détails

Téléversement du fichier de données

Onglet Ressources de test de votre projet

Format de référence

FILE_<NOM_FICHIER>_<EXT> (en majuscules, les caractères spéciaux deviennent _)

Paramètre API

testAssetReferences (tableau de chaînes)

Colonnes natives

Préfixez avec _ pour remplacer les paramètres navigateur/environnement

Colonnes de données

Sans préfixe ; remplacent les variables du scénario de test

Plusieurs fichiers de données

Transmettez plusieurs références ; les lignes sont fusionnées séquentiellement

Regroupement par lot

Toutes les exécutions partagent un batchId

Nommage des lignes

Utilisez la colonne _rowname, sinon index/total par défaut

Avez-vous trouvé la réponse à votre question ?