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, 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 CSV en tant que ressources de test. Chaque ligne d’un CSV 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 CSV
Créez un fichier CSV dans lequel chaque ligne représente une variante de test.
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 |
| Nom d'affichage de la ligne dans les résultats | Chrome Login, Mobile Safari |
| Moteur de navigation | Chromium, Chrome, Firefox, Safari |
| Taille de la fenêtre d'affichage | 1920x1080, 375x812 |
| Catégorie d'appareil | Desktop, Mobile, Tablet |
| Appareil spécifique | iPhone 14, Pixel 7 |
| Géolocalisation du navigateur | ParisSelfHosted |
| Langue du navigateur | en-US, fr-FR, de-DE |
| Mode sombre | true, false |
| JavaScript activé | true, false |
| Ignorer la validation HTTPS | true, false |
| Mode furtif | true, false |
| Densité de pixels | 1, 2, 3 |
| Mode couleur forcé | active, none |
| Nom d'utilisateur d'authentification HTTP | admin |
| Mot de passe d'authentification HTTP | secret123 |
| Serveur proxy | |
| Mettre en évidence les actions | true, false |
| Remplacer l'environnement | UUID de l'environnement |
| Remplacer le persona | UUID du persona |
| Remplacer le pool d'appareils | UUID du pool d'appareils |
| 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 :
Chrome Desktop : connexion en tant qu'alice sur Chrome en 1920x1080
Firefox Desktop : connexion en tant que bob sur Firefox en 1440x900
Safari Mobile : connexion en tant que charlie sur Safari en 375x812
Étape 2 : Importez le fichier CSV en tant que ressource de test
Téléversez votre fichier CSV dans votre projet via l'application web Thunders :
Ouvrez votre projet
Accédez à l'onglet Ressources de test
Cliquez sur Téléverser et sélectionnez votre fichier CSV
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__
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.csvdevientFILE_LOGINS_CSVtest-data.csvdevientFILE_TEST_DATA_CSVmy users (v2).csvdevientFILE_MY_USERS_V2_CSV
Associez le fichier CSV à un scénario de test
Un scénario de test peut être associé à l'un des fichiers CSV 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 du projet, chacune avec son nombre de lignes, ainsi que Téléverser pour ajouter un CSV 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.
Seules les ressources de test .csv 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é.
É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.
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.
Si aucun fichier n'est associé, cette ligne affiche Sélectionner et ouvre le sélecteur au lieu de lancer l'exécution.
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 Données de test sur Par défaut. 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.
Un Groupe de Tests fonctionne de la même façon avec Par défaut : 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
Sélectionnez “Depuis un fichier” dans la section “Données de test” lorsque tous les scénarios de test sélectionnés doivent utiliser le même CSV pour ce lancement.
Un fichier choisi ici s'applique à tous les scénarios de test sélectionnés et remplace tout fichier qui leur serait associé.
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(ouvariables), 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 (
testCaseIdsettestSetIds). 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 |
|
|
|
|
|
|
Étape 4 : Combiner plusieurs fichiers CSV (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 à :
Nom de la ligne du lot : la valeur de la colonne
_rowname(ou une valeur par défaut telle que1/3,2/3,3/3si aucun_rownamen'a été fourni)Remplacements de données du lot : les valeurs de variables injectées pour cette ligne précise
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.
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 CSV | Onglet Ressources de test de votre projet |
Format de référence |
|
Paramètre API |
|
Colonnes natives | Préfixez avec |
Colonnes de données | Sans préfixe ; remplacent les variables du scénario de test |
Plusieurs CSV | Transmettez plusieurs références ; les lignes sont fusionnées séquentiellement |
Regroupement par lot | Toutes les exécutions partagent un |
Nommage des lignes | Utilisez la colonne |













