Tests réutilisables

L’intérêt des tests réutilisables
  • factoriser la base de tests
  • réutiliser les tests
  • limiter l’écriture de scripts pour concevoir les scénarios

Ces types de tests sont à utiliser en mode test plan.

Données partagées

Mise en cache d’une valeur

Important

Chemin d’accès du test réutilisable /Snippets/Cache/01_Set_Cache.tux

Ce test réutilisable consiste à sauvegarder une valeur dans le cache de données disponible durant l’exécution d’un test.

Paramètre(s) à configurer:

Paramètres Description
DATAS Contient la liste des valeurs à sauvegarder

Le paramètre DATAS contient la liste des valeurs à sauvegarder avec le format:

# mon commentaire
[!TO:CACHE:<MA_CLE>:];ma valeur

Exemple

# Save misc data
[!TO:CACHE:EXAMPLE:];hello world

# Save server information in the cache
[!TO:CACHE:SERVER_DESCRIPTION:];[!FROM:INPUT:TEST_PURPOSE:]

Note

Il est possible de sauvegarder plusieurs valeurs avec ce test.

Affichage d’une valeur

Important

Chemin d’accès du test réutilisable /Snippets/Cache/02_Log_Cache.tux

Ce test réutilisable permet d’afficher la valeur d’une clé présente dans le cache durant l’exécution du test.

Paramètre(s) à configurer:

Paramètres Description
MESSAGES Contient la liste des paramètres à logguer dans le test
# display cache
[!FROM:CACHE:EXAMPLE:]

# log timeout input
[!FROM:INPUT:TIMEOUT:]

Note

Il est possible d’afficher plusieurs valeurs en une seule fois

Reset du cache

Important

Chemin d’accès du test réutilisable /Snippets/Cache/03_Reset_Cache.tux

Ce test réutilisable permet de vider totalement le cache. Aucun paramètre à configurer.

Note

Ce test peut être utilise lorsque plusieurs scénarios sont enchainés dans un test global.

Vérification d’une valeur dans le cache

Important

Chemin d’accès du test réutilisable /Snippets/Cache/04_Checking_Cache.tux

Ce test réutilisable permet de vérifier la valeur dans une clé présente dans le cache.

Paramètre(s) à configurer:

Paramètres Description
CHECKING Liste des valeurs à vérifier dans le cache

Les opérateurs disponibles:

Paramètres Description
contains Permet de vérifier si la valeur contient une chaîne de caractères
matches Permet de vérifier si la valeur correspond à l’expression régulière
== Permet de vérifier si la valeur est égal à
!= Permet de vérifier si la valeur est différent de
> Permet de vérifier si la valeur est supérieur à
< Permet de vérifier si la valeur est inférieur à
>= Permet de vérifier si la valeur est supérieur égal à
<= Permet de vérifier si la valeur est inférieur égal à
# Vérifie si la valeur contient la chaine de caractère test
[!FROM:CACHE:EXAMPLE:] contains test

Note

Il est possible de vérifier plusieurs valeurs en une seule fois

Suppression d’une entrée dans le cache

Important

Chemin d’accès du test réutilisable /Snippets/Cache/05_Delete_Cache.tux

Ce test réutilisable permet de supprimer une clé et sa valeur associée dans le cache.

Paramètre(s) à configurer:

Paramètres Description
MESSAGES Liste des clés à supprimer
# supprime la clé EXEMPLE du cache
[!FROM:CACHE:EXEMPLE:]

Note

Il est possible de supprimer plusieurs clés en une seule fois

Actions basiques

Mise en attente

Important

Chemin d’accès du test réutilisable /Snippets/Do/01_Wait.tux

Ce test réutilisable permet d’attendre xx secondes durant l’exécution du test.

Paramètre(s) à configurer:

Paramètres Description
DURATION durée en secondes

Arrêt d’un test

Important

Chemin d’accès du test réutilisable /Snippets/Do/02_Terminate.tux

Ce test réutilisable permet de forcer l’arrêt d’un scénario en cas d’erreur. Un message expliquant l’arrêt peut être spécifié avec le paramètre STOP_TEST_MSG.

Note

Il est possible de personnaliser le message d’arrêt en configurant la variable STOP_TEST_MSG.

Chargement d’un environnement de test

Important

Chemin d’accès du test réutilisable /Snippets/Do/03_Initialize.tux

Ce test réutilisable permet de charger dans le cache les données de son environnement de tests (les adresses ip, compte d’accès des serveurs, etc.).

Un environnement se décrit avec 4 niveaux:
  • environnement
  • cluster
  • noeud
  • instance

Un environnement peut être constitué de un ou plusieurs clusters.

{
  "PLATFORM": {
                 "NOM_CLUSTER_1": [ .. ],
                 "NOM_CLUSTER_2": [ .. ]
      }
}

Un cluster est constitué d’une liste de noeuds.

{
  "NOM_CLUSTER_1": [
                { "NOM_NOEUD_1": { .. },
                { "NOM_NOEUD_2": { .. }
      ]
}

Un noeud est constitué d’une ou plusieurs instances.

{
  "NOM_NOEUD_1": {
                "COMMON": { ... },
                "INSTANCES": {....}
      }
}

Une instance se constitue de plusieurs clés/valeurs.

{
  "INSTANCES": {
                "TYPE_INSTANCE_1": {
                                      "NOM_INSTANCE_1": { ...},
                                      "NOM_INSTANCE_2": { ...}
                                  },
                "TYPE_INSTANCE_2": { ... }
      }
}

Paramètre(s) à configurer:

Paramètres Description
ENVIRONMENT Lien vers une variable partagée ou bien contient directement du JSON.

Exemple d’un environnement de test contenant un serveur http avec une instance de type rest. Après chargement dans le cache, l’instance REST est accessible en utilisant la clé NODE_HTTP_REST. L’ensemble des clés présentes dans COMMON sont automatiquement copiées dans chaque instance.

{
  "PLATFORM": {
    "CLUSTER": [
      { "NODE": {
                  "COMMON": {
                      "HOSTNAME": "httpbin"
                  },
                  "INSTANCES": {
                      "HTTP": {
                          "REST": {
                              "HTTP_DEST_HOST": "httpbin.org",
                              "HTTP_DEST_PORT": 443,
                              "HTTP_DEST_SSL": true,
                              "HTTP_HOSTNAME": "httpbin.org",
                              "HTTP_AGENT_SUPPORT": false,
                              "HTTP_AGENT": null
                          }
                      }
                  }
               }
          }
  ]
},
"DATASET": [    ]
}

La clé DATASET peut contenir des jeux de données.

Générateurs

Hash SHA

Important

Chemin d’accès du test réutilisable /Snippets/Generators/01_Gen_Sha.tux

Ce test réutilisable permet de générer un hash d’une valeur et de la stocker dans le cache.

Paramètre(s) à configurer:

Hash MD5

Important

Chemin d’accès du test réutilisable /Snippets/Generators/02_Gen_Md5.tux

Ce test réutilisable permet de générer un hash md5 d’une valeur et de la stocker dans le cache.

Paramètre(s) à configurer:

Paramètres Description
DATA_IN Chaine de caractère à hasher
CACHE_KEY Nom de la clé ou le résultat sera sauvegarder dans le cache

UUID

Important

Chemin d’accès du test réutilisable /Snippets/Generators/03_Gen_Uuid.tux

Ce test réutilisable permet de générer un id uuid et de la stocker dans le cache.

Paramètre(s) à configurer:

Paramètres Description
CACHE_KEY Nom de la clé pour sauvegarder le résultat dans le cache

BASE64

Important

Chemin d’accès du test réutilisable /Snippets/Generators/04_Gen_Base64.tux

Ce test réutilisable permet d’encoder ou décoder une chaine de caractères et de stocker le résultat dans le cache.

Paramètre(s) à configurer:

Protocoles réseaux

SSH

Important

Chemin d’accès du test réutilisable /Snippets/Protocols/01_Send_SSH.tsx

Ce test réutilisable permet d’envoyer un enchainement de commandes ssh. Il est à utiliser conjointement avec le test réutilisable /Snippets/Do/03_Initialize.tux permet de charger un environnement dans le cache.

Paramètre(s) à configurer:

Paramètres Description
SERVERS Liste des serveurs à contacter
COMMANDS Listes des commandes à exécuter sur la machine distante
TIMEOUT_CONNECT Durée max pour se connecter sur la machine distante

Le paramètre COMMANDS attend un ou plusieurs blocs de 4 lignes. Chaque bloc doit respecter le formalisme suivant:

  1. Un commentaire expliquant l’action, cette information est utilisée pour initialiser l’étape de test
  2. La commande à exécuter
  3. La chaine de caractères attendue à l’écran, si la valeur attendue n’est pas trouvée alors l’étape sera en erreur. (ligne optionnelle)
  4. vide

Avertissement

Chaque bloc sera exécuté même si le précédent est en erreur.

L’exemple suivant effectue les actions suivantes:
  1. Envoi de 3 pings sur la machine distante dont l’ip est stockée dans le cache DEST_HOST
  2. Vérification de l’obtention d’un message à l’écran indiquant que les 3 paquets ont été envoyés. Ensuite la valeur mdev est stockée dans le cache avec la clé ``STATS`
  3. Le deuxième bloc efface l’écran en envoyant la commande clear.
  4. Enfin le test attend de trouver le prompt à l’écran
# send a ping
ping -c 3 [!CACHE:SVR:DEST_HOST:]
.*3 packets transmitted, 3 received, 0% packet loss.*mdev = [!CAPTURE:STATS:] ms.*

# clear the screen
clear
.*root@.*

Note

Il est possible d’exécuter le test plusieurs fois en fournissant une liste de serveurs.

Note

Par défaut, le test attend 20 secondes au maximum pour trouver la chaine de caractères attendue. Il est possible de configurer cette valeur avec le paramètre TIMEOUT.

Note

Par défaut, le test attend 10 secondes pour effectuer la connexion au serveur distant. Il est possible de configurer cette valeur avec le paramètre TIMEOUT_CONNECT.

HTTP

Important

Chemin d’accès du test réutilisable /Snippets/Protocols/02_Send_HTTP_CURL.tsx

Ce test réutilisable permet d’envoyer une requête HTTP en vérifiant la réponse reçue.

Paramètre(s) à configurer pour définir la destination:

Paramètre(s) pour configurer la requête HTTP à envoyer:

Paramètres Description
HTTP_REQ_HOST Destination à charger URL
HTTP_REQ_BODY Corps de la requête
HTTP_REQ_HEADERS Liste des headers à ajouter
HTTP_REQ_METHOD Methode HTTP (GET, POST, etc..)

Paramètre(s) pour configurer la réponse HTTP attendue (et qui permettra de considérer le test comme valide):

Paramètres Description
HTTP_RSP_BODY Corps de la réponse attendue.
HTTP_RSP_BODY_JSON Json attendu dans le corps de la réponse.
HTTP_RSP_BODY_XML XML attendu dans le corps de la réponse.
HTTP_RSP_CODE Le code HTTP attendue. 200 par défaut
HTTP_RSP_HEADERS Liste des entêtes attendues
HTTP_RSP_PHRASE La phrase HTTP attendue. OK par défaut
HTTP_RSP_VERSION La version HTTP attendue. HTTP/1.[0|1] par défaut
../_images/snippets_http_rsp.png

Note

L’utilisation des expressions régulières est possible pour vérifier ou enregistrer une valeur dans le corps de la réponse ou bien dans les entêtes.

../_images/snippets_http_capture.png

Interface utilisateur

Ouverture application Windows

Important

Chemin d’accès du test réutilisable /Snippets/UI/01_Win_OpenApp.tux

Tests réutilisables permettant d’ouvrir ou de fermer une application sur un poste Windows ou Linux. Ce test nécessite de définir quel agent sera utilisé avec la clé AGENT_GUI.

Paramètre(s) à configurer:

Paramètres Description
APP_PATH Chemin d’accès de l’application à ouvrir

Fermeture application Windows

Important

Chemin d’accès du test réutilisable /Snippets/UI/02_Win_CloseApp.tux

Test réutilisable permettant d’ouvrir ou de fermer une application sur un poste Windows ou Linux. Ce test nécessite de définir quel agent sera utilisé avec la clé AGENT_GUI.

Paramètre(s) à configurer:

Paramètres Description
APP_NAME Nom de l’application à fermer

Ouverture navigateur

Important

Chemin d’accès du test réutilisable /Snippets/UI/03_OpenBrowser.tux

Test réutilisable permettant d’ouvrir ou de fermer une navigateur sur un poste Windows ou Linux. Ce test nécessite de définir quel agent sera utilisé avec la clé AGENT_GUI_BROWSER.

Paramètre(s) à configurer:

Paramètres Description
LOADING_URL Url du site à charger
Il est possible de sélectionner le navigateur à ouvrir, les navigateurs suivants sont supportés:
  • Firefox
  • Chrome
  • Internet Explorer
  • Opera
  • Edge
../_images/selenium_browser.png

Note

L’url doit obligatoirement commencer par http:// ou https://

Fermeture navigateur

Important

Chemin d’accès du test réutilisable /Snippets/UI/03_CloseBrowser.tux

Tests réutilisables permettant d’ouvrir ou de fermer une navigateur sur un poste Windows ou Linux. Ce test nécessite de définir quel agent sera utilisé avec la clé AGENT_GUI_BROWSER.

Vérifications

Contenu de type XML

Important

Chemin d’accès du test réutilisable /Snippets/Verify/01_Check_XML.tux

Ce test réutilisable permet de vérifier du contenu de type XML avec l’outil xpath.

Paramètre(s) à configurer:

Paramètres Description
XML_STR XML brut à inspecter
XML_XPATH xpath qui sera vérifier le test
XML_NAMESPACES Définition des namespaces

Exemple de valeur pour le paramètre XML_STR:

<NewDataSet>
<Table>
  <Country>France</Country>
  <City>Le Touquet</City>
</Table>
<Table>
  <Country>France</Country>
  <City>Agen</City>
</Table>
<Table>
  <Country>France</Country>
  <City>Cazaux</City>
</Table>
<Table>
  <Country>France</Country>
  <City>Bordeaux / Merignac</City>
</Table>
<Table>
  <Country>France</Country>
  <City>Bergerac</City>
</Table>
</NewDataSet>

Exemple de valeur pour le paramètre XML_XPATH permettant d’enregistrer dans le cache le nom de la ville à la 2ième position dans la liste.

(//NewDataSet/Table)[1]/City  [!CAPTURE:CITY:]

La valeur sera accessible dans le cache avec la clé CITY.

Contenu de type JSON

Important

Chemin d’accès du test réutilisable /Snippets/Verify/01_Check_JSON.tux

Ce test réutilisable permet de vérifier du contenu de type JSON avec l’outil jsonpath

Paramètre(s) à configurer:

Paramètres Description
JSON_STR Json à inspecter
JSON_XPATH jsonpath qui sera vérifié par le test

Exemple de valeur pour le paramètre JSON_STR:

{
 "args": {},
 "headers": {
 "Connection": "close",
 "Host": "httpbin.org",
 "User-Agent": "ExtensiveTesting"
},
 "origin": "190.117.217.129",
 "url": "https://httpbin.org/get"
}

Exemple de valeur pour le paramètre JSON_XPATH permettant d’enregistrer dans le cache la valeur de la clé Connection dans le dictionnaire headers.

headers.Connection    [!CAPTURE:CX:]

La valeur sera accessible dans le cache avec la clé CX.