Test de Carga: Web Performance Test con Visual Studio 2010

por Diego Rosso  22. diciembre 2011

 

Pequeña introducción

Continuando con el post anterior vamos a mostrar cómo podemos realizar pruebas de carga sobre nuestras aplicaciones web utilizando Visual Studio 2010 en forma más detallada. La idea principal es ver cómo responde nuestra web ante varias peticiones concurrentes y obtener información sobre los Performance Counters de nuestros servidores que nos servirán de base para detectar problemas en la aplicación o en los servidores donde está alojada.

Que son los Performance Counters?

Los contadores de rendimiento son objetos del sistema operativo que nos muestran información sobre el rendimiento del hardware y software, como por ejemplo la memoria, el disco y los procesos.

Un contador es una medida de un parámetro determinado. Estos se organizan en grupos como por ejemplo los que vienen con el sistema operativo que están comprendidos dentro del objeto System y otros que se instalan como los de SQL Server.

Windows trae una herramienta para acceder a los objetos y sus contadores, la misma se llama Performance Monitor, la cual podemos accederla yendo a Incio --> Ejecutar --> y escribir Perform.

 

 

LoadTest1

 

WebTests

Para realizar nuestras pruebas de stress lo primero que debemos hacer es crear nuestros Webtest, en el cual se definen cuáles son las urls sobre las que van a realizarse las pruebas. Algo muy importante es que deben tener instalada la versión Ultimate del Visual Studio 2010 para poder contar con estos tipos de test (la versión 2008 del Visual Studio ya contaba con esta funcionalidad).

Pasos para crearlo.

1. En el visual Studio vamos a crear un nuevo proyecto del tipo Test, para eso ir a New –> Proyect  --> Test --> Test project y generamos el proyecto base de test.

 

LoadTest2

 

2. Eliminamos la clase que nos agrega por default.

 

LoadTest3

 

3. Agregamos un nuevo test del tipo Web Performance Test, haciendo botón derecho sobre el proyecto –> Add --> Web Performance Test

 

LoadTest4

Al hacer esto se nos abrirá el Web Test Recorder, donde debemos ingresar la dirección web que deseamos testear, en nuestro ejemplo ingresaremos www.google.com.ar y vamos a buscar VEMN y veremos como el Recorder va guardando las urls junto con sus parámetros gets, los cuales están dentro de una carpeta llamada QueryStrings Parameters.

 

LoadTest5

Luego cerraremos esta ventana y vamos a quedarnos a nivel de ejemplo con solo la primer URL y sus parámetros.

 

LoadTest6

 

 

 

Ahora debemos agregar a nuestro proyecto un Load test (test de carga) que será el encargado de simular múltiples peticiones sobre la URL que cargamos en el Webtest. Para esto hacemos botón derecho sobre el proyecto y seleccionamos add-->Load Test y se nos abrirá un wizard con su clásica ventana de bienvenida le damos next para para a configurar el test de carga.

 

LoadTest7

 

Lo primero que nos pide es un nombre para el escenario de test que vamos a crear y nos pide seleccionar que tipo de pausas queremos entre la ejecución de las distintas iteraciones, en el ejemplo lo dejaremos como viene por default y le pasaremos al próximo paso.

 

LoadTest8

En este caso nos pide que seleccionemos el patrón de carga el cual puede ser constante donde le definimos la cantidad de usuarios que debe simular de forma constante durante el transcurso de toda la prueba, o incremental que es el que vamos a elegir nosotros para nuestro ejemplo, los parámetros que nos pide son los siguientes

  • · Start User Count: Cantidad de usuarios que se generaran cuando comience la prueba, en nuestro caso pondremos 20.
  • · Step Duration:  Donde definimos la cantidad de segundos que van a pasar hasta que se agreguen más peticiones sobre la URL que estamos testeando, en nuestro caso 15 segundos.
  • · Step User Count:  Cantidad de usuarios que se agregaran una vez transcurrido el tiempo configurado en Step Duration.
  • · Maximun User Count: Donde definimos la cantidad máxima de usuarios a simular.

 

LoadTest9

 

Luego nos pide el modelo a utilizar por el test de carga, en nuestro caso elegiremos el primer modelo basado a partir del número total de pruebas. Podemos ver aquí un detalle de cada uno de estos modelos.

 

 

LoadTest10

 

En el próximo paso del asistente debemos elegir los webtest que deseamos testear en el presente escenario, en nuestro caso vamos a elegir el único que tenemos pero podríamos seleccionar varios y asignar la distribución para cada uno de estos.

 

LoadTest11

Ahora ingresamos las distintas formas de conexión que deseamos testear y la distribución que queremos darle a cada uno.

 

LoadTest12

 

En el próximo paso seleccionaremos los distintos browsers que queremos que el test de carga simule y la forma en que se distribuirá la carga.

 

LoadTest13

 

Ahora debemos ingresar el nombre del equipo que deseamos supervisar que debería ser donde se encuentra alojado el sitio web que estamos probando, este debe ser un servidor el cual se encuentre en nuestra red o nuestra propia máquina. Si nuestro sitio tiene distintos servidores como por ejemplo uno para la BD y otro para donde se encuentra alojado el sitio, podemos agregar ambos haciendo click en add computer.

Debemos seleccionar los performance counter que deseamos monitorear en cada uno de los equipos.

 

 

 

LoadTest14

En el último paso del Wizard, nos pide la duración del test que en nuestro caso lo vamos a dejar en 10 minutos y también podemos configurar si queremos que nos genere un log cada vez que un test falle, entre otras cosas.

Presionamos sobre Finish y podemos ver como quedo configurado nuestro test de carga.

 

LoadTest15

 

Listo! Estamos en condiciones de poner a correr nuestro test y ver el comportamiento de los performance counters de los diferentes equipos supervisados.

 

LoadTest16

 

En nuestro próximo post vamos a ver cómo generar el código de nuestros Webtest para hacerlos más dinámicos y como pasar parámetros a la URL a través de distintas fuentes como pueden ser base de datos, archivos csv o xmls.

Tags:

.NET | Desarrollo Web | Testing | Visual Studio

Acerca de los Autores

Este es el blog del equipo de VEMN SA 
Presentaremos temas que nos parezcan de interés sobre tecnología .NET, Procesos y Metodologías y todo aquello relacionado con el proceso de desarrollo de Software

Month List

BlogRoll

Download OPML file OPML