Tough Day 2 ist eine Anwendung, mit der Sie die Grenzen Ihrer AEM testen können. Sie können ihn direkt mit der standardmäßigen Test-Suite ausführen oder an Ihre Testanforderungen anpassen. In dieser Aufnahme sehen Sie eine Präsentation der Anwendung.
Laden Sie die aktuelle Version von Tough Day 2 aus dem Adobe-Repository herunter. Nachdem Sie die Anwendung heruntergeladen haben, können Sie sie sofort ausführen, indem Sie den Parameter host
angeben. Im folgenden Beispiel wird die AEM-Instanz lokal ausgeführt, sodass der Wert localhost
verwendet wird:
java -jar toughday2.jar --host=localhost
Die Standard-Suite, die nach dem Hinzufügen des Parameters ausgeführt wird, heißt toughday
. Sie enthält die folgenden Anwendungsfälle:
Die Suite enthält 15 Prozent Schreibaktionen und 85 Prozent Leseaktionen.
Um die Suite-Tests auszuführen, installiert Tough Day 2 das Standard-Inhaltspaket. Dies lässt sich vermeiden, indem Sie den Parameter installsamplecontent
auf false
setzen. Denken Sie jedoch daran, dass Sie auch die Standardpfade für die Tests ändern sollten, die Sie ausführen möchten. Wenn die JAR-Datei ohne Parameter ausgeführt wird, zeigt Tough Day 2 die Hilfeinformationen an.
Als allgemeine Regel können Sie die Anwendung verwenden, indem Sie diesem Muster folgen:
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish] [<global arguments> | <actions> | --runmode | --publishmode]
Bei Tough Day 2 gibt es keinen Bereinigungsschritt. Wir empfehlen daher, Tough Day 2 auf einer geklonten Staging-Instanz auszuführen, nicht auf der Hauptproduktionsinstanz. Die Staging-Instanz sollte nach den Tests nicht mehr genutzt werden.
Tough Day 2 bietet zahlreiche Hilfeoptionen, auf die Sie über die Befehlszeile zugreifen können. Beispiel:
java -jar toughday2.jar --help_full
In der nachfolgenden Tabelle finden Sie die relevanten Hilfeparameter.
Parameter | Beschreibung | Beispiel |
--help | Druckt globale Informationen aus, z. B.: die verfügbaren Aktionen, vordefinierten Suites, Ausführungsmodi und globalen Parameter. | |
—help_publish | Druckt alle verfügbaren Herausgeber aus. | |
—help_tests | Druckt die Testklassen und ihre Beschreibung. | |
—help_full | Druckt alle oben genannten Elemente sowie Tests, Herausgeber und Suite-Komponenten. | |
—help —runmode/publishmode type=<mode> | Listen enthalten Informationen zum angegebenen Ausführungsmodus oder Veröffentlichungsmodus. | java -jar toughday2.jar —help —runmode type=conantload java -jar toughday2.jar —help —publishmode type=interval |
—help —suite=<SuiteName> | Liste aller Tests einer bestimmten Suite und ihrer jeweiligen konfigurierbaren Eigenschaften. | java -jar toughday2.jar —help —suite=get_tests |
—help —tag=<Tag> | Liste aller Elemente mit dem angegebenen Tag. |
java -jar toughday2.jar —help —tag=publish |
—help <TestClass/PublisherClass> | Liste aller konfigurierbaren Eigenschaften für den jeweiligen Test oder Herausgeber. |
java -jar toughday2.jar —help UploadPDFTest java -jar toughday2.jar —help CSVPublisher |
Tough Day 2 bietet globale Parameter, die die Testumgebung festlegen oder ändern. Dazu gehören der Ziel-Host, die Portnummer, das verwendete Protokoll, Benutzer und Kennwort für die Instanz usw. Beispiel:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
Nachfolgend finden Sie alle relevanten Parameter:
Parameter | Beschreibung | Standardwert | Mögliche Werte |
---|---|---|---|
--installsamplecontent=<Val> |
Installieren oder überspringen Sie das Standard-Inhaltspaket für Tag 2. | true | „true“ oder „false“ |
--protocol=<Val> |
Das für den Host verwendete Protokoll. | http | http oder https |
--host=<Val> |
Der Hostname oder die IP-Adresse, die als Ziel verwendet werden soll. | ||
--port=<Val> |
Der Anschluss des Hosts. | 4502 | |
--user=<Val> |
Der Benutzername für die Instanz. | admin | |
--password=<Val> |
Kennwort für den angegebenen Benutzer. | admin | |
--duration=<Val> |
Dauer der Tests. Kann in (s)Sekunden, (m)Minuten, (h)unseren und (d)Tagen ausgedrückt werden. | 1d | |
--timeout=<Val> |
Wie lange ein Test ausgeführt wird, bevor er unterbrochen und als fehlgeschlagen markiert wird. In Sekunden angegeben. | 180 | |
--suite=<Val> |
Der Wert kann eine oder eine Liste (durch Kommas getrennt) vordefinierter Testsuiten sein. | toughday | |
--configfile=<Val> |
Die zielgerichtete yaml-Konfigurationsdatei. | ||
--contextpath=<Val> |
Kontextpfad der Instanz. | ||
--loglevel=<Val> |
Die Protokollierungsstufe für die Tough Day 2-Engine. | INFO | ALL, DEBUG, INFO, WARN, FEHLER, FATAL, AUS |
--dryrun=<Val> |
Wenn "true", wird die resultierende Konfiguration gedruckt und es werden keine Tests ausgeführt. | false | „true“ oder „false“ |
Die Anpassung erfolgt wahlweise über Befehlszeilenparameter oder YAML-Konfigurationsdateien. Konfigurationsdateien werden in der Regel für umfangreiche angepasste Suites verwendet. Sie überschreiben die Standardparameter von Tough Day 2. Befehlszeilenparameter überschreiben sowohl Konfigurationsdateien als auch Standardparameter.
Die einzige Möglichkeit, eine Testkonfiguration zu speichern, besteht darin, sie in das YAML-Format zu kopieren. Weitere Informationen finden Sie in dieser toughday.yaml Konfiguration und in den Beispielen für die yaml-Konfiguration in den folgenden Abschnitten.
Wenn Sie die standardmäßige toughday
-Suite nicht verwenden möchten, können Sie mit dem Parameter add
einen Test Ihrer Wahl hinzufügen. Die folgenden Beispiele zeigen, wie Sie den Test CreateAssetTreeTest
mit Befehlszeilenparametern oder mit einer YAML-Konfigurationsdatei hinzufügen.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
Sie können auch mehrere Instanzen desselben Tests hinzufügen und ausführen. Dabei muss jedoch jede Instanz einen eindeutigen Namen aufweisen. Die folgenden Beispiele zeigen, wie Sie zwei Instanzen desselben Tests mit Befehlszeilenparametern oder mit einer YAML-Konfigurationsdatei hinzufügen.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
properties:
name : FirstAssetTree
- add : CreateAssetTreeTest
properties:
name : SecondAssetTree
Wenn Sie eine Testeigenschaft (oder mehrere) ändern müssen, können Sie diese Eigenschaft(en) zur Befehlszeile oder zur YAML-Konfigurationsdatei hinzufügen. Um alle verfügbaren Testeigenschaften anzuzeigen, fügen Sie der Befehlszeile den Parameter --help <TestClass/PublisherClass>
hinzu. Beispiel:
java -jar toughday2.jar --help CreatePageTreeTest
Beachten Sie, dass die YAML-Konfigurationsdateien die Standardparameter von Tough Day 2 überschreiben und Befehlszeilenparameter sowohl die Konfigurationsdateien als auch die Standardparameter überschreiben.
Die folgenden Beispiele zeigen, wie die template
-Eigenschaft für den CreatePageTreeTest
-Test entweder mithilfe von Befehlszeilenparametern oder einer yaml-Konfigurationsdatei geändert wird.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
tests:
- add : CreatePageTreeTest
properties:
template : /conf/toughday-templates/settings/wcm/templates/toughday-template
Die folgenden Beispiele zeigen, wie Sie einen Test zu einer vordefinierten Suite hinzufügen und einen vorhandenen Test neu konfigurieren und aus einer vordefinierten Suite ausschließen.
Um einen neuen Test zu einer vordefinierten Suite hinzuzufügen, verwenden Sie den Parameter add
und geben die gewünschte Suite an.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
Bestehende Tests in einer bestimmten Suite können auch mit dem Parameter config
* *neu konfiguriert werden. Bitte beachten Sie, dass Sie auch den Namen der Suite und den tatsächlichen Namen des Tests angeben müssen (nicht den Namen der Testklasse). Den Testnamen finden Sie in der Eigenschaft name
der Testklasse. Weitere Informationen zum Finden von Testeigenschaften finden Sie im Abschnitt Ändern von Testeigenschaften.
Im Beispiel unten wird der standardmäßige Asset-Titel für CreatePageTreeTest
(mit dem Namen UploadAsset
) in "NewAsset"geändert.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
suite : toughday
tests:
- config : UploadAsset
properties :
title : NewAsset
Außerdem können Sie auch Tests aus vordefinierten Suites oder Herausgebern von der Standardkonfiguration entfernen. Dazu dient der Parameter exclude
. Bitte beachten Sie, dass Sie auch den Namen der Suite und den tatsächlichen Namen des Tests angeben müssen (nicht den Namen des Tests C lass
). Sie können den Testnamen in der Eigenschaft name
der Testklasse suchen. Im folgenden Beispiel wird der CreatePageTreeTest
-Test (mit dem Namen UploadAsset
) aus der Toughday Suite entfernt.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
Mit einer YAML-Konfigurationsdatei:
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
Tag 2 kann in einem der folgenden Modi ausgeführt werden: normal und Konstantenlast.
Der Ausführungsmodus normal hat zwei Parameter:
concurrency
- Parallelität stellt die Anzahl der Threads dar, die Tough Day 2 zur Testausführung erstellen wird. Auf diesen Threads werden die Tests ausgeführt, bis entweder die Dauer abgelaufen ist oder es keine weiteren Tests zur Durchführung mehr gibt.
waittime
– Dieser Parameter legt die Wartezeit zwischen zwei aufeinanderfolgenden Testausführungen auf demselben Thread fest. Der Wert muss in Millisekunden angegeben werden.
Das folgende Beispiel zeigt, wie Sie die Parameter hinzufügen – mit der Befehlszeile:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
oder mit einer YAML-Konfigurationsdatei:
runmode:
type : normal
waittime : 300
concurrency : 200
Der Ausführungsmodus Konstante Last unterscheidet sich vom normalen Ausführungsmodus, indem eine konstante Anzahl von gestarteten Testausführungen statt einer konstanten Anzahl von Threads generiert wird. Sie können die Last mit dem Parameter run mode mit demselben Namen festlegen.
Der Testauswahlprozess ist für beide Ausführungsmodi gleich und läuft wie folgt ab: alle Tests haben eine weight
-Eigenschaft, die die Wahrscheinlichkeit der Ausführung in einem Thread bestimmt. Wenn es z. B. zwei Tests gibt, einen mit dem „weight“-Wert 5 und einen mit dem „weight“-Wert 10, ist die Wahrscheinlichkeit der Ausführung bei dem Test mit dem Wert 10 doppelt so hoch wie bei dem anderen Test.
Darüber hinaus können Tests über eine count
-Eigenschaft verfügen, die die Anzahl der Hinrichtungen auf eine bestimmte Zahl beschränkt. Wenn diese Anzahl erreicht ist, finden keine weiteren Testausführungen mehr statt. Alle Testinstanzen, die bereits ausgeführt werden, beenden die Ausführung wie konfiguriert. Das folgende Beispiel zeigt, wie Sie diese Parameter mit der Befehlszeile oder mit einer YAML-Konfigurationsdatei hinzufügen.
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest weight=5 --add CreatePageTreeTest weight=10 count=100 --runmode=normal concurrency=20
oder
- add : CreateAssetTreeTest
properties :
name : UploadAsset
weight : 5
base : 3
foldertitle : IAmAFolder
assettitle : IAmAnAsset
count : 100
Aufgrund der parallelen Ausführung ist die tatsächliche Anzahl der Testläufe nicht exakt der im Parameter count
konfigurierte Betrag. Eine Abweichung ist proportional zur Anzahl der laufenden Threads (gesteuert durch concurrency parameter
).
Ein Probelauf analysiert alle Eingaben (Befehlszeilenparameter oder Konfigurationsdateien), führt sie mit den Standardwerten zusammen und gibt die Ergebnisse aus. Er führt keinen Test durch.
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
Tough Day 2 gibt Testmetriken und -protokolle aus. Weitere Informationen finden Sie in den folgenden Abschnitten.
Tough Day 2 meldet derzeit neun Testmetriken, die Sie auswerten können. Metriken mit dem Symbol * werden nur nach erfolgreichen Ausführung gemeldet:
Name | Beschreibung |
---|---|
Timestamp | Zeitstempel des letzten abgeschlossenen Testlaufs. |
Bestanden | Anzahl der erfolgreichen Ausführung. |
Fehlgeschlagen | Anzahl der fehlgeschlagenen Ausführung. |
Min* | Niedrigste Dauer der Testausführung. |
Max* | Höchstdauer der Testausführung. |
Median* | Berechnete mittlere Dauer aller Testausführungen. |
Average* | Berechnete durchschnittliche Dauer aller Testausführungen. |
StdDev* | Die Standardabweichung. |
90p* | 90 Perzentil. |
99p* | 99 Perzentil. |
99.9p* | 99,9 Perzentil. |
Real Throughput & amp;ast; | Anzahl der Ausführung geteilt durch die verstrichene Ausführungszeit. |
Diese Metriken werden mithilfe von Herausgebern geschrieben, die mit dem Parameter add
hinzugefügt werden können (ähnlich wie beim Hinzufügen von Tests). Aktuell gibt es zwei Optionen:
Standardmäßig werden beide Herausgeber aktiviert.
Zusätzlich gibt es zwei Modi, bei denen die Metriken gemeldet werden:
Das folgende Beispiel zeigt, wie Sie den Parameter intervals
mit der Befehlszeile oder mit einer YAML-Konfigurationsdatei konfigurieren.
Mit Befehlszeilenparametern:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
Mit einer YAML-Konfigurationsdatei:
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
Tough Day 2 erstellt einen Protokollordner im selben Verzeichnis, in dem Sie Tough Day 2 ausgeführt haben. Dieser Ordner enthält zwei Arten von Protokollen:
Die Protokolle werden nicht überschrieben. Bei nachfolgenden Testausführungen werden Meldungen an die vorhandenen Protokolle angehängt. Die Protokolle haben mehrere Ebenen, weitere Informationen finden Sie unter [loglevel parameter](/docs/experience-manager-64/sites-developing/tough-day.md#global-parameters)
.