Récupération d’un plan d’exécution Squash TM depuis un PEaC
Squash DEVOPS vous donne la possibilité d'insérer dans un pipeline CI/CD une étape pour récupérer et exécuter un plan de test automatisé défini dans Squash TM à l'aide un PEaC écrit en YAML ou JSON. Dans le cas de Jenkins, la configuration de cette étape peut être simplifiée par l'utilisation d'un plugin, voir la page correspondante de ce guide.
Vous pouvez retrouver plus d’informations sur la rédaction d’un PEaC dans la documentation de l'OpenTestFactory Orchestrator.
Focus
Pour le bon fonctionnement de cette fonctionnalité, les plugins Test Plan Retriever et Result Publisher doivent être installés sur l'instance Squash TM ciblée.
Prérequis
Un utilisateur appartenant au groupe Serveur d’automatisation de tests doit exister dans Squash TM.
Intégration de l’étape de récupération d’un plan d’exécution Squash TM dans un PEaC
Dans Squash TM, le plan d’exécution, itération ou suite de tests, doit contenir au moins un ITPI (Iteration Test Plan Item, voir le glossaire Squash TM) lié à un cas de test automatisé suivant les instructions du guide utilisateur Squash AUTOM.
Pour récupérer ce plan d’exécution dans un PEaC, il faut faire appel à l’action generator correspondante.
Voici un exemple simple d'un tel PEaC au format JSON :
{
"apiVersion": "opentestfactory.org/v1alpha1",
"kind": "Workflow",
"metadata": {
"name": "Simple Workflow"
},
"defaults": {
"runs-on":"ssh"
},
"jobs": {
"explicitJob": {
"runs-on":"ssh",
"generator":"tm.squashtest.org/tm.generator@v1",
"with": {
"testPlanUuid":"1e2ae123-6b67-44b2-b229-274ea17ad489",
"testPlanType":"Iteration",
"squashTMUrl":"https://squashtm.example.com/squash",
"squashTMAutomatedServerLogin":"tfserver",
"squashTMAutomatedServerPassword":"tfserver",
"technologyLabels":{
"ranorex": ["windows","ranorex"],
"robotframework": ["linux","robotframework"],
"junit": ["linux","junit"]
}
}
}
}
}
Un step generator Squash TM doit contenir les paramètres suivants :
-
testPlanType
: Correspond au type du plan de test à récupérer dans Squash TM. Seules les valeurs Iteration et TestSuite sont acceptées. -
testPlanUuid
: Correspond à l’UUID (Universally Unique IDentifier, voir la documentation Squash TM) du plan de test souhaité. Celui-ci peut être récupéré dans le bloc Information de l’itération ou de la suite de tests souhaitée dans Squash TM. -
squashTMUrl
: URL du Squash TM à viser. -
squashTMAutomatedServerLogin
: Nom de l’utilisateur du groupe Serveur d’automatisation de tests à utiliser dans Squash TM. -
squashTMAutomatedServerPassword
: Mot de passe de l’utilisateur du groupe Serveur d’automatisation de tests à utiliser dans Squash TM.
[Champs Optionnels] :
-
tagLabel
: Spécifique à la version Premium - Correspond au nom du champ personnalisé de type tag sur lequel on souhaite filtrer les cas de test à récupérer.
Il n’est pas possible d’en spécifier plusieurs. -
tagValue
: Spécifique à la version Premium - Correspond à la valeur du champ personnalisé de type tag sur lequel on souhaite filtrer les cas de test à récupérer.
Il est possible d’indiquer plusieurs valeurs séparées par des|
(exemplevaleur1|valeur2
). Il faut au moins l’une des valeurs soit associée au cas de test pour que celui-ci soit pris en compte.
Focus
Si l’un des deux champs tagLabel ou tagValue est présent, alors l’autre champ doit également être renseigné.
technologyLabels
: À utiliser notamment si vous récupérez un plan d'exécution contenant des tests devant s'exécuter sur des environnements différents.
Il permet de spécifier pour chaque framework d'automatisation les étiquettes de l'environnement d'exécution à cibler.
Celles-ci seront ajoutées aux étiquettes du runs-on du job Generator.
Pour une technologie donnée, les étiquettes se précisent en ajoutant une entrée à la liste du champ sous la forme"préfixe de la technologie": ["etiquette1", "etiquette2"]
.
Info
Par défaut, les jobs créés par le Generator suite à la récupération d'un plan d'exécution se voient attribués une étiquette correspondant au préfixe de la technologie de test (nom de la technologie en minuscule sans espace, par exemple "robotframework" pour Robot Framework) en plus de celles renseignées dans le runs-on du job generator.
Ordre d'exécution des tests
Le seul ordre assuré par Squash AUTOM (resp. Squash DEVOPS) est que, pour un dépôt Git donné dans une itération/suite de tests donnée, les tests seront exécutés dans l'ordre défini dans Squash TM.
Si une itération/suite de tests contient des tests automatisés appartenant à plusieurs dépôts Git, l'ordre d'exécution des tests d'un dépôt par rapport à l'exécution des tests d'un autre dépôt est indéfini.
Si plusieurs itérations/suites de tests sont lancées depuis Squash TM (resp. le pipeline CI/CD), l'ordre d'exécution des tests d'une itération/suite par rapport à l'exécution des tests d'une autre itération/suite est indéfini. (Sauf dans le cas simpliste où un environnement d'exécution adéquat est disponible et la première suite/itération a pu démarrer avant que l'utilisateur Squash TM – resp. le pipeline CI/CD – en lance une autre.)
Utilisation avec l'environnement d'exécution inception
de l'orchestrateur
OpenTestFactory, et de fait Squash DEVOPS, propose un environnement d'exécution spécial nommé inception
qui permet un mode d'utilisation alternatif des jobs de type generator
.
À quoi sert l'environnement inception
?
Le processus normal d'exécution d'un job generator
est d'aller récupérer un plan d'exécution depuis une instance de Squash TM puis d'aller exécuter les tests automatisés de ce plan sur les environnements d'exécution dédiés.
Lorsque l'environnement d'exécution inception
est utilisé pour le job generator
, il n'y a pas de tests exécutés suite à la récupération du plan d'exécution. À la place, il y a directement l'étape de remontée d'information vers Squash TM basée sur un ensemble de rapports transmis à l'orchestrateur en amont.
Comment utiliser l'environnement inception
au sein d'un PEaC
Voici un exemple de workflow au format YAML
utilisant l'environnement d'exécution inception
et allant récupérer un plan d'exécution Squash TM.
metadata:
name: Test Inception
resources:
files:
- report1
- report2
- report3
jobs:
prepare:
runs-on: inception
steps:
- uses: actions/prepare-inception@v1
with:
report.html: ${{ resources.files.report1 }}
output.xml: ${{ resources.files.report2 }}
log.html: ${{ resources.files.report3 }}
robot:
runs-on: inception
needs: [prepare]
generator: tm.squashtest.org/tm.generator@v1
with:
squashTMUrl: https://squashtm.example.com/squash
squashTMAutomatedServerLogin: ${{ variables.SQUASH_USER }}
squashTMAutomatedServerPassword: ${{ variables.SQUASH_PASSWORD }}
testPlanUuid: 1e2ae123-6b67-44b2-b229-274ea17ad489
testPlanType: Iteration
Plusieurs différences sont à noter par rapport au PEaC présenté à la section précédente :
-
La section
files
dans la partieresources
: elle permet de lister les ressources fournies en entrée à l'orchestrateur. C'est à partir de ces données que seront extraites les informations remontées à Squash TM. -
Un job de préparation, intitulé
prepare
dans cet exemple : il utilise l'action provideractions/prepare-inception@v1
et permet d'indiquer à quelle ressource normalement générée par le test correspond chaque ressource renseignée dans le blocfiles
-
Le job
generator
: il est très semblable à la version de la section précédente à deux points près :- Il utilise l'environnement
inception
dans son champruns-on
- Il précise que le job de préparation est un pré-requis pour son exécution via la ligne
needs: [prepare]
- Il utilise l'environnement
Un tel PEaC peut être exécuté via l'appel suivant :
curl -X POST \
-H "Authorization: Bearer ${TOKEN}" \
-F workflow=@Squashfile \
-F report1=@report1.html \
-F report2=@report2.xml \
-F report3=@report3.xml \
-F variables="SQUASH_USER=${USER}\nSQUASH_PASSWORD=${PASSWD}" \
http://orchestrator.example.com/workflows
curl -X POST ^
-H "Authorization: Bearer ${TOKEN}" ^
-F workflow=@Squashfile ^
-F report1=@report1.html ^
-F report2=@report2.xml ^
-F report3=@report3.xml ^
-F variables="SQUASH_USER=%USER%\nSQUASH_PASSWORD=%PASSWD%" ^
http://orchestrator.example.com/workflows
curl -X POST `
-H "Authorization: Bearer ${TOKEN}" `
-F workflow=@Squashfile `
-F report1=@report1.html `
-F report2=@report2.xml `
-F report3=@report3.xml `
-F variables="SQUASH_USER=$Env:USER\nSQUASH_PASSWORD=$Env:PASSWD" `
http://orchestrator.example.com/workflows
Il est à noter dans cet appel le passage en paramètre des rapports renseignés dans le PEaC.
Un PEaC exploitant l'environnement d'exécution inception
peut aussi être déclenché depuis un pipeline Jenkins grâce au step proposé par le plugin Squash DEVOPS.
Paramètres Squash TM exploitables dans un test automatisé
En exécutant un PEaC avec récupération d’un plan d’exécution Squash TM, ce dernier transmet différentes informations sur les éléments du plan d'exécution qu’il est possible d’exploiter dans un cas de test.
Pour plus d'informations, veuillez consulter la section Exploitation de paramètres Squash TM de la documentation de Squash AUTOM, ainsi que la section dédiée à l'automatisation du framework de test souhaité.
Info
Les technologies suivantes supportent l'exploitation des paramètres Squash TM au sein des cas de test :
Remontée d’informations vers Squash TM en fin d’exécution
La nature de la remontée d’informations à Squash TM en fin d’exécution d’un plan d’exécution Squash TM va dépendre de si vous êtes sous licence Squash AUTOM Community ou Squash AUTOM Premium.
Consultez le guide utilisateur Squash AUTOM pour plus d'informations.