Día duro

¿Qué es el Día duro 2?

"Día duro 2" es una aplicación que le permite probar los límites de su instancia de AEM. Se puede agotar con el grupo de pruebas predeterminado o se puede configurar para que se ajuste a sus necesidades de prueba. Puede ver esta grabación para ver una presentación de la aplicación.

Cómo ejecutar el día duro 2

Descargue la versión más reciente del Día duro 2 del Repositorio de Adobe. Después de descargar la aplicación, puede ejecutarla de forma predeterminada proporcionando el parámetro host. En el ejemplo siguiente, la instancia de AEM se ejecuta localmente para que se utilice el valor localhost:

java -jar toughday2.jar --host=localhost

El grupo predeterminado que se ejecuta después de agregar los parámetros se denomina toughday. Contiene los siguientes casos de uso:

  • Cree páginas y Live Copies para ellas (incluidos los lanzamientos)
  • Obtener página principal
  • Ejecutar consultas en querybuilder
  • Creación de jerarquías de recursos
  • Eliminar recursos

El grupo contiene acciones de escritura del 15 % y acciones de lectura del 85 %.

Para ejecutar las pruebas de grupo, el Día duro 2 instalará su paquete de contenido predeterminado. Esto se puede evitar configurando el parámetro installsamplecontenten false, pero recuerde que también debe cambiar las rutas predeterminadas para las pruebas que desee ejecutar. Si el tarro se ejecuta sin parámetros, el Día duro 2 muestra la información de ayuda.

Como regla general, puede utilizar la aplicación siguiendo este patrón:

java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish]  [<global arguments> | <actions> | --runmode | --publishmode]
NOTA

El duro Día 2 no tiene un paso de limpieza. Como resultado, se recomienda ejecutar el Día duro 2 en una instancia de ensayo clonada y no en la instancia de producción principal. La instancia de ensayo debe eliminarse después de las pruebas.

Ayuda

El Día duro 2 oferta una amplia gama de opciones de ayuda a las que se puede acceder desde la línea de comandos. Por ejemplo:

java -jar toughday2.jar --help_full

En la tabla siguiente, puede encontrar los parámetros de ayuda relevantes.

Parámetro Descripción Ejemplo
--ayuda Imprime la información global, por ejemplo: las acciones disponibles, los grupos predefinidos, los modos de ejecución y los parámetros globales.
—help_publish Imprime todos los editores disponibles.
—help_testing Imprime las clases de prueba y su descripción.
—help_full Imprime todo lo anterior, además de pruebas, editores y componentes de grupo.
—help —runmode/publishmode type=<Modo> Lista información sobre el modo de ejecución o publicación especificado.

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

java -jar toughday2.jar —help —publishmode type=periods

—help —suite=<nombreDeGrupo> Lista todas las pruebas de un conjunto determinado y sus respectivas propiedades configurables.
java -jar toughday2.jar —help —suite=get_testing
—help —tag=<Etiqueta>
Lista todos los elementos que tienen la etiqueta especificada.
java -jar toughday2.jar —help —tag=publish
—help <TestClass/PublisherClass>
Lista todas las propiedades configurables para la prueba o el publicador determinado.

java -jar toughday2.jar —help UploadPDFTest

java -jar toughday2.jar —help CSVPublisher

Parámetros globales

Día duro 2 oferta los parámetros globales que establecen o modifican el entorno de las pruebas. Entre ellos se incluyen el host de destino, el número de puerto, el protocolo utilizado, el usuario y la contraseña de la instancia y muchos más. Por ejemplo:

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

Puede encontrar los parámetros relevantes en la lista siguiente:

Parámetro Descripción Valor predeterminado Valores posibles
--installsamplecontent=<Val> Instala o omite el paquete de contenido predeterminado Día duro 2. verdadero true o false
--protocol=<Val> Protocolo utilizado para el host. http http o https
--host=<Val> El nombre de host o la dirección IP objetivo.
--port=<Val> El puerto del host. 4502
--user=<Val> El nombre de usuario de la instancia. administrador
--password=<Val> Contraseña para el usuario determinado. administrador
--duration=<Val> Duración de las pruebas. Puede expresarse en (s) segundos, (m) minutos, (h) horas y (d) días. 1d
--timeout=<Val> Duración de la prueba antes de que se interrumpa y se marque como fallida. Se expresa en segundos. 180
--suite=<Val> El valor puede ser uno o una lista (separada por comas) de conjuntos de pruebas predefinidos. toughday
--configfile=<Val> El archivo de configuración yaml de destino.
--contextpath=<Val> Ruta de contexto de la instancia.
--loglevel=<Val> Nivel de registro para el motor del Día duro 2. INFORMACIÓN TODOS, DEPURAR, INFORMACIÓN, ADVERTENCIA, ERROR, FATAL, DESACTIVADO
--dryrun=<Val> Si es true, imprime la configuración resultante y no ejecuta ninguna prueba. false true o false

Personalización

La personalización se puede lograr de dos maneras: parámetros de línea de comandos o archivos de configuración de yaml. Los archivos de configuración generalmente se utilizan para grupos personalizados de gran tamaño y anulan los parámetros predeterminados del Día duro 2. Los parámetros de la línea de comandos anulan tanto los archivos de configuración como los parámetros predeterminados.

La única manera de guardar una configuración de prueba es copiarla en formato yaml. Para obtener más información, consulte esta configuración toughday.yaml y los ejemplos de configuración yaml en las secciones siguientes.

Añadir una nueva prueba

Si no desea utilizar el grupo toughday predeterminado, puede agregar una prueba de su elección utilizando el parámetro add. Los ejemplos siguientes muestran cómo agregar la prueba CreateAssetTreeTest ya sea utilizando parámetros de línea de comandos o un archivo de configuración yaml.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

globals:
  host : localhost
tests:
  - add : CreateAssetTreeTest

Añadir instancias múltiples de la misma prueba

También puede agregar y ejecutar varias instancias de la misma prueba, pero cada instancia debe tener un nombre único. Los ejemplos siguientes muestran cómo agregar dos instancias de la misma prueba, ya sea mediante parámetros de línea de comandos o mediante un archivo de configuración yaml.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Cambio de las propiedades de prueba

En caso de que necesite cambiar una o varias de las propiedades de prueba, puede agregar esa propiedad a la línea de comandos o al archivo de configuración yaml. Para ver todas las propiedades de prueba disponibles, agregue el parámetro --help <TestClass/PublisherClass> a la línea de comandos, por ejemplo:

java -jar toughday2.jar --help CreatePageTreeTest

Tenga en cuenta que los archivos de configuración yaml sobrescribirán los parámetros predeterminados de Día difícil 2 y los parámetros de línea de comandos anularán tanto los archivos de configuración como los valores predeterminados.

Los ejemplos siguientes muestran cómo cambiar la propiedad template para la prueba CreatePageTreeTest ya sea mediante parámetros de línea de comandos o un archivo de configuración yaml.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Uso de grupos de pruebas predefinidos

Los ejemplos siguientes muestran cómo agregar una prueba a un grupo predefinido y cómo reconfigurar y excluir una prueba existente de un grupo predefinido.

Puede agregar una nueva prueba a un grupo predefinido utilizando el parámetro add y especificando el grupo predefinido de destino.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Las pruebas existentes en un grupo determinado también se pueden reconfigurar usando el parámetro a0/>. config Tenga en cuenta que también debe especificar el nombre del conjunto y el nombre real de la prueba (no el nombre de la clase de prueba). El nombre de la prueba se encuentra en la propiedad name de la clase de prueba. Para obtener más información sobre cómo encontrar las propiedades de prueba, lea la sección Cambio de las propiedades de prueba.

En el ejemplo siguiente, el título de recurso predeterminado para CreatePageTreeTest (denominado UploadAsset) se cambia a "NewAsset".

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Además, también puede eliminar pruebas de grupos o editores predefinidos de la configuración predeterminada con el uso del parámetro exclude. Tenga en cuenta que también debe especificar el nombre del conjunto y el nombre real de la prueba (no el nombre de la prueba C lass). Puede encontrar el nombre de la prueba en la propiedad name de la clase test. En el ejemplo siguiente, la prueba CreatePageTreeTest (denominada UploadAsset) se elimina del grupo toughday.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Ejecutar modos

El Día duro 2 se puede ejecutar en uno de los siguientes modos: carga constante y carga constante.

El modo de ejecución normal tiene dos parámetros:

  • concurrency - la concurrencia representa el número de subprocesos que el Día duro 2 creará para la ejecución de la prueba. En estos subprocesos, las pruebas se ejecutarán hasta que la duración se haya agotado o hasta que no haya más pruebas que ejecutar.

  • waittime - el tiempo de espera entre dos ejecuciones de prueba consecutivas en el mismo subproceso. El valor debe expresarse en milisegundos.

El ejemplo siguiente muestra cómo agregar los parámetros mediante la línea de comandos:

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

o utilizando un archivo de configuración yaml:

runmode:
  type : normal
  waittime : 300
  concurrency : 200

El modo de ejecución carga constante difiere del modo de ejecución normal al generar un número constante de ejecuciones de prueba iniciadas, en lugar de un número constante de subprocesos. Puede configurar la carga utilizando el parámetro de modo de ejecución con el mismo nombre.

Selección de prueba

El proceso de selección de la prueba es el mismo para ambos modos de ejecución y sigue este procedimiento: todas las pruebas tienen una propiedad weight, que determina la probabilidad de ejecución en un subproceso. Por ejemplo, si tenemos dos pruebas, una con un peso de 5 y otra con un peso de 10, es dos veces más probable que la segunda se ejecute que la primera.

Además, las pruebas pueden tener una propiedad count, que limita el número de ejecuciones a un número determinado. Después de superar este número, no se realizarán más ejecuciones de la prueba. Todas las instancias de prueba que ya se estén ejecutando finalizarán la ejecución según la configuración. En el siguiente ejemplo se muestra cómo agregar estos parámetros en la línea de comandos o mediante un archivo de configuración yaml.

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

o

- add : CreateAssetTreeTest
    properties :
      name : UploadAsset
      weight : 5
      base : 3
      foldertitle : IAmAFolder
      assettitle : IAmAnAsset
      count : 100
NOTA

Debido a las ejecuciones paralelas, el número real de ejecuciones de prueba no será exactamente la cantidad configurada en el parámetro count. Se espera una desviación proporcional al número de subprocesos en ejecución (controlados por concurrency parameter).

Simulacro

Una ejecución seca analiza toda la entrada dada (parámetros de línea de comandos o archivos de configuración), combinándola con los valores predeterminados y, a continuación, genera los resultados. No ejecuta ninguna de las pruebas.

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

Salida

El Día duro 2 genera tanto métricas de prueba como registros. Para obtener más información, lea las secciones siguientes.

Métricas de prueba

El Día duro 2 actualmente informa 9 métricas de prueba que puede evaluar. Las métricas con el símbolo * solo se informan después de ejecutarse correctamente:

Nombre Descripción
Marca de hora Marca de tiempo de la última ejecución de prueba finalizada.
Aprobado Número de ejecuciones correctas.
Error Número de ejecuciones fallidas.
Mínimo* Duración mínima de la ejecución de la prueba.
Máximo* Duración máxima de la ejecución de la prueba.
Mediana* Duración media calculada de todas las ejecuciones de prueba.
Promedio* Duración media calculada de todas las ejecuciones de prueba.
StdDev* La desviación estándar.
90p* 90 percentil.
99p* Percentil 99.
99,9p* Percentil 99,9.
Rendimiento real* Número de ejecuciones divididas por el tiempo de ejecución transcurrido.

Estas métricas se escriben con la ayuda de editores que se pueden agregar con el parámetro add (de manera similar a agregar pruebas). Actualmente, hay dos opciones:

  • CSVPublisher : el resultado es un archivo CSV.
  • ConsolePublisher : la salida se muestra en la consola.

De forma predeterminada, ambos editores están habilitados.

Además, existen dos modos en los que se informan las métricas:

  • El modo de publicación simple informa los resultados desde el comienzo de la ejecución hasta el punto de publicación.
  • El modo de publicación intervalos informa los resultados en un intervalo de tiempo determinado. Puede establecer el intervalo de tiempo con el parámetro del modo de publicación intervalo.

El siguiente ejemplo muestra cómo configurar el parámetro intervals en la línea de comandos o mediante un archivo de configuración yaml.

Mediante parámetros de línea de comandos:

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

Mediante un archivo de configuración yaml:

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

Registro

El Día duro 2 crea una carpeta de registros en el mismo directorio donde se ejecuta el Día duro 2. Esta carpeta contiene dos tipos de registros:

  • toughday.log: contiene mensajes relacionados con el estado de la aplicación, información de depuración y mensajes globales.
  • toughday_<testname>.log: mensajes relacionados con la prueba especificada.

Los registros no se sobrescriben, las ejecuciones posteriores anexarán mensajes a los registros existentes. Los registros tienen varios niveles; para obtener más información, consulte [loglevel parameter](/docs/experience-manager-65/sites-developing/tough-day.html?lang=es#global-parameters).

Ejemplo de uso

Problemas conocidos

Obtener archivo

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now