Skip to content

5. Stratégie de test KraftwerK

Alexis Szmundy edited this page Dec 28, 2023 · 2 revisions

Organisation des données de tests dans le code

Tests unitaires

src/test/resources/unit_tests

/data Fichiers de données générés pour tester unitairement les parsers.
/data/lunatic_json Format Lunatic en .json.
/data/lunatic_xml Format Lunatic en .xml.
/data/paper Format papier (.csv).
/data/xforms Format xforms (.xml).
/dii DDI de tests pour Kraftwerk (vide pour l'instant, on utilise les DDI des tests fonctionnels).
/out Poubelle pour les tests unitaires qui ont besoin d'écrire des fichiers.
/paradata Paradonnées pour les tests unitaires.
/reporting_data Données de suivi pour les tests unitaires.
/user_inputs Fichiers de config utilisateur. Plusieurs cas de fichiers valides / invalides.
/utils Fichiers pour tester les classes utilisaire.
/utils/xslt Scripts pour tester l'exécution du XSL depuis Kraftwerk.
/variables_xml Fichiers issus du passage du XSLT dédié sur des DDI.
/vtl_scripts Divers scripts VTL.

Tests fonctionnels

src/test/resources/features

Description en Gherkin des scénarios à tester via Cucumber.

src/test/resources/functional_tests

/in Équivalent du dossier /in de l'application en main.
/out Équivalent du dossier /out de l'application en main.

Rappel : mode d'exécution de kraftwerk : une campagne =

  • Un dossier dans le in/ dont le nom sera interprété comme étant le nom de la campagne en question. Ce dossier contient les données (d'enquête, de suivi, paradonnées) et métadonnées + les fichier de configuration de l'utilisateur.
  • Un dossier dans le out/, généré par Kraftwerk si inexistant, avec le nom de la campagne

Tests Fonctionnels avec Cucumber

Cucumber est un framework de tests pour le "Behavior Driven Development" qui permet de générer des tests fonctionnels simulant des scénarios d'utilisation d'une application.

Cucumber permet de transformer les scénarios d'une histoire en tests java automatisés, s'appuyant sur une suite de tests unitaires Junit qu'il orchestre.

Chaque étape d'un scénario est implémentée comme une méthode Java, appelée step. Le lien entre la description textuelle de l'étape et le code Java de la step est réalisé via des annotations.

Cucumber

Un exemple de Test Cucumber

Chaque "brique" de l'application peut donc être testée grâce à un scénario d'utilisation, via Cucumber.

Les tests fonctionnels de Kraftwerk utilisant des données anonymisés sont stockées dans le module kraftwerk-functional-tests

Application des spécifications VTL

On teste la bonne application des spécifications VTL sur un dataset présent dans les bindings grâce à deux tests :

  • le premier test permet de vérifier d'une simple instruction sera bien appliquée au dataset.
  • le second test permet de vérifier qu'on peut appliquer plusieurs instructions et qu'un script complet sera bien appliqué au dataset.

Export d'un dataset Java et import en dataset VTL

On teste l'export et l'import des datasets grâce à ce test. L'export et l'import sont testés en même temps, puisque le but ici est de confirmer qu'on convertit bien un dataset JSON en un dataset VTL. Le test fonctionnel Kraftwerk permet de vérifier qu'un dataset est bien récupéré et enregistré sans erreurs dans les bindings (ce qui garantit la structure des données) ainsi qu'une partie de leur contenu.

Agrégation des datasets monomodaux

On teste l'agrégation des datasets grâce à ce test. L'agrégation se basant sur un script généré automatiquement en VTL, on teste le résultat final (nombre de variables du DDI, nombre d'observations, tests sur une variable particulière, ...).

Actuellement, on ne teste pas la bonne application d'un script VTL pendant l'agrégation.

Autres tests

D'autres tests sont décrits en interne (voir projet Gitlab)

Jeux de données pour les tests fonctionnels

Nom de la campagne Description
LOG-2021-t01 Enquête logement, premier test de juillet 2021. Données web, paradonnées + un échantillon de données de suivi.
LOG-2021-x01 Test '0' pour la séquence 1 web. Données web + paradonnées.
LOG-2021-x12 Test '1' pour la séquence 2 web. Données web.
LOG-2021-x21 Test '2' pour la séquence 1 web. Données web.
LOG-2021-x22 Test '2' pour la séquence 2 web. Données web.
SIMPSONS-v1 Enquête de test Simpsons, première mouture. Données xforms et papier.
SIMPSONS-v2 Enquête de test Simpsons, seconde mouture. TODO : générer des fichiers de données.
TIC-2021-a00 Enquête TIC 2021. Pas de données car pas anonymisées.
TIC-2021-a00 Enquête VQS 2021. Données réelles d'enquête anonymisées. Formats Xforms (enquête web) et papier.