Tough Day tough-day

CAUTION
AEM 6.4 a atteint la fin de la prise en charge étendue et cette documentation n’est plus mise à jour. Pour plus d’informations, voir notre période de support technique. Rechercher les versions prises en charge here.

Qu’est-ce que Tough Day 2 ? what-is-tough-day

Tough Day 2 est une application qui vous permet de tester les limites de votre instance AEM. Prête à l’emploi, elle peut être exécutée avec la suite de tests par défaut ou configurée pour répondre à vos impératifs de test. Vous pouvez regarder cet enregistrement pour une présentation de l’application.

Exécution de Tough Day 2 how-to-run-tough-day

Téléchargez la dernière version de Tough Day 2 à partir du référentiel Adobe. Après avoir téléchargé l’application, vous pouvez l’extraire en fournissant le paramètre host. Dans l’exemple suivant, l’instance AEM s’exécute localement, de sorte que la valeur localhost est utilisée :

java -jar toughday2.jar --host=localhost

La suite par défaut qui s’exécute après l’ajout des paramètres s’appelle toughday. Il contient les cas d’utilisation suivants :

  • Créer des pages et des Live Copies pour elles (y compris les déploiements)
  • Obtenir la page d’accueil
  • Exécution de requêtes dans querybuilder
  • Création de hiérarchies de ressources
  • Suppression des ressources

La suite contient 15 % d’actions d’écriture et 85 % d’actions de lecture.

Pour exécuter les tests de la suite, Tough Day 2 installe son package de contenu par défaut. Cela peut être évité en définissant le paramètre installsamplecontent sur false, mais souvenez-vous que vous devez également modifier les chemins par défaut pour les tests que vous avez l’intention d’exécuter. Si le jar est exécuté sans paramètres, Tough Day 2 affiche les informations d’aide.

En règle générale, vous pouvez utiliser l’application en suivant ce modèle :

java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish]  [<global arguments> | <actions> | --runmode | --publishmode]
NOTE
Tough Day 2 n’a pas d’étape de nettoyage. Par conséquent, il est recommandé d’exécuter Tough Day 2 sur une instance de transfert clonée et non sur l’instance de production principale. L’instance d’évaluation doit être supprimée après les tests.

Obtention d’aide getting-help

Tough Day 2 offre un large éventail d’options d’aide accessibles depuis la ligne de commande. Par exemple :

java -jar toughday2.jar --help_full

Dans le tableau ci-dessous, vous trouverez les paramètres d’aide pertinents.

Paramètre
Description
Exemple
--help
Imprime des informations globales, par exemple les actions disponibles, les suites prédéfinies, les modes d’exécution et les paramètres globaux.
--help_publish
Imprime tous les éditeurs disponibles.
--help_tests
Imprime les classes de test et leur description.
--help_full
Imprime tous les éléments ci-dessus, ainsi que les tests, les éditeurs et les composants de la suite.
--help --runmode/publishmode type=<Mode>
Répertorie les informations sur le mode d’exécution ou de publication spécifié.

java -jar toughday2.jar --help --runmode type=constantload

java -jar toughday2.jar --help --publishmode type=intervals

--help --suite=<SuiteName>
Répertorie tous les tests d’une suite donnée et leurs propriétés configurables respectives.
java -jar toughday2.jar --help --suite=get_tests
--help --tag=<Tag>
Répertorie tous les éléments qui possèdent la balise spécifiée.
java -jar toughday2.jar --help --tag=publish
--help <TestClass/PublisherClass>
Répertorie toutes les propriétés configurables pour le test ou l’éditeur donné.

java -jar toughday2.jar --help UploadPDFTest

java -jar toughday2.jar --help CSVPublisher

Paramètres globaux global-parameters

Tough Day 2 propose des paramètres globaux qui définissent ou modifient l’environnement pour les tests. Ils incluent notamment l’hôte ciblé, le numéro de port, le protocole utilisé, l’utilisateur et le mot de passe pour l’instance et bien d’autres. Par exemple :

java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true

Vous trouverez les paramètres appropriés dans la liste ci-dessous :

Paramètre
Description
Valeur par défaut
Valeurs possibles
--installsamplecontent=<Val>
Installe ou ignore le package de contenu Tough Day 2 par défaut.
true
true ou false
--protocol=<Val>
Protocole utilisé pour l’hôte.
http
http ou https
--host=<Val>
Nom d’hôte ou adresse IP qui sera ciblé.
--port=<Val>
Port de l’hôte.
4502
--user=<Val>
Nom d’utilisateur de l’instance.
admin
--password=<Val>
Mot de passe pour ce même utilisateur.
admin
--duration=<Val>
Durée des tests. Peut être exprimée en (s)econdes, (m)inutes, (h)eures et (j)ours.
1d
--timeout=<Val>
Durée pendant laquelle un test s’exécute avant d’être interrompu et marqué comme ayant échoué. Exprimée en secondes.
180
--suite=<Val>
La valeur peut être une ou une liste (séparée par des virgules) de suites de tests prédéfinies.
toughday
--configfile=<Val>
Le fichier de configuration yaml ciblé.
--contextpath=<Val>
Chemin d’accès au contexte de l’instance.
--loglevel=<Val>
Niveau de journal du moteur Tough Day 2.
INFO
ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF
--dryrun=<Val>
Si la valeur est true, imprime la configuration obtenue et n’exécute aucun test.
false
true ou false

Personnalisation customizing

La personnalisation peut être réalisée de deux manières : avec les paramètres de ligne de commande ou les fichiers de configuration yaml. Les fichiers de configuration sont généralement utilisés pour les grandes suites personnalisées. Ils remplacent les paramètres par défaut de Tough Day 2. Les paramètres de ligne de commande remplacent les fichiers de configuration et les paramètres par défaut.

La seule façon d’enregistrer une configuration de test consiste à la copier au format yaml. Pour plus d’informations, voir toughday.yaml configuration et exemples de configuration yaml dans les sections ci-dessous.

Ajout d’un test adding-a-new-test

Si vous ne voulez pas utiliser la suite toughday par défaut, vous pouvez ajouter un test de votre choix en utilisant le paramètre add. Les exemples ci-dessous montrent comment ajouter le test CreateAssetTreeTest en utilisant des paramètres de ligne de commande ou un fichier de configuration yaml.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest

Ajout de plusieurs instances du même test adding-multiple-instances-of-the-same-test

Vous pouvez également ajouter et exécuter plusieurs instances du même test, mais chaque instance doit avoir un nom unique. Les exemples ci-dessous montrent comment ajouter deux instances du même test en utilisant des paramètres de ligne de commande ou un fichier de configuration yaml.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest
    properties:
      name : FirstAssetTree
  - add : CreateAssetTreeTest
    properties:
      name : SecondAssetTree

Modification des propriétés de test changing-the-test-properties

Si vous devez modifier une ou plusieurs propriétés de test, vous pouvez ajouter cette propriété à la ligne de commande ou au fichier de configuration yaml. Pour voir toutes les propriétés de test disponibles, ajoutez le paramètre --help <TestClass/PublisherClass> à la ligne de commande, par exemple :

java -jar toughday2.jar --help CreatePageTreeTest

Gardez à l’esprit que les fichiers de configuration yaml écraseront les paramètres par défaut de Tough Day 2 et que les paramètres de ligne de commande remplaceront les fichiers de configuration et les valeurs par défaut.

Les exemples ci-dessous montrent comment modifier la propriété template pour le test CreatePageTreeTest au moyen des paramètres de ligne de commande ou d’un fichier de configuration yaml.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
tests:
  - add : CreatePageTreeTest
    properties:
      template : /conf/toughday-templates/settings/wcm/templates/toughday-template

Utilisation de suites de tests prédéfinies working-with-predefined-test-suites

Les exemples ci-dessous montrent comment ajouter un test à une suite prédéfinie et reconfigurer et exclure un test existant d’une suite prédéfinie.

Vous pouvez ajouter un nouveau test à une suite prédéfinie en utilisant le paramètre add et en spécifiant la suite prédéfinie ciblée.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
  suite : toughday
tests:
  - add : CreatePageTreeTest

Les tests existants d’une suite donnée peuvent également être reconfigurés à l’aide du paramètre config. Notez que vous devez également spécifier le nom de la suite et le nom réel du test (pas le nom de la classe de test). Le nom du test est disponible dans la propriété name de la classe de test. Pour savoir comment retrouver les propriétés de test, lisez la section Modification des propriétés de test.

Dans l’exemple ci-dessous, le titre de la ressource par défaut pour CreatePageTreeTest (nommé UploadAsset) est remplacé par « NewAsset ».

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
  suite : toughday
tests:
  - config : UploadAsset
    properties :
      title : NewAsset

En outre, vous pouvez également supprimer les tests des suites prédéfinies ou des éditeurs de la configuration par défaut à l’aide du paramètre exclude. Notez que vous devez également spécifier le nom de la suite et le nom réel du test (pas le nom de la class de test). Le nom du test est disponible dans la propriété name de la classe de test. Dans l’exemple ci-dessous, le test CreatePageTreeTest (nommé UploadAsset) est supprimé de la suite toughday.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset

En utilisant un fichier de configuration yaml :

globals:
  host : localhost
  suite : toughday
tests:
  - exclude : UploadAsset

Modes d’exécution run-modes

Tough Day 2 peut fonctionner dans l’un des modes suivants : normal et charge constante.

Le mode d’exécution normal présente deux paramètres :

  • concurrency : représente le nombre de threads que Tough Day 2 crée pour l’exécution du test. Sur ces threads, les tests sont exécutés jusqu’à ce que la durée soit écoulée ou qu’il n’y ait plus de tests à exécuter.

  • waittime : temps d’attente entre deux exécutions de test consécutives sur le même thread. La valeur doit être exprimée en millisecondes.

L’exemple ci-dessous montre comment ajouter les paramètres à l’aide de la ligne de commande :

java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20

ou en utilisant un fichier de configuration yaml :

runmode:
  type : normal
  waittime : 300
  concurrency : 200

Le mode d’exécution charge constante diffère du mode d’exécution normal dans la mesure où il génère un nombre constant d’exécutions de tests lancés, plutôt qu’un nombre constant de threads. Vous pouvez définir la charge en utilisant le paramètre du mode d’exécution du même nom.

Sélection de test test-selection

Le processus de sélection de test est le même pour les deux modes d’exécution et il se présente comme suit : tous les tests ont une propriété weight qui détermine la probabilité d’exécution dans un thread. Prenons l’exemple de deux tests, l’un avec une pondération de 5 et l’autre de 10. Dans ce cas, ce dernier a deux fois plus de chance d’être exécuté que le premier.

De plus, les tests peuvent avoir une propriété count, ce qui limite le nombre d’exécutions à un nombre donné. Une fois ce nombre atteint, aucune autre exécution du test n’aura lieu. Toutes les instances de test en cours d’exécution se terminent selon leur configuration. L'exemple suivant montre comment ajouter ces paramètres en ligne de commande ou à l'aide d'un fichier de configuration yaml.

java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest weight=5 --add CreatePageTreeTest weight=10 count=100 --runmode=normal concurrency=20

ou

- add : CreateAssetTreeTest
    properties :
      name : UploadAsset
      weight : 5
      base : 3
      foldertitle : IAmAFolder
      assettitle : IAmAnAsset
      count : 100
NOTE
En raison d’exécutions parallèles, le nombre réel d’exécutions de test ne correspond pas exactement à celui configuré dans le paramètre count. Attendez-vous à un écart proportionnel au nombre de threads simultanément en cours d’exécution (contrôlé par le concurrency parameter).

Exécution d’essai dry-run

Une analyse à sec étudie toutes les entrées données (paramètres de ligne de commande ou fichiers de configuration), les fusionne avec les valeurs par défaut, puis affiche les résultats. Il n’exécute aucun des tests.

java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true

Sortie output

Tough Day 2 génère à la fois des métriques de test et des journaux. Pour plus de détails, lisez les sections suivantes.

Mesures de test test-metrics

Tough Day 2 fait actuellement état de 9 métriques de test que vous pouvez évaluer. Mesures avec la variable * Les symboles ne sont signalés qu’après des exécutions réussies :

Nom
Description
Timestamp
Horodatage de la dernière exécution de test terminée.
Réussite
Nombre d’exécutions réussies.
Échec
Nombre d’exécutions ayant échoué.
Min*
Durée d’exécution de test la plus courte.
Max*
Durée d’exécution de test la plus longue.
Médiane*
Durée médiane calculée de toutes les exécutions de test.
Average*
Durée moyenne calculée de toutes les exécutions de test.
StdDev*
Écart type.
90p*
90e percentile
99p*
99e percentile
99.9p*
99,9e percentile
Real Throup *
Nombre d’exécutions divisé par le temps d’exécution écoulé.

Ces mesures sont écrites à l’aide d’éditeurs qui peuvent être ajoutés avec le paramètre add (comme pour l’ajout de tests). Actuellement, il existe deux options :

  • CSVPublisher  : émet un fichier CSV.
  • ConsolePublisher  : la sortie est affichée dans la console.

Par défaut, les deux éditeurs sont activés.

En outre, il existe deux modes de génération des mesures :

  • Le mode de publication simple fait état des résultats depuis le début de l’exécution jusqu’au moment de leur publication.
  • Le mode de publication d’intervalle publie les résultats selon un intervalle de temps donné. Vous pouvez définir cet intervalle avec le paramètre interval du mode de publication.

L’exemple suivant montre comment configurer le paramètre intervalsau moyen de la ligne de commande ou d’un fichier de configuration yaml.

En utilisant les paramètres de ligne de commande :

java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s

En utilisant un fichier de configuration yaml :

publishmode:
     type : intervals
     interval : 10s
     tests:
        -add : CreatePageTreeTest

Journalisation logging

Tough Day 2 crée un dossier .logs dans le répertoire où vous avez exécuté Tough Day 2. Ce dossier contient deux types de journaux :

  • toughday.log: contient des messages liés à l’état de l’application, des informations de débogage et des messages globaux.
  • toughday_<testname>.log: messages liés au test spécifié.

Les journaux ne sont pas remplacés, les exécutions subséquentes ajoutent des messages aux journaux existants. Les journaux ont plusieurs niveaux. Pour plus d’informations, consultez la section [loglevel parameter](/docs/experience-manager-64/developing/testing/tough-day.md#global-parameters).

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e