Ejecutar pruebas de volumen con Visual Studio y Team Service

Pre-requisitos
  • Visual Studio 2015 Enterprise, si no tienes Enterprise, obtenerlo aquí.
    • Para correr mas de 250 usuarios en la prueba de volumen es necesario una licencia de Visual Studio
  • Cuenta de Team Services
En este tutorial veremos como ejecutar pruebas de volumen en la infraestructura de Team Services.

Crar proyecto de tipo Web Performance and Load Test
En Visual Studio damos  clic en "Create new proyect" y elegimos:
Templates > Visual C# > Test > Web Performance and Load Test Project

Crear Web Test
Ya que creamos el proyecto, veremos los siguientes archivos:
















Hacemos clic en nuestro .webtest para grabar nuestras primeras pruebas.
Nota: Debemos de tener instalado el "add-on" de recording en Internet Explorer, cuando instalas Visual Studio, él mismo te agrega el add-on.

Vamos a dar clic en "add recording" y automáticamente Visual Studio va abrir el navegador.

Todo lo que hagamos en el navegador va a ser grabado y luego Visual Studio va a crear los "test" los cuales cuentan con todo lo datos de "request", "response" junto con sus respectivos cabeceros.

Estas grabaciones también obtienen los parámetros de las peticiones, ya sean "GET", "POST", "PUT", etc.



Para esta prueba desplegué una aplicación en Azure App Services así podremos grabar las pruebas web.

Ya que iniciamos la grabación, insertamos la dirección de la aplicación que deseamos hacer pruebas, y empezamos a navegar en ella, esto con el objetivo de grabar el comportamiento que debería de tener la aplicación.

Como demostración, navegaré en las tres páginas que nos genera el template de Visual Studio de un aplicación .NET Core Web.




Una vez que terminemos de grabar nuestras pruebas, vamos a dar clic en "Stop" para terminar la grabación. Visual Studio en automatico va a cerrar IE y empezará a recopilar las información grabada.

Ya que finalice, podemos ejecutar nuestra prueba dando clic en "Run Test":

Crear pruebas de volumen
Vamos agregar un archivo de Load Test y hacemos clic en "Add"
Templates > Visual C# > Test > Load Test

Una vez que agregemos el archivo, nos mostrará un wizard con las configuraciones de las pruebas de volumen. Para ejecutar pruebas de volumen en Team Services, necesitamos elegir "Cloud-based test Load Test With Visual Studio Team"

Nota: Aseguren estar conectados a Visual Studio Team Services, puede conectarse utilizando "Team Explorer"

El segundo paso es elegir el data center en el cual se va a ejecutar la prueba, aseguremos elegir el data center mas cercano a el servidor de la aplicación que vamos a estresar:

Despues vamos a configurar cuanto tiempo va a durar la prueba y cuanto tiempo vamos a dejar para hacer "Warm-Up"

Warm-Up: Su función es lanzar peticiones al servidor y prepararlo para la prueba de volumen, generalmente sirve para que el server guarde cosas en cache o bien habilite funciones.
Run Duration: Tiempo total de ejecución de la prueba de volumen.
Sampling Rate: Intervalo de tiempo en el que Visual Studio y Team Services recolectaran información de la prueba en ejecución.

Ahora vamos a nombrar el "scenario" que vamos a probar. Visual Studio nos permite crear scenarios de prueba para luego ser ejecutados en la prueba de estres, ejemplos de scenarios pueden ser: "Curiosos", "Búsqueda de productos", "Registro", Etc.
Think Time: Se refiere a la simulación de un usuario real, se puede configurar cuanto tiempo en promedio va a lanzar entre cada una de las peticiones de la prueba.

Load Pattern:
En esta sección configuraremos como va a ser el patrón de carga de usuarios.
Constant load: Se refiere que durante toda la prueba, siempre se mantendrá la misma cantidad de usuarios.
Step load: Significa que va agregar una carga de usuarios por cada paso. Nosotros podemos configurar el intervalo entre cada paso, en nuestra demo configuramos el siguiente patron:

Pasos de 10 segundos con un incremento de 10 usuarios por paso, iniciando con 10 usuarios con un tope de 200 usuarios.

Elegimos el modelo del "Mix" de carga:
Y después agregamos los "web test"que vamos a ejecutar en la prueba de volumen. En nuestro caso solo tenemos un "Web Test", en caso de tener mas Web Test, es necesario configurar el porcentaje de carga de usuarios que se va a distribuir durante la prueba.

Por ultimo elegimos los navegadores que van a simular la prueba y damos clic en finalizar:
Una vez que terminemos de configurar, podemos ejecutar la prueba de volumen!
Después que ejecutemos, Visual Studio empezará a desplegar los recursos necesarios para correr la prueba.

Esta misma información también la podemos ver en el portal de Team Services en la sección de "Load Test":


Y listo!!

Ahora solo falta esperar a que Team Services configuré los agentes y controladores necesarios para ejecutar la prueba en la nube!

El proceso de despliegue y configuración puede durar varios minutos, en mi experiencia a durado entre 8 y 10 min aproximadamente, dependiendo de la carga y tiempo configurado.

Una vez que termine la prueba, podremos ver los siguientes indicadores, los cuales nos sirven para medir y aplicar medidas correctivas o bien, saber el punto de quiebre de una aplicación y el comportamiento de cada una de las páginas al ser estresadas, y muchas, muchas mas cosas!
Un dato muy interesante es el indicador de páginas y/o recursos mas lentos:
Si volvemos a Visual Studio, veremos que nos muestra una linda gráfica, la cual representa el comportamiento de la prueba ante el sitio:
Podemos descargar el reporte de resultados en visual studio y verificar el informe completo y detallado de la prueba:



Ahora, para comprobar que el sitio fue realmente estresado, voy a ir al portal de Azure donde esta la aplicación, y veré su monitor:

Vemos que efectivamente logramos estresar el sitio!

Un aspecto importante que debemos de tomar en cuenta, es el consumo de "VUMs" (Virtual Users per Second) ya que es el indicador que determina el costo de la prueba.

A continuación comparto el calculo para determinar el costo de VUMs:
Primeros 20,000 VUM / Més 20,001-2M VUM 2,000,001-10M VUM 10,000,001 VUM-above
Gratis $0.0004 / VUM $0.0002 / VUM $0.0001 / VUM
El calculo para determinar el total de VUMs a utilizar es el siguiente:

(máximo de usuarios virtuales de tu ejecución de prueba) * (duración de la prueba en minutos)

Por ejemplo:
Para correr 200 usuarios por 5 min, el total de VUMs es el siguiente:

200 x 5 = 1000 VUMs

Precio = 1000 x 0.0004 = 0.4 Dlls
Nota: esta prueba fue gratis, ya que aun no he consumido mis 20,000 VUMs mensuales

Fuente:

Comments

Popular posts from this blog

Configurar y desplegar una Web API en Azure App Service Environment

Patrones de diseño para aplicaciones de alta disponibilidad en Azure - Resilient Applications (Parte I: Retry Policy)

Integrar Web API de .NET en proyecto de Xamarin.Forms utilizando Visual Studio y Azure API App

Conectar .NET Web API con Azure API Management

Publicar resultados de una consulta de Azure SQL Database a Azure Service Bus con Logic App