Pruebas automatizadas con Postman

Iniciado por ANTRAX, Noviembre 01, 2021, 02:30:04 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.


Para continuar con los posts sobre Postman, vamos a ver como realizar pequeños scripts automatizados utilizando alguno de los snippets que trae Postman, además veremos como ejecutar los tests de todos los métodos de una sola vez.

Para este ejemplo, utilizaremos las mismas peticiones que veniamos usando en posts anteriores, y ejecutaremos scripts en los métodos GET y POST.

Para empezar, debemos ir a la pestaña TESTS dentro de algún método. En este caso, el método GET. A la derecha, veremos una lista de snippets. Estos snippets son porciones de códigos reusables. Es decir, que podemos usarlos en cualquiera de nuestras peticiones y sirven para ahorrarnos el trabajo de tener que escribirlas nosotros. Estos Snippets estan hechos en Javascript, asique cualquiera con conocimientos en este lenguaje puede escribir sus propios scripts automatizados o editar los existentes para hacerlos más avanzados o más puntuales. Sino, simplemente con utilizar los existentes podemos hacer varias pruebas.

A continuación, voy a usar el más común de todos, que es para asegurarnos si este GET devuelve un valor 200. Simplemente clickeamos el Snippet y automaticamente se colocará el código en Javascript de mi test.


Para probarlo, simplemente clickeamos en SEND, para enviar la petición y podremos ver en el tab de Test Results, como salió la ejecución de dicho script


En este caso, pasó correctamente. Ahora agregaremos algunos más, para poder ver como se vería una ejecución con varios tests


En este caso agregué 3 tests, el primero es para ver si la ejecución devuelve un 200, el segundo es para ver si esta petición demora menos de 200ms y el tercero es para ver si ese status 200 trae un mensaje "Creado"

Actualmente falla el segundo, porque demora 696ms y el test esperaba que fuese menor a 200ms, es por ello que lo marca en rojo

El tercero también falla, porque la petición devuelve un "OK" y la respuesta que estabamos esperando era un "Created"

Como se ve en el listado de snippets, hay muchos más, podemos evaluar la estructura de un modelo, el contenido del body, podemos almacenar una respuesta en una variable (por si trabajamos con tokents) y a ese token enviarlo a una variable de entorno, etc.

Además, se pueden crear casos negativos, es decir, se podría crear un método GET que no funcione, es decir, apuntando a una URL que no exista y validar si esta devuelve un 404, de esta forma podríamos hacer pruebas de casos negativos cuando una URL no funciona y ver que el mensaje de error sea el correcto.

Ahora, lo que haremos será crear estos mismos test en el POST de crear mascota y vamos a agregarle un validador de JSON, para corroborar que la mascota que yo estoy creando, se cree verdaderamente con ese nombre.


Y si vemos el resultados de los test, tendremos lo siguiente:


Como se puede ver, pasan todos los tests, excepto el del tiempo.

Lo ideal acá, es preguntarle a un desarrollador cual debería ser el tiempo de carga esperado para cada API, y aplicarlo en el test. En este ejemplo, vamos a dejarlo tal cual, para poder ver un caso de error cuando algo falla.

Una vez que ya tenemos creados todos los tests para todos los métodos, veremos como correrlos a todos juntos. Para ello, clickeamos la carpeta que contiene a todos nuestros métodos y luego damos click en RUN


Esta parte es muy importante, ya que podemos cambiar el orden de ejecución (simplemente arrastrando el médoto). Esto sirve por ejemplo, cuando una petición X, necesita un token que lo genera la petición Y, entonces ejecutamos la petición Y, guardamos ese token en una variable y luego lo utilizamos en X.

Otra cosa importante, es que se puede ejecutar esta misma prueba varias veces, modificando el parámetro que viene en el input "Iterations", y también podemos ponerles un tiempo en milisegundos del delay que debería tener una ejecución de otra.

En este caso yo ejecutaré el GET y el POST, que fue en donde yo coloqué los tests. Cuando ya tengo todo configurado, simplemente debemos clickear el botón azul de RUN


Y como se puede ver en la siguiente captura, podemos ver el resultado de todas las ejecuciones, con sus respectivos mensajes de error (en caso de que alguno falle)


Esto es todo por ahora! Pueden probar y comentar como les va con sus tests automatizados de API.

En un próximo tutorial veremos como mostrar estos resultados en Newman, que es un visualizador de reportes en formato HTML, para mostrar los resultados de estas ejecuciones de una manera más formal.

Espero que les sirva!
ANTRAX


Para las pruebas automatizadas utilizo los mismos módulos de pruebas incluidas en las mismas aplicaciones y si no las tengo las fabrico en base al swagger o la documentación.

Muchas personas usan postman para documentar y testear las apis en diferentes ambientes y está bien, pero creo que para el trabajo de un proyecto estas pruebas deberían ir en el área de pruebas. Node, Java y similares ya tienen módulos para hacer este tipo de pruebas, por ejemplo Android Studio ya lo integra de manera nativa.
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muchas gracias! Un paso mas cerca en la automatización


Justo en el laburo donde estoy ahora están medio plomo con pentest usando postman, no será exactamente lo mismo pero me guardo el post.

Saludos!