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, 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

_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 CSV 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 CSV

  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__

  • 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

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 (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 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 que 1/3, 2/3, 3/3 si aucun _rowname n'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

FILE__ (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 CSV

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 ?