Ecriture des TNR¶
Structure des répertoires¶
Le répertoire du dépot vitam-itest est strucutré de la façon suivante :
vitam-itests
|------- data
Dossier vitam-itests : contient les fichiers de configurations des tests fonctionnels.
Dossier data : contient les éventuels jeux de données nécessaires à l’exécution des tests.
Fichiers de Configuration¶
Nommage des fichiers¶
Un fichier regroupe tous les tests à effectuer sur une fonctionnalité. Il ne peut y avoir deux fonctionnalités dans un fichier de configuration.
On va par exemple réaliser :
- un fichier pour les tests sur l’Ingest
- un fichier pour les test sur l’accès aux unités archivistiques
Les noms des fichiers sont composés de la façon suivante :
EndPoint-Fonctionnalité.feature
Par exemple :
access-archive-unit.feature
admin-logbook-traceability.feature
Informations transverses¶
Les fichiers de configuration doivent contenir les informations suivantes qui s’appliqueront ensuite à l’ensemble des scénarios du fichier :
# language : information obligatoire. Correspond à la langue utilisée pour les descriptions. Par exemple :
language : fr.
Annotation : information optionnelle. L’annotation permet par la suite de lancer uniquement un fichier de configuration en ligne de commande en utilisant son annotation en paramètre. Par exemple :
@AccessArchiveUnit
Fonctionnalité : information obligatoire. La fonctionnalité est une description qui permet d’identifier le périmètre testé. Il est notamment repris dans les rapports réalisés à la fin d’une campagne de test. Par exemple :
Fonctionnalité: Recherche une archive unit existante
Contexte : information optionnelle. Les informations contenues dans contexte sont des actions qui vont s’exécuter pour chacun des scénarios. A ce titre, elles s’écrivent comme les actions d’un scénario. Le constexte doit être indenté de 1 par rapport aux autres éléments. Par exemple :
Contexte:
Etant donné les tests effectués sur le tenant 0
Ecriture d’un scénario¶
Structure d’un scénario¶
Un scénario correspond à un test. Son nom doit être défini de la façon suivante :
Scénario: Description du scénario
Il doit être sur la même indentation que le contexte, soit 1 par rapport à la fonctionnalité, à l’annotation et au langage.
Un scénario est constitué d’une succession d’actions, chacune décrite sur une ligne.
Les actions sont composées des trois informations suivantes :
- Contexte
- Fonction
- Paramètre (pas toujours obligatoire)
Actions d’étapes : permet d’introduire l’action, de l’insérer par rapport à l’action précédente. La liste des contextes disponibles se trouve en annexe.
Fonction : mobilise, via un langage naturel, une fonction de Vitam. La liste des fonctions disponibles se trouve en annexe.
Paramètre : certaines fonctions ont besoin d’être suivies d’un paramètre. Ils sont listés dans le tableau des fonctionnalités disponibles en annexe.
Les actions doivent être indentées de 1 par rapport aux scénarios.
Exemple d’un scénario constitué de trois actions :
Scénario: SIP au mauvais format
Etant donné un fichier SIP nommé data/SIP_KO/ZIP/KO_SIP_Mauvais_Format.pdf
Quand je télécharge le SIP
Alors le statut final du journal des opérations est KO
Insérer une requète DSL¶
Certaines fonctions nécessitent l’entrée de requêtes DSL en paramètre. Celles-ci doivent être insérées entre guillemets ( » « ), après un retour à la ligne à la suite de la fonction.
Voici un exemple d’une action suivie d’une requête DSL :
Et j'utilise la requête suivante
"""
{ "$roots": [],
"$query": [
{ "$and": [
{ "$gte": {
"StartDate": "1914-01-01T23:00:00.000Z"
} }, {"$lte": {
"EndDate": "1918-12-31T22:59:59.000Z"
} } ],
"$depth": 20}],
"$filter": {"$orderby": { "TransactedDate": 1 }
}, "$projection": {
"$fields": {"TransactedDate": 1, "#id": 1, "Title": 1, "#object": 1, "DescriptionLevel": 1, "EndDate": 1, "StartDate": 1}}}
"""
Insérer un tableau¶
Certaines fonctions attendent un tableau en paramètre. Les lignes des tableaux doivent simplement être séparées par des « pipes » ( | ).
Voici un exemple de fonction prenant un tableau en paramètre.
Alors les metadonnées sont
| Title | Liste des armements |
| DescriptionLevel | Item |
| StartDate | 1917-01-01 |
| EndDate | 1918-01-01 |
Annexes¶
Liste des actions d’étapes disponibles¶
Les types d’actions sont les suivants :
- une situation initial (les acquis) : Etant donné
- un événement survient : Quand (peut être suivi de Et et/ou Mais)
- on s’assure de l’obtention de certains résultats : Alors (peut être suivi de Et et/ou Mais)
Action |
---|
Etant donné |
Quand |
Alors |
Mais |
Et |
Liste des fonctions disponibles¶
Fonctionnalité | Doit être suivi par |
---|---|
les tests effectués sur le tenant (*) | un tenant |
les données du jeu de test du SIP nommé (.*) | un fichier |
un fichier SIP nommé (.*) | un fichier |
je télécharge le SIP | une autre action |
je recherche le journal des opérations | une autre action |
je télécharge son fichier ATR | une autre action |
je recherche le JCV de l’unité archivistique dont le titre est (.*) | un titre d’unité archivistique |
je recherche le JCV du groupe d’objet de l’unité archivistique dont le titre est (.*) | un titre d’unité archivistique |
le statut final du journal des opérations est (.*) | un statut |
le[s]? statut[s]? (?:de l’événement|des événements) (.*) (?:est|sont) (.*) | un ou plusieur evType et un Statut |
l’outcome détail de l’événement (.*) est (.*) | un outcome detail et une valeur |
l’état final du fichier ATR est (.*) | un statut |
le fichier ATR contient (.*) balise[s] de type (.*) | un nombre et un type de balise |
le fichier ATR contient les valeurs (.*) | une ou plusieurs valeurs séparées par des virgules |
le fichier ATR contient la chaîne de caractères (.*) | un texte ou une simple chaîne de caractères |
j’utilise la requête suivante | une requête |
j’utilise le fichier de requête suivant (.*) | un fichier |
j’utilise dans la requête le GUID de l’unité archivistique pour le titre (.*) | un titre d’unité archivistique |
j’utilise dans la requête le paramètre (.*) avec la valeur (.*) | un nom de paramêtre et une valeur de remplacement |
je recherche les unités archivistiques | une autre action |
je recherche les groupes d’objets des unités archivistiques | une autre action |
je recherche les groupes d’objets de l’unité archivistique dont le titre est (.*) | un titre d’unité archivistique |
le nombre de résultat est (.*) | un nombre |
les metadonnées sont (.*) | un tableau |
les metadonnées pour le résultat (.*) | un nombre et un tableau |
je recherche les registres de fonds (.*) | une autre action |
le nombre de registres de fonds est (.*) | un nombre |
les metadonnées pour le registre de fond sont | un tableau |
je recherche les détails du registre des fonds pour le service producteur (.*) | un identifiant de service producteur |
le nombre de détails du registre des fonds est (.*) | un nombre |
les metadonnées pour le détail du registre des fonds sont | un tableau |