Ejecutar pruebas de volumen con Visual Studio y Azure VM

Pre-requisitos
  • Tener una suscripción de Azure
  • Para está guía, 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
En este post veremos como ejecutar pruebas de volumen en una maquina virtual en Azure.

Crear maquina virtual
Primero debemos de hacer signup en el portal de Azure , luego damos clic en "New"  y  damos clic en "Compute". Debemos de ver los siguientes "blades"






















A continuación elegimos la imagen de "Windows Server 2012 R2 Datacenter" y elegimos "Resource Manager" como nuestro modelo de despliegue, despues damos clic en "Create"
























Una vez que diste crear, Azure va a pedir la siguiente información para crear el recurso:

  • Name: Nombre de la maquina virtual.
  • VM Disk Type: Utilizamos un disco "SSD" cuando necesitamos buen performance en lecturas I/O ideal para escenarios en producción. Los discos "HDD" son mas baratos y son buenos cuando nuestra VM no requiere lecturas a discos frecuentemente.
  • User Name: Nombre de usuario para la maquina virtual.
  • Password: Contraseña de acceso para nuestra maquina virtual.
  • Subscription: Suscripción donde estará nuestra maquina virtual.
  • Resource group: Selecciona o crea un nuevo "Resource group".
  • Location: Región donde se se hará el despliegue de nuestra VM.
    • Nota: Es recomendable elegir la región mas cerca a donde deseamos hacer nuestras pruebas de volumen.























A continuación vamos a elegir el tamaño de nuestra maquina virtual, por efectos de prueba, vamos a elegir el tamaño de "D1 Standard".

Para elegir el tamaño ideal para nuestra maquina virtual, les comparto una tabla donde muestra el requerimiento de hardware para correr nuestras pruebas de volumen:

Visual Studio (IDE) System Requirements

Controller and Agents Hardware Requirements

ConfigurationComponentCPUHDMemory
< 500 virtual usersTest agent2.6 GHz10 GB2 GB
< 1000 virtual usersTest agentDual processor 2.6 GHz10 GB2 GB
N x 1000 virtual usersTest agentScale out to N agents each with Dual 2.6 Ghz10 GB2 GB
< 30 computers in the test environment. This includes agents and servers under test.Test Controller2.6 GHzRead load test repository section
N x 30 computers in the test environment. This includes agents and servers under test.Test ControllerN 2.6 GHz processorsRead load test repository section

Una vez que decidimos el tamaño de nuestra maquina virtual, Azure nos mostrará las opciones de configuración de la VM. Por ahora vamos a elegir la configuración por default y damos clic en "OK"

























Luego damos de nuevo clic en "OK" para crear la maquina virtual



Nota: Podemos descargar nuestro template de esta maquina virtual gracias a ARM, esto nos puede servir si queremos desplegar una copia exacta de esta VM.

Ahora solo esperamos a que Azure despliegue nuestra maquina virtual















Finalizado el despliegue, buscamos nuestro recurso desde el buscador del portal de Azure y damos clic en el recurso.



Luego damos clic en "Connect" para descargar nuestro ".RPD" par conectarnos remotamente.



Ahora abrimos el archivo ".RPD" e ingresamos nuestras credenciales.












Instalar Visual Studio

Ahora procedemos a instalar Visual Studio Enterprise 2015.
Enlace de descarga: Visual Studio Enterprise 2015

Instalamos la opción por "Default" de Visual Studio.


















Finalizada la instalación, podemos iniciar Visual Studio y luego crear un 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

Luego damos "OK"


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, el mismo te agrega el add-on.

Vamos a dar clic en "add recording", 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 graban los parámetros de las peticiones, ya sean "GET", "POST", "PUT", etc.




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. En nuestro caso, vamos a navegar las tres páginas de muestra de una aplicación .NET Core que desplegué en Azure Container Services.

Nota: Si deseas crear un aplicación y desplegarla en Azure Container Services, sigue la siguiente guía:
Despliegue de contenedores Docker a Azure Container Services usando Visual Studio y .NET Core




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 finalicé, podemos limpiar nuestras pruebas. En este caso Visual Studio grabó algunas request de "Bing", para nuestras pruebas no necesitamos esas peticiones.

Ahora podemos ejecutar nuestras pruebas dando clic en "Run Test"


Crear pruebas de volumen
Vamos agregar un archivo de LoadTest 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. Por ahora vamos a seleccionar la opción de "On-Premise Load Test" ya que correremos las pruebas localmente en nuestra VM. Por efectos de prueba, no vamos configurar nada y dejaremos todos los valores por "default"


Damos clic en "Finish" y veremos lo siguiente en Visual Studio:


Ya que agregemos nuestro web test que grabamos anteriormente, elegimos un patrón de carga. Los patrones de carga (Load pattern) sirve para decirle a Visual Studio (específicamente al Test Controller) como es que va a ejecutar las pruebas en función de usuarios.

Por ahora dejamos el patrón de carga por default, con un configuración sencilla. Luego en otras publicaciones, veremos como utilizar otros patrones de carga mas a detalle.

Damos clic derecho en "Constant Load Pattern" para configurar los usuarios concurrente que realizarán la simulación de las pruebas.


Una vez configurado los usuarios, procedemos a ejecutar la prueba de volumen. (en un escenario real, realizamos configuraciones mas complejas y obviamente con miles y miles de usuarios)

Damos clic en "Run Load Test" y veremos como nuestro load test esta corriendo satisfactoriamente

Ya que el test a finalizado, podemos ver un resumen de los resultados de la prueba:

Esta publicación esta enfocada a dar los primeros pasos para crear y ejecutar pruebas de rendimiento y volumen. A su vez aprendimos como crear pruebas automatizadas de nuestra aplicación. En futuras publicaciones veremos como probar una aplicación compleja donde configuraremos nuestras pruebas en escenarios de la vida real.

Siguientes pasos
  • Ejecutar pruebas de volumen con Visual Studio y Team Services

Comments

Popular posts from this blog

Configurar y desplegar una Web API en Azure App Service Environment

Despliegue de contenedores Docker a Azure Web Apps

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

Conectar .NET Web API con Azure API Management

Configurar trigger de Integración Continua en VSTS para ejecutar una tarea de compilación al subir cambios en Source Control