Giornata difficile tough-day

Che cos’è il giorno difficile 2 what-is-tough-day

"Tough Day 2" è un’applicazione che consente di sottoporre a test di stress i limiti dell’istanza di AEM. Può essere eseguita con la suite di test predefinita o configurata in base alle tue esigenze di test. Puoi guardare questa registrazione per una presentazione dell'applicazione.

CAUTION
Il Giorno 2 richiede Java™ 8.

Come eseguire duro giorno 2 how-to-run-tough-day

Scarica la versione più recente del secondo giorno rigido dall'archivio Adobe. Dopo aver scaricato l'applicazione, è possibile eseguirla automaticamente fornendo il parametro host. Nell'esempio seguente, l'istanza AEM viene eseguita localmente in modo da utilizzare il valore localhost:

java -jar toughday2.jar --host=localhost

La suite predefinita eseguita dopo l'aggiunta dei parametri è denominata toughday. Contiene i seguenti casi d’uso:

  • Crea pagine e Live Copy per esse (inclusi i rollout)
  • Ottieni homepage
  • Eseguire query in querybuilder
  • Creare gerarchie di risorse
  • Eliminare risorse

La suite contiene il 15% di azioni di scrittura e l’85% di azioni di lettura.

Per eseguire i test delle suite, il Giorno difficile 2 installerà il pacchetto di contenuti predefinito. È possibile evitare questo inconveniente impostando il parametro installsamplecontent su false. È tuttavia necessario modificare anche i percorsi predefiniti per i test che si desidera eseguire. Se il file jar viene eseguito senza parametri, nel secondo giorno vengono visualizzate le informazioni della Guida.

Di regola, puoi utilizzare l’applicazione seguendo questo pattern:

java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish]  [<global arguments> | <actions> | --runmode | --publishmode]
NOTE
Il Giorno 2 duro non ha un passaggio di pulizia. Di conseguenza, si consiglia di eseguire il Giorno 2 completo su un’istanza di staging clonata e non sull’istanza di produzione principale. L’istanza di staging deve essere rilasciata dopo i test.

Ottenimento della Guida getting-help

Duro Giorno 2 offre un'ampia gamma di opzioni di aiuto accessibili dalla riga di comando. Ad esempio:

java -jar toughday2.jar --help_full

Nella tabella seguente sono disponibili i parametri della Guida pertinenti.

Parametro
Descrizione
Esempio
—aiuto
Stampa informazioni globali, ad esempio le azioni disponibili, le suite predefinite, le modalità di esecuzione e i parametri globali.
—help_publish
Stampa tutti gli editori disponibili.
—help_tests
Stampa le classi di test e la relativa descrizione.
—help_full
Stampa tutte le informazioni precedenti, oltre a test, publisher e componenti delle suite.
—help —runmode/publishmode type=<Modalità>
Elenca le informazioni sulla modalità di esecuzione o di pubblicazione specificata.

Java™ -jar toughday2.jar —help —runmode type=constantload

Java™ -jar toughday2.jar —help —publishmode type=interval

—help —suite=<NomeSuite>
Elenca tutti i test di una determinata suite e le rispettive proprietà configurabili.
Java™ -jar toughday2.jar —help —suite=get_tests
—help —tag=<Tag>
Elenca tutti gli elementi con il tag specificato.
Java™ -jar toughday2.jar —help —tag=publish
—help <TestClass/PublisherClass>
Elenca tutte le proprietà configurabili per il test o l’editore specificato.

Java™ -jar toughday2.jar —help UploadPDFTest

Java™ -jar toughday2.jar —Aiuta CSVPublisher

Parametri globali global-parameters

Il secondo giorno difficile offre parametri globali che impostano o modificano l’ambiente per i test. Questi includono l’host di destinazione, il numero di porta, il protocollo utilizzato, l’utente e la password per l’istanza e molti altri. Ad esempio:

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

Puoi trovare i parametri rilevanti nell’elenco seguente:

Parametro
Descrizione
Valore predefinito
Valori Possibili
--installsamplecontent=<Val>
Installa o salta il pacchetto di contenuti predefinito per il secondo giorno.
vero
true o false
--protocol=<Val>
Protocollo utilizzato per l'host.
http
http o https
--host=<Val>
Il nome host o l’IP di destinazione.
--port=<Val>
La porta dell’host.
4502
--user=<Val>
Il nome utente dell’istanza.
admin
--password=<Val>
Password per l’utente specificato.
admin
--duration=<Val>
La durata dei test. Può essere espresso in s secondi, m minuti, h ore e d giorni.
1d
--timeout=<Val>
Per quanto tempo un test verrà eseguito prima di essere interrotto e contrassegnato come non riuscito. Espresso in secondi.
180
--suite=<Val>
Il valore può essere uno o un elenco (separato da virgole) di suite di test predefinite.
giornata difficile
--configfile=<Val>
Il file di configurazione yaml di destinazione.
--contextpath=<Val>
Percorso di contesto dell’istanza.
--loglevel=<Val>
Livello di registro per il motore Tough Day 2.
INFO
TUTTI, DEBUG, INFORMAZIONI, AVVERTENZA, ERRORE, IRREVERSIBILE, DISATTIVATO
--dryrun=<Val>
Se true, stampa la configurazione risultante e non esegue alcun test.
false
true o false

Personalizzazione customizing

La personalizzazione può essere ottenuta in due modi: tramite parametri della riga di comando o file di configurazione yaml. I file di configurazione vengono utilizzati per le suite personalizzate di grandi dimensioni e sostituiscono i parametri predefiniti del giorno 2. I parametri della riga di comando sostituiscono sia i file di configurazione che i parametri predefiniti.

L’unico modo per salvare una configurazione di test è copiarla in formato yaml.

Aggiunta di un nuovo test adding-a-new-test

Se non desideri utilizzare la suite toughday predefinita, puoi aggiungere un test scegliendo il parametro add. Gli esempi seguenti mostrano come aggiungere il test CreateAssetTreeTest utilizzando i parametri della riga di comando o un file di configurazione yaml.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest

Aggiunta di più istanze dello stesso test adding-multiple-instances-of-the-same-test

Puoi anche aggiungere ed eseguire più istanze dello stesso test, ma ogni istanza deve avere un nome univoco. Gli esempi seguenti mostrano come aggiungere due istanze dello stesso test utilizzando parametri della riga di comando o un file di configurazione yaml.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

Modifica delle proprietà del test changing-the-test-properties

Se devi modificare una o più proprietà del test, puoi aggiungerle alla riga di comando o al file di configurazione yaml. Per visualizzare tutte le proprietà di test disponibili, aggiungere il parametro --help <TestClass/PublisherClass> alla riga di comando, ad esempio:

java -jar toughday2.jar --help CreatePageTreeTest

I file di configurazione yaml sovrascriveranno i parametri di default di Giorno 2 e i parametri della riga di comando sovrascriveranno sia i file di configurazione che i valori di default.

Negli esempi seguenti viene illustrato come modificare la proprietà template per il test CreatePageTreeTest utilizzando i parametri della riga di comando o un file di configurazione yaml.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

Utilizzo delle suite di test predefinite working-with-predefined-test-suites

Gli esempi seguenti mostrano come aggiungere un test a una suite predefinita e come riconfigurare ed escludere un test esistente da una suite predefinita.

È possibile aggiungere un nuovo test a una suite predefinita utilizzando il parametro add e specificando la suite predefinita di destinazione.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

I test esistenti in una determinata suite possono essere riconfigurati utilizzando il parametro config* *. Specifica anche il nome della suite e il nome effettivo del test (non il nome della classe di test). È possibile trovare il nome del test nella proprietà name della classe del test. Per ulteriori dettagli su come trovare le proprietà dei test, leggere la sezione Modifica delle proprietà dei test.

Nell'esempio seguente il titolo predefinito della risorsa per CreatePageTreeTest (denominato UploadAsset) viene modificato in "NewAsset".

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

È inoltre possibile rimuovere i test da suite o editori predefiniti dalla configurazione predefinita utilizzando il parametro exclude. Specificare inoltre il nome della suite e il nome effettivo del test (non il nome del test C lass). È possibile trovare il nome del test nella proprietà name della classe del test. Nell'esempio seguente, il test CreatePageTreeTest (denominato UploadAsset) viene rimosso dalla suite di giorni duri.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

Modalità di esecuzione run-modes

Il giorno 2 può essere eseguito in una delle seguenti modalità: normale e carico costante.

La modalità di esecuzione normale ha due parametri:

  • concurrency - la concorrenza rappresenta il numero di thread che verranno creati dal giorno 2 per l'esecuzione del test. Su questi thread, i test verranno eseguiti fino a quando la durata non è terminata o non sono presenti altri test da eseguire.

  • waittime: tempo di attesa tra due esecuzioni di test consecutive sullo stesso thread. Il valore deve essere espresso in millisecondi.

L’esempio seguente mostra come aggiungere i parametri utilizzando la riga di comando:

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

oppure utilizzando un file di configurazione yaml:

runmode:
  type : normal
  waittime : 300
  concurrency : 200

La modalità di esecuzione caricamento costante differisce dalla modalità di esecuzione normale in quanto genera un numero costante di esecuzioni di test avviate, anziché un numero costante di thread. È possibile impostare il carico utilizzando il parametro della modalità di esecuzione con lo stesso nome.

Selezione test test-selection

Il processo di selezione dei test è lo stesso per entrambe le modalità di esecuzione ed è il seguente: tutti i test hanno una proprietà weight, che determina la probabilità di esecuzione in un thread. Ad esempio, se disponi di due test, uno con un peso di 5 e l’altro con un peso di 10, è due volte più probabile che venga eseguito il secondo.

Inoltre, i test possono avere una proprietà count, che limita il numero di esecuzioni a un determinato numero. Una volta passato questo numero, non si verificheranno ulteriori esecuzioni del test. Tutte le istanze di test già in esecuzione finiranno l’esecuzione come configurato. Nell'esempio seguente viene illustrato come aggiungere questi parametri nella riga di comando o utilizzando un file di configurazione yaml.

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

oppure

- add : CreateAssetTreeTest
    properties :
      name : UploadAsset
      weight : 5
      base : 3
      foldertitle : IAmAFolder
      assettitle : IAmAnAsset
      count : 100
NOTE
A causa di esecuzioni parallele, il numero effettivo di esecuzioni dei test non corrisponderà esattamente alla quantità configurata nel parametro count. È prevista una deviazione proporzionale al numero di thread in esecuzione (controllati da concurrency parameter).

Prova dry-run

Un'esecuzione a secco analizza tutti gli input forniti (parametri della riga di comando o file di configurazione), unendoli con i valori predefiniti e quindi restituisce i risultati. Non esegue nessuno dei test.

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

Output output

Il secondo giorno genera sia metriche di test che registri. Per ulteriori informazioni, leggere le sezioni seguenti.

Metriche di test test-metrics

Duro Giorno 2 attualmente riporta nove metriche di test che è possibile valutare. Le metriche con il simbolo * vengono segnalate solo dopo esecuzioni riuscite:

Nome
Descrizione
Marca temporale
Timestamp dell’ultima esecuzione di test completata.
Superata
Numero di esecuzioni riuscite.
Non riuscito
Numero di esecuzioni non riuscite.
Min*
Durata minima dell’esecuzione del test.
Max*
Durata massima dell’esecuzione del test.
Mediana*
Durata mediana calcolata di tutte le esecuzioni di test.
Media*
Durata media calcolata di tutte le esecuzioni di test.
DevStandard*
La deviazione standard.
90p*
90 percentile.
99p*
99 percentile.
99,9p*
99,9 percentile.
Throughput reale*
Numero di esecuzioni diviso per il tempo di esecuzione trascorso.

Queste metriche vengono scritte con l'aiuto di editori che possono essere aggiunti con il parametro add (in modo simile all'aggiunta di test). Attualmente sono disponibili due opzioni:

  • CSVPublisher - l'output è un file CSV.
  • ConsolePublisher - l'output viene visualizzato nella console.

Per impostazione predefinita, entrambi gli editori sono abilitati.

Inoltre, esistono due modalità in cui vengono riportate le metriche:

  • Modalità di pubblicazione simple: riporta i risultati dall'inizio dell'esecuzione fino al punto di pubblicazione.
  • Modalità di pubblicazione intervalli: riporta i risultati in un determinato intervallo di tempo. È possibile impostare l'intervallo di tempo con il parametro della modalità di pubblicazione interval.

Nell'esempio seguente viene illustrato come configurare il parametro intervals nella riga di comando o utilizzando un file di configurazione yaml.

Utilizzando i parametri della riga di comando:

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

Utilizzando un file di configurazione yaml:

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

Registrazione logging

Il giorno 2 crea una cartella dei registri nella stessa directory in cui è stato eseguito il giorno 2. Questa cartella contiene due tipi di registri:

  • toughday.log: contiene messaggi relativi allo stato dell'applicazione, alle informazioni di debug e ai messaggi globali.
  • toughday_<testname>.log: messaggi relativi al test specificato.

I registri non vengono sovrascritti, le esecuzioni successive aggiungono i messaggi ai registri esistenti. I registri hanno diversi livelli. Per ulteriori informazioni, vedere il parametro loglevel..

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2