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 |