Data Validation Testing - dcastrog2uniandes/Ghost GitHub Wiki

Data Validation

Estrategias de generación de datos

De acuerdo con los requerimientos para evaluar los mecanismos de validación de datos en los formularios y el manejo de entradas inválidas, se han modificado los escenarios iniciales para soportar la generación de datos de manera asistida usando la librería faker.js. También se ha definido una función propia que genera datos aleatorios la cual se denominó generateString(lenght) la cual recibie como parametro la longitud de la cadena resultante.

A-priori

Se generaron diferentes archivos con datos aletorios usando la aplicacion Mockaroo dependiendo de la estructura de la funcionalidad a probar. Estos archivos están previamente cargados y se leen al momento de ejecutar las pruebas.

Aletorio

Se genera una sola tupla de datos aletorios dependiendo del tipo de datos requerido usando la libreria faker.js y se va haciendo uso de esta a medida que se ejecuta la prueba (online)

(pseudo) aleatorio dinámico

Se define un objeto con todos los atributos necesarios dependiendo de la información del formulario. Estos atributos se les asignan datos aletorios usando la libreria faker.js y luego se hace un llamado a cada atributo cuando sea solicitado.

Ejecución de las pruebas

Los scripts que contienen las 120 pruebas se encuentra en la ruta Ghost/Cypress/cypress/integration/semana_7 . Para poder ejecutar las pruebas, recuerde que previamente debe haber instalado Ghost en su versión 4.44 y Cypress de manera global.

1. Instalar Ghost

Para instalar Ghost puede seguir las instrucciones que se encuentran en el archivo Readme.MD de este repositorio. Sin embargo, a continuación se resumen dichos pasos:

1.1. Instalar Docker Desktop

Descargue el ejecutable desde la página oficial y siga las instrucciones de acuerdo a su sistema operativo.

1.2. Configurar la instacia de Ghost en Docker

Cree una carpeta en el lugar que desee en su espacio local e incluya un archivo llamado docker-compose.yaml con el siguiente código:

version: "3.9"
services:     
  ghostv44:
    image: ghost:4.44.0
    volumes:
      - ./g4:/var/lib/ghost/content
    restart: always  
    ports:
    - 3002:2368
    expose:
      - 3002

1.3. Desplegar el contenedor Docker

Desde la carpeta donde creó el archivo del paso anterior, ejecute el siguiente comando para desplegar el contenedor con la instancia de Ghost v4.44:

docker-compose up

Por favor, verifique que:

  • En Docker Desktop que se haya creado un contenedor con la instancia de Ghost corriendo en el puerto 3002
  • Compruebe en su navegador la correcta ejecución de Ghost: http://localhost:3002/ghost/

1.4. Configuración inicial de Ghost

  • La primera vez que corre Ghost de manera loca, debe crear el usuario administrador. Siga las instrucciones y por favor registre los siguientes datos: email: [email protected] contraseña: Mari123456
  • Inicie sesión y compruebe que puede acceder al dashboard de administración

2. Instalar Cypress

Recuerde que debe tener instalada una versión reciente de node. Ejecute desde la consola el siguiente comando:

npm install -g cypress

3. Instalar dependencias

Al nivel del archivo package.json, es decir, ubiquese en la ruta Ghost/Cypress/ y ejecute el siguiente comando:

npm install

Esto instalará fakerJs

4. Ejecutar las pruebas

Ubiquese en la carpeta raíz donde clonó este repositorio y elimine la carpeta escenarios/ que se encuentra en Ghost/Cypress/cypress/integration/. Esta carpeta contiene los escenarios para las pruebas VRT que no son necesarios para este caso.

Finalmente, para ejecutar las pruebas tiene las siguientes dos opciones:

4.1. Modo headless

Ubiquese en la carpeta carpeta Ghost/Cypress/ y ejecute el siguiente comando:

cypress run --headless

Esto ejecutará todas las pruebas y al final arrojará el resultado en la consola donde ejecutó el comando

4.2. Modo aplicación

ejecute el siguiente comando desde cualquier ubicación:

cypress open

Esto abrirá un cliente de Cypress en el que podrá seleccionar la carpeta que contiene los scripts con las pruebas, seleccione la carpeta Ghost/Cypress/cypress/integration/semana_7 y verá que se listan todos los archivos que contienen los scripts con los escenarios, seleccione el que desea ejecutar.

Escenarios

A continuacion se relacionan y detallan los escenarios implementados en la herramienta Cypress. Todos los escenarios incluyen realizar login y navegar hacia la funcionalidad

Escenario pool de datos Enfoque Descripcion Nombre archivo
1 Aleatorio positivo Crear un nuevo miembro, ir al listado de miembros, seleccionarlo del listado y eliminarlo escenario1.spec.js
2 Aleatorio positivo Ir al perfil, modificar los datos, guardar y verificar los cambios desde el listado de miembros escenario2.spec.js
3 Aleatorio positivo Crear nueva pagina, ir al listado de paginas, seleccionarla y eliminarla. escenario3.spec.js
4 Aleatorio positivo Ir a listado de tags, crer uno nuevo, ver que aparezca en el listado y seleccionarlo para ver el detalle. escenario4.spec.js
5 Aleatorio positivo Ir a configuración, ajustes generales y cambiar el tema del sitio. Ir a la pagina principal para ver el cambio. escenario5.spec.js
6 Aleatorio Negativo Crear un nuevo miembro con un email ya existente escenario6.spec.js
7 Aleatorio Negativo Cambiar password usuario admin que excede el limite de caracteres (60), cerrar sesión e ingresar con la nueva password. escenario7.spec.js
8 Aleatorio Negativo Actualizar el usuario admin con un email vacio escenario8.spec.js
9 Aleatorio Negativo Actualizar el email del usuario admin por un string que no es un correo valido escenario9.spec.js
10 Aleatorio Negativo Actualizar la bio del usuario admin con una longitud superior a 200 caracteres escenario10.spec.js
11 Aleatorio Negativo Actualizar el usuario admin con un nombre vacio escenario11.spec.js
12 Aleatorio Negativo Actualizar el nombre del usuario admin con una longitud superior a 200 caracteres escenario12.spec.js
13 Aleatorio Negativo Actualizar la foto del usuario admin sin seleccionar ninguna imagen, dar click en guardar escenario13.spec.js
14 Aleatorio Negativo Crear nueva pagina, ir al listado de paginas, seleccionarla, borrar titulo y contendio y actualizar. Ir al listado para verificar cambios escenario14.spec.js
15 Aleatorio Negativo Ir a configuracion, integraciones, crear nueva integración, dar click en guardar con nombre vacio escenario15.spec.js
16 Aleatorio Positivo Ir a configuracion, integraciones, crear nueva integración, ir al listado para confirmar escenario16.spec.js
17 Aleatorio Negativo Ir a configuracion, integraciones, crear nueva integración, dar click en guardar con nombre que excede el limite de caracteres (191) escenario17.spec.js
18 Aleatorio Positivo Ir a configuracion, integraciones, crear nueva integración, ir al listado y seleccionarla. Editar la descripción escenario18.spec.js
19 Aleatorio negativo Ir a configuracion, integraciones, crear nueva integración y agregar un webhook con nombre vacio escenario19.spec.js
20 Aleatorio Negativo Ir a configuracion, integraciones, crear nueva integración y agregar un webhook que exceda el limite de caracteres para el campo nombre escenario20.spec.js
21 Aleatorio negativo Ir a configuracion, integraciones, crear nueva integración y agregar un webhook con nombre correcto pero sin seleccionar evento y target URL escenario21.spec.js
22 Aleatorio positivo Ir a configuracion, integraciones, crear nueva integración y agregar un webhook con nombre correcto, con un evento y un target URL correctos escenario22.spec.js
23 Aleatorio Positivo Ir a configuracion, integraciones, crear nueva integración, ir al listado, seleccionarla y eliminarla escenario23.spec.js
24 A-priori Positivo Ir a miembros e importar miembros desde un archivo csv, ir al listado escenario24.spec.js
25 Aleatorio Negativo Ir al configuracion, seleccionar navegación y agregar un "primary navigation" con un label vacio escenario25.spec.js
26 Aleatorio positivo  ir al configuracion, seleccionar navegación y agregar un "primary navigation" con un label correcto escenario26.spec.js
27 Aleatorio Negativo Crear nueva pagina, ir al listado de paginas, seleccionarla, ir a settings y dejar en blanco todas las entradas de texto y ver que la hora de publicación debe tener un formato escenario27.spec.js
28 Aleatorio positivo Crear un nuevo miembro, ir al listado de miembros y crear filtro por el nombre escenario28.spec.js
29 Aleatorio Negativo Crear un nuevo miembro, ir al listado de miembros y crear filtro por email pero dejando el campo vacío escenario29.spec.js
30 Aleatorio Negativo Ir a listado de tags, crer uno nuevo con todos los datos vacios escenario30.spec.js
31 Aleatorio positivo Editar un tag y solo cambiar la descripcion y la imagen ALP_editartag_descripcion_y_cambiar_imagen.spec.js
32 Aleatorio positivo Editar de un tag el nombre, descripcion,imagen y slug ALP_editartag_nombre_slug_descripcion_e_imagen.spec.js
33 Aleatorio positivo Editar de un tag el nombre y cambiar la imagen ALP_editartag_nombre_y_cambiar_imagen.spec.js
34 Aleatorio positivo Editar de un tag el nombre y la descripcion ALP_editartag_nombre_y_descripcion.spec.js
35 Aleatorio positivo Editar de un tag el slug y la imagen ALP_editartag_slug_y_cambiar_imagen.spec.js
36 Aleatorio positivo Editar de un tag el slug y la descripcion ALP_editartag_slug_y_descripcion.spec.js
37 Aleatorio positivo Editar de un tag el slug y el nombre ALP_editartag_slug_y_nombre.spec.js
38 Aleatorio positivo Editar de un tag solo la descripcion ALP_editartag_solo_descripcion.spec.js
39 Aleatorio positivo Editar de un tag solo el nombre ALP_editartag_solo_nombre.spec.js
40 Aleatorio positivo Editar de un tag solo el slug ALP_editartag_solo_slug.spec.js
41 A-priori positivo Editar datos admin solo la bio APP_editar_datos_admin_bio.spec.js
42 A-priori positivo Editar datos admin la bio, localaizacion, nombre, slug y website APP_editar_datos_admin_bio_localizacion_nombre_slug_y_website.spec.js
43 A-priori positivo Editar datos admin la bio y localaizacion APP_editar_datos_admin_bio_y_localizacion.spec.js
44 A-priori positivo Editar datos admin la bio y nombre APP_editar_datos_admin_bio_y_nombre.spec.js
45 A-priori positivo Editar datos admin la bio y slug APP_editar_datos_admin_bio_y_slug.spec.js
46 A-priori positivo Editar datos admin localizacion APP_editar_datos_admin_localizacion.spec.js
47 A-priori positivo Editar datos admin nombre APP_editar_datos_admin_nombre.spec.js
48 A-priori positivo Editar datos admin nombre y localizacion APP_editar_datos_admin_nombre_y_localizacion.spec.js
49 A-priori positivo Editar datos admin solo slug APP_editar_datos_admin_slug.spec.js
50 A-priori positivo Editar datos admin slug y localizacion APP_editar_datos_admin_slug_y_localizacion.spec.js
51 A-priori positivo Editar datos admin slug y nombre APP_editar_datos_admin_slug_y_nombre.spec.js
52 A-priori positivo Editar datos admin solo website APP_editar_datos_admin_website.spec.js
53 A-priori positivo Editar datos admin website y bio APP_editar_datos_admin_website_y_bio.spec.js
54 A-priori positivo Editar datos admin website y localizacion APP_editar_datos_admin_website_y_localizacion.spec.js
55 A-priori positivo Editar datos admin website y nombre APP_editar_datos_admin_website_y_nombre.spec.js
56 A-priori positivo Editar datos admin website y slug APP_editar_datos_admin_website_y_slug.spec.js
57 (pseudo) aleatorio dinámico Negativo Cambiar contraseña admin ingresando valores en los tres campos obligatorios PSN_cambiar_contraseña_admin_old_password_new_password_verification_password.js
58 (pseudo) aleatorio dinámico Negativo Cambiar contraseña admin ingresando valores en campo old password PSN_cambiar_contraseña_admin_ingresar_solo_old_password.spec.js
59 (pseudo) aleatorio dinámico Negativo Cambiar contraseña admin ingresando valores en campo verification password PSN_cambiar_contraseña_ingresar_solo_new_password.spec.js
60 (pseudo) aleatorio dinámico Negativo Cambiar contraseña admin ingresando valores en campo new password PSN_cambiar_contraseña_ingresar_solo_verification_password.spec.js
61 Aleatorio Positivo Ingresar y crear un miembro del staff con email correctos ALP_crearStaff444.spec.js
62 Aleatorio Negativo Ingresar y crear un miembro del staff con email incorrecto ALN_crearStaff444.spec.js
63 A-priori Positivo Ingresar y crear un miembro del staff con email correctos APP_crearStaff444.spec.js
64 A-priori Negativo Ingresar y crear un miembro del staff con email incorrecto APN_crearStaff444.spec.js
65 (pseudo) aleatorio dinámico Positivo Ingresar y crear un miembro del staff con email correctos PSP_crearStaff444.spec.js
66 (pseudo) aleatorio dinámico Negativo Ingresar y crear un miembro del staff con email incorrecto PSN_crearStaff444.spec.js
67 Aleatorio Positivo Ingresar y eliminar un miembro correctamente ALP_eliminarMiembro444.spec.js
68 Aleatorio Positivo Ingresar y eliminar un tag correctamente ALP_eliminarTag444.spec.js
69 Aleatorio Negativo Reenviar un correo electronico de los pendientes y no poderlo enviar ALP_reenviarCorreo444.spec.js
70 Aleatorio Negativo Crear un tag con un nombre que ya existe ALP_crearTag_1.js
71 Aleatorio Positivo Crear un tag y  ponerle Name muy largo ALP_crearTag_2.js
72 Aleatorio Negativo Crear un tag y solo poner color ALN_crearTag_3.js
73 Aleatorio Negativo Crear un Tag con nombre muy largo ALN_crearTag_4.js
74 Aleatorio Negativo Crear tag con color invalido ALN_crearTag_8.js
75 Aleatorio Negativo Crear tag con slug muy largo ALN_crearTag_7.js
76 Aleatorio Positivo Crear Tag con descripcion de 500 Caracteres ALP_crearTag_6.js
77 Aleatorio Negativo Crear Tag con descripcion de mas de 500 Caracteres ALN_crearTag_5.js
78 Aleatorio Negativo Crear un tag y no ponerle descripcion ALN_crearTag_9.js
79 Aleatorio Negativo Crear Miembro solo con el nombre ALN_CrearMiembro_1.spec.js
80 Aleatorio Positivo Crear miembro solo con el email ALP_CrearMiembro_2.spec.js
81 Aleatorio Negativo crear miembro solo con labels ALN_CrearMiembro_3.spec.js
82 Aleatorio Negativo Crear Miembro solo con la nota ALN_CrearMiembro_4.spec.js
83 Aleatorio Negativo Crear miembro sin email ALN_CrearMiembro_5.spec.js
84 Aleatorio Negativo Crear miembro sin labels ALN_CrearMiembro_6.spec.js
85 Aleatorio Positivo Crear Miembro sin Nota ALP_CrearMiembro_7.spec.js
86 Aleatorio Negativo Crear miembro con nombre muy largo ALN_CrearMiembro_8.spec.js
87 Aleatorio Negativo Crear miembro con email invalido ALN_CrearMiembro_9.spec.js
88 Aleatorio Positivo Crear miembro con label muy largo ALP_CrearMiembro_10.spec.js
89 Aleatorio Positivo Crear miembro con nota de 500 caracteres ALP_CrearMiembro_11.spec.js
90 Aleatorio Negativo Crear miembro con nota de mas de 500 caracteres ALN_CrearMiembro_12.spec.js
91 Aleatorio Positivo Crear post con titulo, cuerpo, imagen valido post_1.spect.js
92 Aleatorio Negativo Crear post sin titulo y cuerpo, imagen, valido post_2.spect.js
93 Aleatorio Negativo Crear post sin cuerpo y titulo, imagen, valido post_3.spect.js
94 Aleatorio Positivo Crear post con titulo, cuerpo, imagen y fecha de publicacion valido post_4.spect.js
95 Aleatorio Positivo Crear post con titulo, cuerpo, imagen y fecha de publicacion no valida post_5.spect.js
96 Aleatorio Positivo Crear post con titulo repetido, cuerpo, imagen post_6.spect.js
97 Aleatorio Positivo Editar post con titulo, cuerpo, imagen valido post_7.spect.js
98 Aleatorio Positivo Eliminar post con titulo, cuerpo, imagen valido post_8.spect.js
99 Aleatorio Positivo Crear post con titulo largo, cuerpo, imagen valido post_9.spect.js
100 Aleatorio Positivo Crear post sin titulo ni cuerpo e imagen valido post_10.spect.js
101 Aleatorio Positivo Crear post con titulo, cuerpo, imagen valido, eliminar solo imagen post_11.spect.js
102 Aleatorio Positivo Crear post y publicarlo post_12.spect.js
103 Aleatorio Positivo Filtrar por Draft y crear un post post_13.spect.js
104 Aleatorio Positivo Filtrar por Scheduled y crear un post post_14.spect.js
105 Aleatorio Positivo Filtrar por Featured y crear un post post_15.spect.js
106 Aleatorio Positivo Crear page con titulo, cuerpo, imagen valido page_16.spect.js
107 Aleatorio Positivo Crear page sin titulo y cuerpo, imagen, valido page_17.spect.js
108 Aleatorio Positivo Crear page sin cuerpo y titulo, imagen, valido page_18.spect.js
109 Aleatorio Positivo Crear page con titulo, cuerpo, imagen y fecha de publicacion valido page_19.spect.js
110 Aleatorio Positivo Crear page con titulo, cuerpo, imagen y fecha de publicacion no valida page_20.spect.js
111 Aleatorio Positivo Crear page con titulo repetido, cuerpo, imagen page_21.spect.js
112 Aleatorio Positivo Editar page con titulo, cuerpo, imagen valido page_22.spect.js
113 Aleatorio Positivo Eliminar page con titulo, cuerpo, imagen valido page_23.spect.js
114 Aleatorio Positivo Crear page con titulo largo, cuerpo, imagen valido page_24.spect.js
115 Aleatorio Positivo Crear page sin titulo ni cuerpo e imagen valido page_25.spect.js
116 Aleatorio Positivo Crear page con titulo, cuerpo, imagen valido, eliminar solo imagen page_26.spect.js
117 Aleatorio Positivo Crear page y publicarlo page_27.spect.js
118 Aleatorio Positivo Filtrar por Draft y crear un pages page_28.spect.js
119 Aleatorio Positivo Filtrar por Scheduled y crear un pages page_29.spect.js
120 Aleatorio Positivo Filtrar por Featured y crear un pages page_30.spect.js