TestMace. Inicio rápido

TestMace. Inicio rápido

Hola a todos. Poco a poco estamos saliendo de las sombras y continuamos con nuestra serie de artículos sobre nuestro producto. Después de la anterior el artículo de presentación, recibimos numerosos comentarios (en su mayoría positivos), sugerencias e informes de errores. Hoy mostraremos TestMace en acción y ustedes podrán apreciar algunas características de nuestra aplicación. Para una inmersión más completa, recomiendo consultar nuestra documentación en http://docs-ru.testmace.com. ¡Vamos allá!

Instalación

Comencemos con lo básico. La aplicación está disponible y realmente se puede probar en tres plataformas: Linux, Windows, MacOS. Puedes descargar el instalador para el sistema operativo que te interese desde nuestro sitio web. Para los usuarios de Linux, hay una opción de instalación del paquete snap. Esperamos que pronto tengamos una versión en Microsoft Store y App Store (¿es necesario? ¿Qué opinas?).

Escenario de prueba

Elegimos el siguiente escenario estándar como prueba:

  • inicia sesión: usuario — admin, contraseña — password
  • agregaremos un nuevo registro
  • verificaremos la correcta adición del registro

Realizaremos las pruebas en https://testmace-quick-start.herokuapp.com/. Este es un json-server, perfecto para probar este tipo de aplicaciones. Solo hemos agregado autorización por token a todas las rutas del json-server y hemos creado el método de inicio de sesión para obtener dicho token. Avanzaremos de manera metódica, mejorando nuestro proyecto gradualmente.

Creación del proyecto e intento de crear una entidad sin autorización

Primero crearemos un nuevo proyecto (Archivo->Nuevo proyecto). Si estás ejecutando la aplicación por primera vez, el nuevo proyecto se abrirá automáticamente. Para comenzar, intentemos hacer una solicitud para crear un nuevo registro (quizás la creación de registros esté disponible sin autorización). Selecciona en el menú contextual del nodo Project las opciones Agregar nodo -> RequestStep. Como nombre del nodo, estableceremos crear-publicación. Esto resultará en un nuevo nodo creado en el árbol y se abrirá la pestaña de este nodo. Estableceremos los siguientes parámetros de solicitud:

  • Tipo de solicitud: POST
  • url: https://testmace-quick-start.herokuapp.com/posts
  • Cuerpo de la solicitud: json con el valor {"title": "Nueva publicación de inicio rápido testmace"}
    Si lo has hecho todo correctamente, la interfaz debería verse de la siguiente manera:

TestMace. Inicio rápido

Sin embargo, si intentamos realizar la solicitud, el servidor devolverá el código 401 y sin autorización no tendremos acceso a nada en este servidor. Bueno, es algo predecible).

Agregamos la solicitud de autorización

Como se mencionó anteriormente, tenemos un endpoint POST /login, que acepta como cuerpo de solicitud un json de este tipo: {"username": "", "password": ""}, donde username y password (de nuevo, de la introducción anterior) tienen valores admin y password correspondientemente. En respuesta, este endpoint devuelve un json del tipo {"token": ""}. Lo utilizaremos para la autorización. Crearemos RequestStep un nodo llamado login, con como predecesor Proyecto el nodo. Con la función de arrastrar y soltar, mueve este nodo en el árbol por encima del nodo crear-publicación. Asignaremos los siguientes parámetros a la nueva solicitud:

Ejecutamos la solicitud y recibimos un código doscientos con el token en la respuesta. Algo así:

TestMace. Inicio rápido

Refactorización: eliminamos la duplicación del dominio

Por ahora, las solicitudes no están conectadas en un único escenario. Pero este no es el único inconveniente. Si lo miramos de cerca, podemos notar que al menos el dominio se repite en ambas solicitudes. No es lo ideal. Es hora de refactorizar esta parte del futuro escenario y para ello nos ayudarán las variables.

En un primer acercamiento, las variables cumplen el mismo papel que en otras herramientas y lenguajes de programación similares: eliminar la duplicación, aumentar la legibilidad, etc. Para más información sobre las variables, puedes leer en nuestra documentación. En este caso necesitaremos variables de usuario.

Definimos a nivel de Proyecto la variable del nodo dominio con el valor https://testmace-quick-start.herokuapp.com. Para esto es necesario

  • Abrir la pestaña con este nodo y hacer clic en el ícono de calculadora en la parte superior derecha
  • Hacer clic en + AÑADIR VARIABLE
  • Ingresar el nombre y el valor de la variable
    En nuestro caso, el diálogo con la variable añadida se verá de la siguiente manera:

TestMace. Inicio rápido

OK. Ahora gracias a la herencia podemos usar esta variable en descendientes de cualquier nivel de profundidad. En nuestro caso, estos son los nodos login y crear-publicación. Para usar la variable en el campo de texto, es necesario escribir ${}. Por ejemplo, la url para iniciar sesión se transforma en ${domain}/login, y para crear-publicación el nodo, la url se verá como ${domain}/posts.

Así, siguiendo el principio DRY, hemos mejorado un poco el escenario.

Guardamos el token en una variable

Ya que hemos tocado el tema de las variables, ampliemos un poco este concepto. En este momento, en caso de un inicio de sesión exitoso, recibimos del servidor un token de autorización que necesitaremos en las solicitudes posteriores. Guardemos este token en una variable. Dado que el valor de la variable se definirá durante la ejecución del escenario, utilizamos para ello un mecanismo especial — variables dinámicas.

Para empezar, realizaremos una solicitud de inicio de sesión. En la pestaña Analizado para la respuesta, coloque el cursor sobre el token y en el menú contextual (que se activa con el botón derecho del ratón o presionando el botón ...) seleccione la opción Asignar a variable. Aparecerá un cuadro de diálogo con los siguientes campos:

  • Path — qué fragmento de la respuesta se toma (en nuestro caso es body.token)
  • Valor actual — qué valor se encuentra en la ruta Path (en nuestro caso es el valor del token)
  • Nombre de la variable — el nombre de la variable en la que Valor actual se guardará. En nuestro caso será token
  • Nodo — en cuál de los ancestros se creará la variable Nombre de la variable. Seleccionaremos Proyecto

El cuadro de diálogo completado se ve de la siguiente manera:

TestMace. Inicio rápido

Ahora, cada vez que se ejecute el nodo login la variable dinámica token se actualizará con el nuevo valor de la respuesta. Y esta variable se almacenará en Proyecto el nodo y, gracias a la herencia, estará disponible para los descendientes.

Para acceder a las variables dinámicas, es necesario usar la variable incorporada $dynamicVar. Por ejemplo, para acceder al token guardado, se debe llamar a ${$dynamicVar.token}.

Transmitimos el token de autorización en las solicitudes

En los pasos anteriores, obtuvimos el token de autorización y todo lo que tenemos que hacer es agregar el encabezado Authorization. con el valor Bearer en todas las solicitudes que requieran autorización, incluidas las que crear-publicación. Para esto hay varias formas:

  1. Copiar manualmente el token y agregar el encabezado de autorización a las solicitudes de interés. Este método funciona, sin embargo, su aplicación se limita solo a solicitudes del tipo 'hice y descarté'. No es adecuado para ejecutar escenarios múltiples.
  2. Utilizar la funcionalidad de autorización.
  3. Usar encabezados por defecto

El uso del segundo método parece obvio, sin embargo, en el contexto de este artículo, este enfoque... no es interesante. Bueno, en realidad: el mecanismo de autorizaciones es más o menos familiar para usted de otras herramientas (aunque tengamos cosas como herencia de autorizaciones) y probablemente no planteará preguntas.

¡Lo que importa son los encabezados por defecto! En pocas palabras, los encabezados por defecto son encabezados HTTP heredados de los ancestros que se agregan automáticamente a la solicitud, a menos que se desactiven explícitamente. Con esta funcionalidad, se puede, por ejemplo, implementar una autorización personalizada o simplemente evitar la duplicación en los escenarios. Aplicaremos esta funcionalidad para transmitir el token en los encabezados.

Anteriormente, guardamos con anticipación el token en una variable dinámica $dynamicVar.token a nivel del nodo del Proyecto. Lo que queda por hacer es lo siguiente:

  1. Definir el encabezado predeterminado Authorization. con el valor Bearer ${$dynamicVar.token} a nivel del nodo del Proyecto. Para esto, en la interfaz del nodo del Proyecto, es necesario abrir el diálogo con los encabezados predeterminados (botón Headers en la esquina superior derecha) y agregar el encabezado correspondiente. El diálogo con los valores completados se verá de la siguiente manera:
    TestMace. Inicio rápido
  2. Desactivar este encabezado de la solicitud de inicio de sesión. Es comprensible: en el momento del inicio de sesión aún no tenemos el token y con esta solicitud de hecho lo estableceremos. Por lo tanto, en la interfaz de la solicitud de inicio de sesión en la pestaña Headers en el área Inherited desmarcaremos la opción del encabezado de Autorización.

Eso es todo. Ahora el encabezado de autorización se añadirá a todas las solicitudes que sean descendientes del nodo del Proyecto, excepto del nodo de inicio de sesión. Así que, en esta etapa, ya tenemos el escenario listo y solo queda ejecutarlo. Para ejecutar el escenario, se puede elegir la opción Ejecutar en el menú contextual del nodo del Proyecto.

Verificamos la correcta creación de la publicación

En esta etapa, nuestro escenario puede iniciar sesión y, utilizando el token de autorización, crear una publicación. Sin embargo, necesitamos asegurarnos de que la nueva publicación tenga el nombre correcto. Es decir, en esencia, queda hacer lo siguiente:

  • Enviar una solicitud para obtener la publicación por id,
  • Verificar que el nombre recibido del servidor coincide con el nombre proporcionado al crear la publicación

Veamos el primer paso. Dado que el valor de id se determina durante la ejecución del script, es necesario crear una variable dinámica (llamémosla postId) del nodo crear-publicación a nivel del nodo del Proyecto. Cómo hacerlo ya lo sabemos, solo es necesario acceder a la sección Guardamos el token en una variable. Solo queda crear una solicitud para obtener la publicación por este id. Para esto, crearemos un RequestStep get-post con los siguientes parámetros:

  • Tipo de solicitud: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Para realizar el segundo paso, necesitamos familiarizarnos con Assertion el nodo. El nodo Assertion es un nodo que permite escribir verificaciones sobre ciertas solicitudes. Cada nodo Assertion puede contener múltiples afirmaciones (verificaciones). Puede leer más sobre todos los tipos de assertions en nuestra la documentación. Vamos a utilizar Compare assertion con el operador equal. Hay varias formas de crear assertions:

  1. Lento. Crear manualmente un nodo de Afirmación desde el menú contextual del nodo RequestStep. En el nodo de Afirmación creado, agregar la afirmación deseada y completar los campos.
  2. Rápido. Crear un nodo de Afirmación junto con la afirmación de la respuesta del nodo RequestStep usando el menú contextual.

Utilizaremos el segundo método. Así es como se verá para nuestro caso.

TestMace. Inicio rápido

Para aquellos que no entendieron, aquí está lo que sucede:

  1. Hacer una solicitud en el nodo get-post
  2. En la pestaña Analizado en la respuesta, invocar el menú contextual y seleccionar Crear afirmación -> Compare -> Igual

¡Felicidades, hemos creado nuestra primera prueba! Sencillo, ¿verdad? Ahora puedes ejecutar el guion completo y disfrutar del resultado. Solo queda refactorizar un poco y extraerlo title a una variable separada. Pero dejaremos eso como tarea para ustedes)

Conclusión

En esta guía, hemos creado un guion completo y además hemos revisado algunas características de nuestro producto. Por supuesto, no hemos utilizado todas las funcionalidades, y en los próximos artículos haremos un análisis detallado de las capacidades de TestMace. ¡Mantente atento a las actualizaciones!

P.S. Para aquellos que prefieren no reproducir todos los pasos, amablemente hemos grabado principal con el proyecto del artículo. Se puede abrir usando Archivo -> Abrir proyecto y seleccionar la carpeta Proyecto.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster