¡No, me refiero al deporte! Karate es una herramienta de código abierto, fácil de manejar para personas que no poseen conocimientos de programación. Esta herramienta combina la automatización de API y las pruebas de rendimiento en un marco único.
Para esto vamos a utilizar Java 8+ y como entorno de desarrollo tenemos Intellij IDEA. Vamos a crear un proyecto de JAVA basado en Gradle y para probar usaremos https://reqres.in/.
Gradle es un sistema de automatización de construcción de código de software, que nos va a permitir integrar con terceros, programar tareas, escribir en varios lenguajes, etc.
Con tan solo esto ya podemos ejecutar nuestro primer test:
Karate nos recomienda tener 1 o 2 como máximo nivel de profundidad de carpetas
En este caso, un método GET que trae un usuario en específico.
Nuestro Endpoint es el siguiente:
Por consola vamos a poder observar un log donde podremos revisar cuál es el request, response, el tiempo de respuesta, etc.
En este ejemplo vamos a crear un usuario. Para ello tomamos el siguiente Endpoint, donde observamos cuál es la respuesta que se espera y el formato del JSON que irá en el body:
A diferencia del método GET, aquí vamos a realizar algunos cambios:
¿Cómo podemos validar que un response nos trae un valor que esperamos en un atributo especifico?
Sigamos con el ejemplo del método GET, que nos trae un usuario en específico y nosotros queremos validar que el e-mail de ese usuario es el esperado. En este caso, solo utilizaremos la palabra clave que nos brinda Karate: “match”.
Si en todos los escenarios de una misma feature se cumplen algunas precondiciones, es mucho más práctico usar un Background que escribir lo mismo varias veces. Esto sirve como una serie de pasos que se van a ejecutar antes de todos los escenarios de la feature. Veamos un ejemplo:
Podemos observar la creación de una variable llamada “var” con el valor que es un JSON, el cual queremos enviar en el escenario. Dentro del escenario llamamos a la variable “var” para que la tome.
Una variable es donde se guardan en memoria (y se recuperan) datos que se utilizan en un programa cuando escribimos código. Las variables se utilizan para:
Aquí vamos a declarar variables con la siguiente sintaxis:
Son un tipo de escenario donde se especifican datos de entrada. Son muy prácticos, ya que gracias a esto no es necesario escribir un escenario por dato de entrada, por ejemplo:
Karate nos brinda la funcionalidad de las ejecuciones en paralelo, con lo que se reducen los tiempos de ejecución.
¿Cómo empezamos?
Paso 2: Dentro de la clase “RunnerTest”, agregamos un método que se va a encargar de ejecutar nuestras pruebas en paralelo; este método lo vamos a llamar “parallelExecution()” y va a ser un método void el cual no va a devolver nada.
Paso 3: Dentro del método vamos a crear el ejecutable que se va a encargar de ejecutar todo lo que indiquemos en el path, luego vamos a ignorar los tags y, por último, vamos a elegir cáantos hilos queremos que se ejecuten.
Paso 4: Para que se ejecute el método vamos a colocar por encima del método @Test. Con esto JUnit nos ayudará a ejecutar el método especificado.
Paso 5: Como nosotros colocamos el @Test por encima del método que creamos para ejecutar las pruebas en paralelo, debemos dirigirnos al build.gradle y especificar que cuando encuentre un @Test lo ejecute con la plataforma de Junit. Para eso colocamos las siguientes líneas:
Paso 6: Último y muy importante, Karate tiene la extensión de archivos .feature, pero Gradle dice que los archivos que no tengan .java vayan en la ruta src/test/resources. Como nosotros tenemos los archivos .feature dentro de la ruta src/test/java, debemos agregar algo más en el build.gradle para que funcionen nuestras pruebas. Acá le decimos a gradle que busque los recursos de pruebas en una ruta especifica y le decimos que excluya todos los archivos .java.
Paso 7: Por último, ejecutamos.
Cuando se ejecuten las pruebas, se generará un informe para cada característica. Se nos va a informar dónde queda la ruta donde está el reporte. Esta se encuentra en la carpeta target/karate-reports/karate-summary.html. El informe propuesto por Karate está en formato HTML y su estructura es la siguiente:
Podemos ejecutar nuestras pruebas de dos formas: desde nuestro IDE o por línea de comandos. Para el segundo caso se podrá ejecutar el siguiente comando Gradle:
Paso 1: Nos paramos sobre la carpeta del proyecto.
Paso 2: Ejecutamos el comando “gradlew clean test -i”.
A la hora de tomar un proyecto donde se requiera automatizar pruebas de nuestros servicios, vamos a tener la posibilidad de usar KarateDS, una gran herramienta opensource que está en continuo crecimiento y tiene una gran comunidad, la cual va creciendo día a día. No es necesario saber programar, por lo que es muy fácil de aplicar, enseñar y preparar a cualquier personal que se requiera. Además, nos permite ejecutar pruebas en paralelo; esto nos va a ayudar a reducir los tiempos de ejecución. Karate DSL no solo nos brinda un reporte propio en html muy bueno, sino que también tenemos la posibilidad de integrar los reportes de Cucumber. Por último, y no menos importante, podemos lograr integración continua.