Show Menu
TÓPICOS×

Dia difícil

O que é o Dia Difícil 2

O Dia 2 difícil é um aplicativo que permite que você teste os limites da sua instância do AEM. Pode ser executado fora da caixa com o conjunto de testes padrão ou pode ser configurado para atender às suas necessidades de teste. Você pode assistir a esta gravação para uma apresentação do aplicativo.

Como executar o Dia 2 difícil

Baixe a versão mais recente do Dia 2 difícil do Repositório da Adobe. Depois de baixar o aplicativo, você pode executá-lo fora da caixa fornecendo o host parâmetro. No exemplo a seguir, a instância do AEM é executada localmente para que o localhost valor seja usado:
java -jar toughday2.jar --host=localhost

O conjunto padrão que é executado após a adição dos parâmetros é nomeado toughday . Ele contém os seguintes casos de uso:
  • Criar páginas e cópias ao vivo para elas (incluindo rolluts)
  • Obter página inicial
  • Executar consultas no querybuilder
  • Criar hierarquias de ativos
  • Excluir ativos
O conjunto contém 15% de ações de gravação e 85% de ações de leitura.
Para executar os testes de conjunto, o Dia 2 difícil instalará seu pacote de conteúdo padrão. Isso pode ser evitado definindo o installsamplecontent parâmetro como false , mas lembre-se de que você também deve alterar os caminhos padrão para os testes que pretende executar. Se o jar for executado sem parâmetros, o Dia 2 difícil exibirá as informações de ajuda.
Como regra geral, você pode usar o aplicativo seguindo este padrão:
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish]  [<global arguments> | <actions> | --runmode | --publishmode]

O Dia 2 difícil não tem uma etapa de limpeza. Como resultado, é recomendável executar o Dia 2 difícil em uma instância de armazenamento temporário clonada e não na instância de produção principal. A instância de preparo deve ser removida após os testes.

Obter ajuda

O Dia 2 difícil oferece uma grande variedade de opções de ajuda que podem ser acessadas da linha de comando. Por exemplo:
java -jar toughday2.jar --help_full

Na tabela abaixo, você pode encontrar os parâmetros de ajuda relevantes.
Parâmetro Descrição Exemplo
--ajuda Imprime informações globais, por exemplo: as ações disponíveis, conjuntos predefinidos, modos de execução e parâmetros globais.
—help_publish Imprime todos os editores disponíveis.
—help_testing Imprime as classes de teste e sua descrição.
—help_full Imprime todas as opções acima, além de testes, editores e componentes do suite.
—help —runmode/publishmode type=<Modo> Lista informações sobre o modo de execução ou publicação especificado.
java -jar toughday2.jar —help —runmode type=constantload
java -jar toughday2.jar —help —publishmode type=intervalos
—help —suite=<SuiteName> Lista todos os testes de um determinado conjunto e suas respectivas propriedades configuráveis. java -jar toughday2.jar —help —suite=get_testing
—help —tag=<Tag> Lista todos os itens que têm a tag especificada. java -jar toughday2.jar —help —tag=publish
—help <TestClass/PublisherClass> Lista todas as propriedades configuráveis para o teste ou editor em questão.
java -jar toughday2.jar —help UploadPDFTest
java -jar toughday2.jar —help CSVPubeleer

Parâmetros globais

O Dia 2 difícil oferece parâmetros globais que definem ou alteram o ambiente para os testes. Eles incluem o host alvo, o número da porta, o protocolo usado, o usuário e a senha da instância e muito mais. Por exemplo:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true 

Você pode encontrar os parâmetros relevantes na lista abaixo:
Parâmetro
Descrição
Valor padrão
Valores possíveis
--installsamplecontent=<Val>
Instala ou ignora o pacote de conteúdo padrão do Dia difícil 2.
verdadeiro
true ou false
--protocol=<Val>
O protocolo usado para o host.
http
http ou https
--host=<Val>
O nome do host ou IP que será direcionado.
--port=<Val>
A porta do host.
4502
--user=<Val>
O nome de usuário da instância.
admin
--password=<Val>
Senha para o usuário em questão.
admin
--duration=<Val>
A duração dos testes. Pode ser expresso em ( s )segundos, ( m )minutos, ( h )horas e ( d )dias.
1d
--timeout=<Val>
Quanto tempo um teste será executado antes de ser interrompido e marcado como reprovado. Expresso em segundos.
180
--suite=<Val>
O valor pode ser uma ou uma lista (separada por vírgulas) de conjuntos de testes predefinidos.
dia difícil
--configfile=<Val>
O arquivo de configuração de email de destino.
--contextpath=<Val>
Caminho de contexto da instância.
--loglevel=<Val>
O nível de log do mecanismo do Dia 2 Difícil.
INFO
TUDO, DEPURAR, INFORMAÇÕES, AVISO, ERRO, FATAL, DESLIGADO
--dryrun=<Val>
Se verdadeiro, imprime a configuração resultante e não executa nenhum teste.
falso
true ou false

Personalização

A personalização pode ser alcançada de duas formas: parâmetros de linha de comando ou arquivos de configuração de exemplo. Os arquivos de configuração geralmente são usados para conjuntos personalizados grandes e substituirão os parâmetros padrão do Dia 2 difícil. Os parâmetros da linha de comando substituem os arquivos de configuração e os parâmetros padrão.
A única maneira de salvar uma configuração de teste é copiá-la em formato de vídeo. Para obter detalhes adicionais, consulte esta configuração toughday.yaml e os exemplos de configuração de yaml nas seções abaixo.

Adicionando um novo teste

Se você não quiser usar o toughday conjunto padrão, poderá adicionar um teste de sua escolha usando o add parâmetro. Os exemplos abaixo mostram como adicionar o teste CreateAssetTreeTest usando parâmetros de linha de comando ou um arquivo de configuração de modelo.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest

Adicionando várias instâncias do mesmo teste

Você também pode adicionar e executar várias instâncias do mesmo teste, mas cada instância deve ter um nome exclusivo. Os exemplos abaixo mostram como adicionar duas instâncias do mesmo teste usando parâmetros de linha de comando ou um arquivo de configuração de vídeo.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest
    properties:
      name : FirstAssetTree
  - add : CreateAssetTreeTest
    properties:
      name : SecondAssetTree

Alteração das propriedades de teste

Caso seja necessário alterar uma ou mais propriedades de teste, é possível adicionar essa propriedade à linha de comando ou ao arquivo de configuração de vídeo. Para ver todas as propriedades de teste disponíveis, adicione o --help <TestClass/PublisherClass> parâmetro à linha de comando, por exemplo:
java -jar toughday2.jar --help CreatePageTreeTest

Lembre-se de que os arquivos de configuração do Yaml substituirão os parâmetros padrão do Dia 2 difícil e os parâmetros da linha de comando substituirão os arquivos de configuração e os padrões.
Os exemplos abaixo mostram como alterar a template propriedade do CreatePageTreeTest teste usando os parâmetros da linha de comando ou um arquivo de configuração de modelo.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
tests:
  - add : CreatePageTreeTest
    properties:
      template : /conf/toughday-templates/settings/wcm/templates/toughday-template

Trabalhar com conjuntos de testes predefinidos

Os exemplos abaixo mostram como adicionar um teste a um conjunto predefinido e como reconfigurar e excluir um teste existente de um conjunto predefinido.
Você pode adicionar um novo teste a um conjunto predefinido usando o add parâmetro e especificando o conjunto predefinido direcionado.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
  suite : toughday
tests:
  - add : CreatePageTreeTest

Os testes existentes em um determinado conjunto também podem ser reconfigurados usando o parâmetro config * *. Observe que você também deve especificar o nome do conjunto e o nome real do teste (não o nome da classe de teste). Você pode encontrar o nome do teste na name propriedade da Classe de teste. Para obter mais detalhes sobre como localizar propriedades de teste, leia a seção Alterando propriedades de teste.
No exemplo abaixo, o título do ativo padrão CreatePageTreeTest (nomeado UploadAsset ) é alterado para "NewAsset".
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
  suite : toughday
tests:
  - config : UploadAsset
    properties :
      title : NewAsset 

Além disso, também é possível remover testes de conjuntos ou editores predefinidos da configuração padrão com o uso do exclude parâmetro. Observe que você também deve especificar o nome do conjunto e o nome real do teste (não o lass nome Test C). Você pode encontrar o nome do teste na name propriedade da classe de teste. No exemplo abaixo, o teste CreatePageTreeTest (nomeado UploadAsset ) é removido da suíte de dias de dura.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset

Ao usar um arquivo de configuração de email:
globals:
  host : localhost
  suite : toughday
tests:
  - exclude : UploadAsset 

Modos de execução

O Dia 2 difícil pode ser executado em um dos seguintes modos: carga normal e constante .
O modo de execução normal tem dois parâmetros:
  • concurrency - simultaneidade representa o número de threads que o Dia 2 difícil criará para execução de teste. Nesses processos, os testes serão executados até que a duração tenha terminado ou não haja mais testes para executar.
  • waittime - o tempo de espera entre duas execuções consecutivas de teste no mesmo thread. O valor deve ser expresso em milissegundos.
O exemplo abaixo mostra como adicionar os parâmetros usando a linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20

ou usando um arquivo de configuração de modelo:
runmode:
  type : normal
  waittime : 300
  concurrency : 200

O modo de execução de carga ​constante difere do modo de execução normal ao gerar um número constante de execuções de teste iniciadas, em vez de um número constante de threads. Você pode definir a carga usando o parâmetro de modo de execução com o mesmo nome.

Seleção de teste

O processo de seleção de teste é o mesmo para ambos os modos de execução e é assim: todos os testes têm uma weight propriedade, que determina a probabilidade de execução em um thread. Por exemplo, se tivermos dois testes, um com peso de 5 e outro com peso de 10, o último é duas vezes mais provável de ser executado do que o primeiro.
Além disso, os testes podem ter uma count propriedade, o que limita o número de execuções a um determinado número. Após esse número ser aprovado, nenhuma execução adicional do teste ocorrerá. Todas as instâncias de teste que já estão em execução concluirão a execução como configurado. O exemplo a seguir mostra como adicionar esses parâmetros na linha de comando ou usando um arquivo de configuração de modelo.
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

Devido a execuções paralelas, o número real de execuções de teste não será exatamente a quantidade configurada no count parâmetro. Esperar um desvio proporcional ao número de threads em execução (controlado pelo concurrency parameter ).

Execução de prática

Uma execução em seco analisa todas as entradas (parâmetros de linha de comando ou arquivos de configuração), mesclando-os com os padrões e, em seguida, gera os resultados. Não executa nenhum dos testes.
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true

Saída

O Dia 2 difícil gera métricas de teste e registros. Para obter mais detalhes, leia as seções a seguir.

Testar métricas

O Dia 2 difícil atualmente relata 9 métricas de teste que você pode avaliar. Métricas com o &ast; são reportados somente após execuções bem-sucedidas:
Nome
Descrição
Carimbo de data e hora
Carimbo de data e hora da última execução de teste concluída.
Aprovado
Número de execuções bem-sucedidas.
Falhou
Número de execuções com falha.
Min&ast;
Duração mais baixa da execução do teste.
Máx&ast;
A maior duração da execução do teste.
Median&ast;
Duração mediana calculada de todas as execuções de teste.
Méd&ast;
Duração média calculada de todas as execuções de teste.
StdDev&ast;
O desvio padrão.
90p&ast;
90%.
99p&ast;
99%.
99,9 p&ast;
99,9 percentil.
Taxa de transferência real &ast;
Número de execuções dividido pelo tempo de execução decorrido.
Essas métricas são gravadas com a ajuda de editores que podem ser adicionados com o add parâmetro (de forma semelhante à adição de testes). Atualmente, existem duas opções:
  • CSVPubeleer - a saída é um arquivo CSV.
  • ConsolePublisher - a saída é exibida no console.
Por padrão, ambos os editores estão habilitados.
Além disso, há dois modos nos quais as métricas são reportadas:
  • O modo de publicação simples - relata os resultados do início da execução até o ponto de publicação.
  • O modo de publicação de intervalos - relata os resultados em um determinado período. Você pode definir o período com o parâmetro de modo de publicação de intervalo .
O exemplo a seguir mostra como configurar o intervals parâmetro na linha de comando ou usando um arquivo de configuração de modelo.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s 

Ao usar um arquivo de configuração de email:
publishmode:
     type : intervals 
     interval : 10s 
     tests: 
        -add : CreatePageTreeTest

Registro

O Dia 2 difícil cria uma pasta de registros no mesmo diretório em que você executou o Dia 2 difícil. Esta pasta contém dois tipos de registros:
  • toughday.log : contém mensagens relacionadas ao estado do aplicativo, informações de depuração e mensagens globais.
  • toughday_<testname>.log : mensagens relacionadas ao teste especificado.
Os registros não são substituídos, as execuções subsequentes anexarão mensagens aos registros existentes. Os registros têm vários níveis, para obter mais informações, consulte o [loglevel parameter](/help/sites-developing/tough-day.md#global-parameters) .