Bienvenido

Estos artículos estarán dedicados a dar consejos y ejemplos sobre la creación de scripts.


viernes, 14 de julio de 2017

JSON Extractor Ruby

JSON Extractor Ruby


Antes que nada debemos tener la gema de ruby para json instalada: gem install json

* La llamamos en nuestro proyecto

require "json"

* Para poder hacer una extracción primero debemos pasar nuestra respuesta a json

parsed = JSON.parse(respuesta)

* Y luego hacemos la extracción como en el siguiente ejemplo

parsed['response']['groups'][*]['id']



jueves, 2 de marzo de 2017

Encodear parámetros de entrada en Jmeter

Encodear parámetros de entrada en Jmeter

Hay algunos símbolos que al enviarlos como parámetros de entrada muestran un error como el "java.net.URISyntaxException: Malformed escape pair at index 82" , para que esto no ocurra Jmeter tiene una función que se puede utilizar para encodear estos valores.

                                            ${__urlencode(${mi_variable})}

Ejemplo:

email = #$$$%¡!














Al enviarlo como en la imagen, lo que se vera en la llamada será: 
email = %23%24%24%24%25%C2%A1%21@api.com

Y en la respuesta:

{
:   "entry":
:   {
:   :   "email":"#$$$%¡!@api.com",

martes, 25 de octubre de 2016

Usar CSV para guardar variables de Jmeter

Usar CSV para guardar variables de Jmeter


Si necesitamos hacer un lote de pruebas donde los datos van a ser distintos, podríamos usar un bucle, pero otra opción es usar un csv.

Lo podemos encontrar en:

Si no lo encuentran es posible que no tengan instalado el plugin. En la imagen se puede ver cual es el que deben instalar.


Una vez que lo agregamos a nuestro Plan de pruebas, va a verse de esta manera:




Siempre debe estar al inicio de nuestras pruebas ya que va a contener las variables con las que vamos a trabajar.



Nombre de archivo: ruta + nombre del archivo
Delimitador: si es un csv ponemos un punto y coma (;)

Ejemplo:
Si queremos hacer 5 pruebas, nuestro csv tendrá 6 líneas, la primera con los nombres de las variables y 5 con los datos de las variables.


 Al tener el csv al inicio de nuestras pruebas trabajaran como en un bucle, vamos a setear la cantidad de líneas que tenemos -1 y esa sera la cantidad de vueltas que va a dar en el bucle.



*** el archivo no solo puede ser csv, también puede ser por ejemplo .txt separado por tabulaciones.

miércoles, 7 de septiembre de 2016

Plugin JSON Path Extractor

Plugin JSON Path Extractor

Este plugin nos permite extraer valores desde una respuesta en json.

Como lo descargamos: 
Desde el plugins manager lo buscamos como JSON Plugins

Vamos a ver un ejemplo.

Ejemplo 1:

Tenemos una respuesta donde nos muestra los siguientes datos, y queremos extraer solo el campo "user_id":





Para extraerlo agregamos un json path extractor.


Y lo completamos de la siguiente manera:

Variable Name: Nombre de la variable a la que le vamos a asignar el valor extraído.
JSONPath Expression: La expresión para extraer la información deseada.
Default Value: Un valor por defecto si no llegara a encontrar información con la expresión que escribimos. (Opcional)

El resultado de esta expresión seria una variable llamada user_id que tiene asignado el valor 18887656.



Ejemplo 2: 

Tenemos una respuesta donde queremos extraer todos los campos llamados "id".




Para extraerlos completamos el json path extractor de la siguiente manera:

JSONPath Expression: La expresión para extraer la información deseada. En este caso podemos ver en la respuesta que la informacion que necesitamos esta dentro del array "groups", para indicar esto ponemos en la expresión json groups[*], si quisiéramos solo el campo "id" que está en la primera posición del array nuestra expresión seria: $.response.groups[0].id



*** Al haber extraído varios campos "id", vamos a tener tantas variables como campos "id" haya encontrado, entonces nuestras variables se llamaran groups_1, groups_2....groups_n. Y para saber cuantas variables creamos podemos saberlo llamando a la variable groups_matchNr, y crear por ejemplo un foreach.



Ejemplo 3: 

Tenemos una respuesta donde queremos extraer todos los campos llamados "id" mientras que el campo "format_types=ppe".




Para extraerlos completamos el json path extractor de la siguiente manera:
En este caso, al querer solo los groups que cumplan con la condición format_types=ppe, vamos a usar :
$..  cualquier ruta que nos lleve al objeo deseado
? ()   - función de filtro
@ - objeto actual

Y nos quedaria formada la siguiente expresion: $..[?(@.format_types=='ppe')].id  - Mientras encuentre en cualquier ruta format_types=ppe que extraiga el campo id. 





***Cualquiera de los ejemplos o expresiones que se creen pueden ser probadas dentro de Jmeter desde el árbol  de resultados.***




Ponemos nuestra expresión a testear, click en test y nos trae los resultados de nuestra expresion, si no coincide nada nos va a mostrar "NO MATCH".
















martes, 16 de agosto de 2016

Como Instalar Plugins Manager en Jmeter

Como Instalar Plugins Manager en Jmeter


Para instalar Plugins en Jmeter debemos ir a:  https://jmeter-plugins.org/install/Install/ y descargar el .jar


Ponemos el jar descargado en la carpeta jmeter-lib-ext y reiniciamos Jmeter.

Después de reiniciarlo ya deberíamos tener el Plugin Manager instalado.


Para instalar un nuevo plugin solo debemos elegirlo y click en el botón "Apply changes and restart jmeter".





viernes, 8 de enero de 2016

Expresiones regulares en Jmeter

Expresiones Regulares en Jmeter

Una forma de extrae que es lo que nuestra api esta respondiendo es usando una expresión regular.
Siempre se crea después de la llamada ya que es un post-procesador.



Nombre: nombre que le vamos a dar para identificar nuestra exp reg.
Aplicar a : donde vamos a usar nuestra expresión regular, en una variable, en la muestra principal, etc. En la imagen vamos a decirle que va a usar la exp reg en toda la respuesta.
Campo de respuesta a comprobar:de donde vamos a extraer el valor que buscamos. En nuestro caso vamos a extraer del cuerpo.
Nombre de referencia: Nombre de nuestra nueva variable donde vamos a asignar lo que se extraiga.
Expresión regular: nuestra expresión regular.
Plantilla: se debe poner entre $n$ los numero de plantillas, se ponen tantos como expresiones regulares hayamos puesto. Ej: response:(.+?),”(.+?)”  $1$$2$, y luego para usar cada plantilla es Nombre_de_referencia_g1. O ponemos 0(cero) si vamos a querer todo en una sola variable. 
Coincidencia : que coincidencia vamos a querer, si lo dejamos vacío asigna la primera que encuentra y el -1 son todas las coincidencias que encuentre. 
Valor por defecto: en caso de no encontrar nada que valor vamos a querer que tenga por defecto.


*Una buena forma de saber si nuestra expresión regular funciona es probarla por ejemplo en rubular.com. 
O también podemos probarla en Jmeter. Solo tenemos que correr nuestras llamadas y elegir Testeador de RegExp en el árbol de resultados


En expresión regular, ponemos la que creamos y luego con el botón test vemos si extrae lo que realmente queremos o no. 
Si lo encuentra nos muestra como serian nuestras plantillas, el match 1,0 seria el variable_g0 y el match 1,1 seria el variable_g1.


Después de tener guardada nuestra expresión regular, podemos usarla por ejemplo en un assert.
En el ejemplo de la imagen vamos a usar nuestra variable creada con la exp reg poniendo en el assert como "aplicar a " = variable jmeter. 





Si pusimos coincidencia -1 y queremos saber cuantas coincidencias encontro solo tenemos que llamar a la variable: "Nombre_de_referencia_matchNr"



Condicional If en Jmeter






Condicional IF en Jmeter


Al probar apis es probable que no solo queramos ver si responde OK o no, sino que también queremos si lo que devuelve esta bien o no. Para esto podemos usar un condicional como el IF.

Al crear un IF debemos tener en cuenta que vamos a querer validar. Para eso usamos variables. Si vamos a querer validar el response entonces vamos a necesitar hacer una llamada primero y extraerlo.
Vamos a ver un ejemplo extrayendo solo la primer etiqueta dentro de nuestro response con una expresión regular.
Crear extractor de expresion regular
SIEMPRE dentro de un IF se debe volver a hacer la llamada, sino el IF no funcionara. (Ver Imagen).

En la imagen se puede ver la declaración del IF, es igual que un IF en código.  Y dentro una llamada http.
Los mas comunes:
== igual a
!= diferente de
En la imagen vemos que en la comparación usamos la variable que creamos con la expresión regular.
Siempre es “${variable}”== ……
Si corremos este script sin asserts vemos que nos dará este tipo de respuesta:

Esto indica que entro a nuestro IF, sino hubiera mostrado solo una petición HTTP en el resultado.
Como se vio en las imágenes antes de cada llamada tenemos un controlador simple, esto lo hacemos porque al tener un IF va a querer entrar directo al IF antes que a las llamadas anteriores, el controlador simple lo único que hace es separar nuestro script en bloques, y se ejecutara en el orden de los bloques. Así primero se ejecutara nuestra llamada para extraer datos y luego nuestro if.